37 ms·
When did computer science theory get so hard?
- bob331 5y agoWho cares. I’m earning fat bucks and I know none of this
- kazinator 5y agoWhen did security get so hard? It used to be that you could assume that the supervisor mode of your CPU was safe from the user mode. Ah, the good old days.
- dekhn 5y agoI took only one CS class in college- taught by David Huffman. It was a wonderful class, most of it beyond me (I was a bio major who liked hacking) and I ultimately failed. So, IMHO it was definitely hard math (sphere packing, prefix-free codes) back in the 90s and I'm sure before that. Amusingly, that failure so drove me to learn computer science that I'm now an expert, but I often get stuff like order calculations wrong because they don't correspond well with actual computer performance.
- cweill 5y agoSightly OT: the best Math for Computer Science book/course I ever read is the one from MIT https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-042j-mathematics-for-computer-science-fall-2010/ https://ocw.mit.edu/courses/electrical-engineering-and-compu... Prof. Tom Leighton is an incredible teacher who teaches the intuition before the theory.
- hprotagonist 5y agoConsidering the founders intellectual merits, I’m going to go out on a limb and say that CS theory has been hard since day 0.
- arethuza 5y agoOut of interest, who do you regard as the founders of CS theory - I'd probably go for Church and Turing, but I can see arguments for others as well.
- tgv 5y agoMight want to add Post, Chomsky and Kleene, too.
- loraxclient 5y agoTangential but may be of interest: a cool book (compilation?) that somewhat addresses this topic is ‘Ideas That Created the Future’ edited by Harry R. Lewis [0]. [0] https://mitpress.mit.edu/books/ideas-created-future https://mitpress.mit.edu/books/ideas-created-future
- dc-programmer 5y agoWorking through it now - reading the Laws of Thought by George Boole was a spiritual experience for me. The connection between natural language, logic, and math finally made sense to me. Before I had a hard time understanding the saliency of things like Analytic Philosophy (what does language have to do with truth?) or why the work of someone like Chomsky would be so important to computer scientists. Boole wasn't the only person at time to work on a project to reduce logic to solvable equations (clearly that time in history was ripe for this work, and also Leibniz had laid some of the spiritual groundwork, himself inspired by Ramon Llull and Confucian texts) but the way he wrote about it really resonated with me. The other surprising thing to me was that it didn't really resemble modern algebra at all. As a former math student I think it's easy to create a mental model of math history where when new fields are created they resemble the modern incarnation. But when you actually look at the primary founding texts its clear the ideas and notation are pretty unrefined at least compared to today's standards.
- varjag 5y agoShannon, von Neumann
- criddell 5y ago
- tialaramex 5y agoThe nice thing about an open frontier is that it's really easy to be an innovator. If you put more than a passing thought into almost anything in the vast Terra Incognita you're faced with, you are now the world expert. Today Grace Hopper's "compiler" wouldn't merit the name, it's just a linker loader, what's the big deal? Well the big deal was nobody had actually programmed the computer to help them program the computer before. A huge sub-discipline of computer science simply didn't exist. Consider another discipline, metrology. Pioneers in metrology weren't doing advanced physics like you would see in a metrology lab today, they just had the insight that it sure is easier if everybody agrees how much corn this is, so they used prototypes, which is pretty much the simplest strategy but it's already a huge improvement on nothing at all. It took until this century for the last prototype (the Kilogram) to be replaced. On the route there those prototypes got a lot more sophisticated, and we learned a lot more about what it actually means to have a certain amount of a thing, so metrology got much harder.
- tech_tuna 5y agoSince day -1
- Jensson 5y agoComputer science is an extremely young field. The parts of the field that number theorists could dabble in quickly got fleshed out and got hard as they could apply the millennia of accumulated number theorist knowledge, the parts more related to how to work with computers (such as algorithms or program structure) is still young today. Edit: Note that the frontier of the field will always be extremely hard no matter what time you live in. The reason is that things will be poorly understood and written, there will be no good textbooks or explanations, you have to trudge through all that often without anyone to help you understand things or correct you. It took centuries for calculus to become as easy as it is today.
- nemo44x 5y agoRight - novel thought is always difficult. It’s looks easy and obvious looking back but that’s because, as you’ve pointed out, effective teaching exists for it that draws obvious connections.
- Frost1x 5y agoIt's interesting how in education and academics this is well known and understood, however the second you transition out of education/academia to the real world in industry, it's as if all this is lost/unknown or the burden is simply ignored to create a pressure on everyone doing the work. Businesses and business leaders often think novel work should be simple because that's what you trained for. You studied computer science, maybe even have your Ph.D. and therefor should be able to anything and everything possible using computers quickly and efficiently. There's a large trench between what people expect and what reality is here.
- amusedcyclist 5y agoThe author is actually talking about the opposite situation, where CS theory departments now have a lot more number theorists (and other mathematicians) dabbling in CS theory, which has lead to use of far more complex tools than before. (Fourier analysis of Boolean functions is one example I'm familiar with)
- kevmo314 5y ago> I tend to think this is an outlier- for the most part, CS theory back in the 1970's did not hard math. CS theory always had hard math. Software engineering didn't (and still mostly doesn't) but also in the 1970's software didn't exist so you could literally do anything and it would become the standard if it was pushed hard enough. It's not like there's an intrinsic reason TCP packets are the way they are now, it's largely an arbitrary choice that we standardized on.
- throwvirtever 5y ago> [I]n the 1970's software didn't exist There actually was software in the 1970s, and earlier.
- titzer 5y ago> It's not like there's an intrinsic reason TCP packets are the way they are now, it's largely an arbitrary choice that we standardized on. IP and TCP were very carefully designed and were not much like the networking standards of the time. It wasn't an arbitrary choice any more than designing a rocket engine is an "arbitrary choice".
- dahart 5y agoParent wasn’t taking away from the intention of design; they were talking about what designs got canonized by accident. This happens everywhere: very good and very intentional designs become the de facto standard for arbitrary reasons, often just being first. Electrons being negative, Leibniz notation, musical notation and the four piece band, binary digital circuits, hamburgers, the car, and even the structure of TCP packets, are all things that got overwhelmingly popular despite the presence of good and intentional alternatives, they are largely arbitrary choices for standardization.
- bbulkow 5y agoDefinition of arbitrary: 'based on random choice or personal whim, rather than any reason or system.' (Google) Being first is not arbitrary. It is hard to achieve, and valuable. It is a reason. There were networking systems before TCP and alongside TCP, TCP was clearly superior for a large number of reasons. Given that everyone on hacker news's livelihood stems from the awesome of TCP (not an over statement), I propose a bit more respect.
- drewg123 5y agoAs far as I'm concerned, it was always hard. I took 2 theory classes (undergrad and grad) in the early 90s. I dreaded the proofs, and I hated the classes, and could barely stay awake for them. I'd much rather stay up all night coding a project for another class than do one proof for a theory class. Ugh.
- grumple 5y agoThe background color on that site makes it very painful to read. Author, if you're on HN, please make this something more normal.
- jodrellblank 5y ago"Please don't complain about website formatting, back-button breakage, and similar annoyances. They're too common to be interesting. Exception: when the author is present. Then friendly feedback might be helpful." - https://news.ycombinator.com/newsguidelines.html https://news.ycombinator.com/newsguidelines.html
- pcthrowaway 5y agoAlright, but discussing how a UI is hostile to a user trying to understand the content surely falls within the HN guidelines. Chrome doesn't have a reader mode does it? I want to read the article, but it causes actual eye pain. This isn't an annoyance like back-button breakage. It's a design issue with a very easy fix that makes it impossible to read this for (at least) some people
- nickkell 5y agoNormally I'd agree with you, but that website is a particularly horrendous shade of green. I had to put on sunglasses to read the article
- analog31 5y agoI don't know if this is an analogy, but the first thing that came to mind was: When did jazz improvisation get so hard? The answer is the Bebop era. And it could just come down to, players got sick of playing the easy stuff, so they started making up hard stuff.
- evancoop 5y agoI might argue that computer science theory is not fundamentally harder, so much as the available tooling is far more sophisticated. Not so many years ago, the function for mean and median needed to be written rather than accessed within native libraries. Now, complex neural network architectures are available to all. Alas, simply gaining that access does not in any imply deeper understanding of what is occurring under the hood. Perhaps the higher technical demands is simply a byproduct of the more complex "off-the-shelf" solutions and the need to do more than simply pip install, point, and click?
- mjburgess 5y agoI'd say its more the opposite. The lack of much "academic & public understanding" of neural networks comes down to the severe lack of statistical modelling and empirical theory-building knowledge in the compu-sci community. NNs are not a hard thing to understand, it's just regression -- there's parameteric and non-parametric. And NNs are, just like any generic approximator algorithm, a largely non-parametric method. The lack of understanding of even what a parametric method is, in CS, is very telling: NB. it has nothing to do with the final model having parameters. It is whether the method assumes a parametrised distribution of its input data. Non-parameteric methods are well-understood, they aren't magic, and they aren't very hard to characterise. Rather, it is exactly in those areas where compu-sci people are most qualified that the mathematics gets the hardest. Much of the low-hanging fruit has been picked (Turing, et al.) and today comes the hard part of the thorniest problems.
- CrazyStat 5y ago> The lack of understanding of even what a parametric method is, in CS, is very telling: NB. it has nothing to do with the final model having parameters. It is whether the method assumes a parametrised distribution of its input data. Having done my PhD work on (Bayesian) nonparametric methods I'm struggling to parse this. What is the input data? Just the explanatory (independent) variables? Both explanatory and response (dependent) variables? Are we talking about a joint or conditional parametric distribution? Many parametric methods (e.g. OLS regression) make no assumption about the distribution of the explanatory variables. Many "nonparametric" methods do make parametric assumptions about the conditional distribution of the response variable(s) conditioned on the explanatory variable(s) (e.g. GP regression). I don't see how this works as a classification for whether a method is "nonparametric" or not.
- srvmshr 5y agoComputational theory was always hard. What is different now is that we see a lot of confluence to practical applications, and people who haven't exclusively trained for it find it hard to parse. It was previously in the realm of math - now there is some drift towards modern software engineering.
- throwaway2016a 5y agoAnecdotally: I went to a college in Boston in early 2000s for my CS degree and it was undergoing extra ABET accreditation to put it in line with the engineering programs. The prior year has mostly algebra based course work but due to the change: all our math (including physics) was switch to calculus based just like the other engineering programs. And the theory courses got more in depth. So if I had to guess based on my personal experience I'd say added rigor is possibly due to the field becoming less like a free-for-all and more like engineering. In other words, knowing why something works vs just experimenting until you stumble upon something that works. I've always appreciated a B.Sc. or M.Sc. in Computer Science as the academically rigorous cousins of Associate degrees, B.A., and bootcamps. You can get a job with both types of education but one understands the theory behind things far better. Edit: Not sure if it is like this globally so just as an FYI... B.Sc. and M.Sc. are Bachelor and Master of "science" degrees where as B.A. is in the Liberal Arts. In the US you have CS degrees in both. The B.A. is more well rounded but the B.Sc. is more rigorous in theory and math.
- sumtechguy 5y agoWhat degree you get kind of depends on which college you went to and when. The difference in my school between the eng track and the arts track was basically 2 classes between the two programs. Both programs were run by the same professors. If I had got the degree 10 years earlier I would not have been able to get it and only could have gone math with a study in CS. As is, I think my CS program was 6 hours away from an additional math degree. Which makes sense as the math programs typically were supersets of the CS degree for a long time. I do not know about the time after but from what I heard they simplified the program a bit and went more algerbra/java like you said.
- lanstin 5y agoThe original article is not about these things. It is about the difficulty of the rigor increasing. From some sort of easy encoding of computation into integer math to doing Fourier analysis over booleans. From maths you can grok in a few hours to the horrendously complex stuff in number theory that takes days and you aren’t really sure you get it. In neither case is it a matter of theory vs practice. It is that the mechanics used by theorists is a lot more difficult than a few decades ago. Actual software development becoming like engineering, which seems counter to my experience, is a different issue. In my experience software veers away from engineering because as soon as something is standardized enough to not be novel, it’s completely captured by a library or service or something and is a solved problem. The new software is always doing something new. And there are no lessons learned, except, ironically, at the deep theory level.
- fortran77 5y agoIt was really easy when I got my graduate degree in 1984. Don't know if I'd be able to do it today. (And yes, I'm serious). My undergraduate degree was in math, and I switch to CS for graduate work because math got too hard.
- nostrebored 5y agoTalking about theory as a single subdomain of CS doesn’t really make sense anymore. It’s a wide and varied field. I have friends who work mainly in automata and complexity and have worked with people focused exclusively on a single class of algorithms. They’re remarkably different in difficulty. My friend in complexity is clearly a mathematician. My friend who is an expert in random algorithms is doing a lot more throwing darts at a dartboard with enough theory chops to make his papers interesting. I studied CS theory and modeling in university and my degree was effectively a math degree. Without the math and analysis piece I don’t think the theory ever would’ve been intuitive.
- kaymanb 5y agoI think it's interesting that we seem to equate CS Theory being hard with involving sophisticated math. Are there any examples of concepts in Theory that are considered hard, but not because of their dependence on math? The article seems to focus on complexity theory, but I couldn't think of any from that sub-field. My first thought is the Paxos algorithm for distributed consensus [1], which definitely has a reputation of being difficult to understand, and fits under the Theory umbrella. [1] https://en.m.wikipedia.org/wiki/Paxos_(computer_science) https://en.m.wikipedia.org/wiki/Paxos_(computer_science)
- lanstin 5y agoYeah I think a model of computation set in Minkowski space time is novel compared to classic theory of computation, which is sort of set in Plato land.
- titanomachy 5y agoI wonder if Paxos is actually considered hard to understand by academic computer scientists, or if it just happens to be harder than most of the algorithms that practicing software engineers regularly try to understand. Disclaimer: I'm a software engineer who doesn't understand Paxos.
- mindcrime 5y agoI'm not sure what the answer to this question is in general, but from my perspective (was a CS major in the mid 1990's) there were definitely parts of this that were hard (by my standards) by then. All of the computational complexity stuff (P vs NP, etc.) feels akin to black magic to me. Especially so when you get into that whole "complexity zoo" thing where there are 10 bazillion different complexity classes. To this day I have no idea what most of them mean and have to visit the corresponding Wikipedia page and read up on any ones that I encounter.
- wespiser_2018 5y agoI'd say it was "hard" all along. The question of computability is challenging in that it requires a good deal of formalism and theory to get anywhere near problems we deal with every day. Take NP-Complete for instance. We know a problem is NP-Complete if we can do a Karp Reduction from another NP-Complete problem and also prove the problem is in NP. Sure, that's fine. But how was the first NP-Complete bootstrapped? Well, using automata and generalized turning machine languages! You can use NP-Complete as a concept at work, and never touch the original proof using a non-determistic turning machine language. That's at least one course worth of material to teach in order to get students to understand automata. To me: that's a complex approach to a simple question: what can we compute? We have to invent a series of automata with increasing complexity and corresponding theories/proofs. I don't think it's bad, it's just the nature of the problem!
- Ar-Curunir 5y agoThe point is that one catch up to state-of-the-art-in-the-90s in CS theory with basically one upper-division course. That is not a lot from from a mathematical perspective. Till a few years ago, undergrads could contribute to CS theory research, whereas in math only senior grad students can do that. What the article is saying is that CS theory is slowly moving towards the latter model, as more work is done and the low-hanging fruits are picked off.
- deleted 5y ago[deleted]
- jeffreyrogers 5y agoOn the math page that he linked he has some ideas: > 1) When you get older math got harder. > 2) When math got more abstract it got harder. Blame Grothendieck. > 3) When math stopped being tied to the real work it got harder. Blame Hardy. > 4) Math has always been hard. We NOW understand some of the older math better so it seems easy to us, but it wasn't at the time. > 5) With the web and more people working in math, new results come out faster so its harder to keep up. > 6) All fields of math have a period of time when they are easy, at the beginning, and then as the low-hanging fruit gets picked it gets harder and harder. So if a NEW branch was started it might initially be easy. Counterthought- even a new branch might be hard now since it can draw on so much prior math. Also, the low hanging fruit may be picked rather quickly. Personally I think it is mostly 2 and 3. And a lot of it has to do with how math is communicated. The very abstract way that math textbooks use to communicate is not how most mathematicians think when solving problems. A lot of things I struggled to learn from books became much more understandable once someone gave me the little insight I needed to make sense of it in conversation.
- mcguire 5y agoI don't think 6 has applied to math for hundreds of years, but I do see it as having applied to CS relatively recently.
- bumby 5y ago>A lot of things I struggled to learn from books became much more understandable once someone gave me the little insight I needed to make sense of it in conversation. Don't just leave us hanging :-) Care to elaborate on what helped gain that insight?
- ericbarrett 5y agoI completely agree regarding books. I've been refreshing my university undergrad-level math, and older textbooks have been much more accessible than most written after (roughly) the 1990s, even though the subjects haven't changed at all—this isn't avant-garde stuff. Seems no field is exempt from the modern "churn for churn's sake" phenomenon.
- actually_a_dog 5y agoMention of Fourier transforms over fields other than the complex numbers brought this up to mind: https://en.wikipedia.org/wiki/Sch%C3%B6nhage%E2%80%93Strassen_algorithm https://en.wikipedia.org/wiki/Sch%C3%B6nhage%E2%80%93Strasse... TL;DR: It's a way to multiply n-digit integers in time O(n log n * log log n) time, developed in the early 70s, using DFTs in the ring Z mod 2^k + 1, with a slightly clever choice of k. Since the runtime was so tantalizingly close to O(n log n), it fueled speculation that O(n log n) was the optimal runtime. This bound was finally proven in 2019: https://hal.archives-ouvertes.fr/hal-02070778v2 https://hal.archives-ouvertes.fr/hal-02070778v2
- Otternonsenz 5y agoAs someone whose childlike wonder piques at the technology I grew up with, I've always tried to delve into any parts of knowledge I could get my head around; I read textbooks/papers/articles until I come across something I don't get, then drill down into that until I get it. However, because my education/training has not been part of an institution, I do feel like I am on the outside of understanding when it comes to wrangling the lightning inside the rocks we work on day in/day out. I've been both DevOps (helpdesk jockey to admin) and dabbled in frontend work, but mostly fell into those positions and grew into them. Couldn't tell you how to work with Kubernetes or Docker, but have been following discourse on here enough to understand how they are useful for big stuff. I used PuTTY back in HS to work on a backend internship, but have no clue why it works. I have made at least 2 programs still running internally at a big real estate tech company, but cannot deploy my own apps on my own computer. Is this disconnect with deeper Computer Science theory just my issue as a visual and kinetic learner? Is the understanding of modern technology only suitably captured in a classroom setting that I do not have access or time for?
- winternett 5y agoDocker is basically a way to segment/emulate control, configuration, and access to cloud host infrastructure on an individual basis because in shared hosting environments, you can't change settings or they can possibly compromise security and impact everyone else hosted on the platform negatively. It adds a bunch of software on top of other software and requires massive hardware and power consumption to drive it overall, and still is not particularly more reliable nor secure than the old method of hosting your own site, and it drives consumerism and environmental pollution probably just as bad if not worse than before here and in many other parts of the country, but it generally feels less guilty because you don't have to see the factories and plants -- they're hidden overseas and in rural areas that you don't go to. No one wants to admit that things were probably better when we ran our own infrastructure and bought hosting at fixed pricing, because they're busy making money off of the new and overly-complex "utility priced" cloud hosting solution model to hosting web sites and apps, and because the learning curve for their competition is now more steep, reducing the threat to their profit pipelines... There, I said it. These days people have a huge problem with getting to the point in speech and in writing. If you put the premise up front, it allows people to get it an move on, or to argue with you online more easily without reading the elaboration below it. There is usually a reason why software and hardware is made, to solve a specific problem, or to solve a group of problems, yet modern-day engineers don't see the importance of putting the detail about the problem(s) that their tools solve foreword FIRST AND FOREMOST before gushing about how to use their tools. A lot of the time they don't put the premise first because it's an ugly solution, or in reality simply useless, or based on being costly, and usually just too damn overly-complicated to really work consistently and accurately. We also have marketers, managers, and sales people working to promote ideas without any real understanding about the reason why those things were created. Many people simply don't care as long as their share values increase or if they make a paycheck, so there's even more of a barrier to meaningful answers to why in the he|| things exist, to determining real meaningful fixes to modern-day problems, and to why certain solutions are different than other things used to solve already over-complicated IT problems. Life is better when it's more simple, simplifying things frees up time to innovate beyond just ideas that are geared towards making profit. The world would be a far better place if we began a shift towards bringing technology back down to earth, and if everyone would stop chasing the annual "tech leader supreme monopolistic empire douchebag" awards. :|
- dehrmann 5y agoWell that's a background color I haven't seen since 1999. It even messes with my eyes when I click back. To reader mode, with you.
- black_13 5y agoWhen the middle class disappeared. When the professions in the middle tier went by by everyone flocked to that as a career now the great winnowing occurrs.
- doofin 5y agoAs math is becoming harder,we also have better tool to tackle such complexity.For example,it's probably easier to use a theorem prover which supports homotopy type theory to study algebraic topology and synthetic homotopy theory.However,the problem is that we have to understand homotopy type theory first.
- mgaunard 5y agoComputer Science got harder once you realized it existed outside of undergraduate studies.
- ProfHewitt 5y agoComputer science theory didn't get harder. Instead, education became weaker :-( See following link for foundations of computer Science: https://www.youtube.com/watch?v=AJP1VL7shiI https://www.youtube.com/watch?v=AJP1VL7shiI
- chobytes 5y agoProbably reflects one's interests more than anything. If you want some easy results you try to work in younger parts of the fields. Or if youre really lucky and a little clever, some of your own novel thoughts might go somewhere interesting.