5 ms·
Well, after 6 years of professional software engineering after finishing my BS in CS, the only things on that list that I've came anywhere close to using are th
by king_magic 15y ago
Well, after 6 years of professional software engineering after finishing my BS in CS, the only things on that list that I've came anywhere close to using are the natural join and Demorgan's laws.
I think this is a pretty silly post, to be honest. CS covers so much, and everytime I see a list of "things you should know", I have to resist the urge to roll my eyes and ignore it. But then I read it, and inevitably roll my eyes anyway.
- mmaunder 15y agoAt two jobs now I've had a conversation with talented comp sci grads and we all agreed 99% of programming is drudgery and the 1% that requires you to turn off your music and sit in dead silence is rare and still not as challenging as comp sci syllabuses (syllabi?) would suggest. An unfortunate side-effect is that many people who could have become highly productive mid-level programmers are scared off because they don't know advanced math.
- king_magic 15y agoI disagree. Programming is math. Highly advanced math, in fact. It's just a different type of math. And the 11 equations in the OP's article just barely touches on what CS is about. There is far more to it than that.
- fragsworth 15y agoYou can disagree all you want but it is pretty much objective fact that in practice, especially in the world of business, 99% of programming is not advanced at all. CS, which is not just programming, may be advanced, but you do not see the advanced concepts emerging very often in day-to-day programming.
- tikhonj 15y agoHowever, the real question is whether there's no advanced stuff because of the domain or because of the people who work there. If enough people working at a company don't like advanced math, it means that they will not use it and if you use it, your code will be harder for them to maintain, so you don't use it either. I suspect if everybody had a better grasp of these ideas, you would see them used more often.
- rhizome 15y agoThere are a ton of CS-trained programmers who will include advanced stuff whether the domain requires it or not. It's probably hard to have student loans hanging over your head and not have a reason to use most of the education they paid for.
- slowpoke 15y agoNo. Programming is logic, and logic is a superset of math. What you need to make good programs isn't some obscure, arcane language that the few who actually understand it (mathematicians) assert to be the universal answer to everything, yet refuse to make it more accessible (when it could be), what you need is logical thinking and the ability to think in abstractions. Yes, studying math will teach you this, because - as mentioned - math is a subset of logic. But studying math by far is not the only way to gain these abilities, or to obtain a deeper understanding of CS problems. This opinion alone will get (and has got) me branded as a heretic amongst many people, and that alone proves how deeply we are stuck in this tar-pit. If we want to get more people to be interested in and eventually deeply understand CS, we need to get rid of the math barrier. Math is a tool used by computer scientists, and not the fundamental basis of our field. Limiting yourself to a single tool is bad, and you don't need abstract algebra or calculus to understand this.
- jl6 15y agoDo you have an example of mathematics that could be made more accessible but hasn't been?
- slowpoke 15y agoA more recent example I've come across are n-dimensional spaces. I realized that most people have problems to make sense of the concept behind that because they've been stuck in thinking mathematically. I think of points in an n-dimensional space as objects holding n different types of information, which is a practical approach, and has lit a candle for some other people I explained it to this way as well. For example, images are often stored as 4 dimensional structures, with the dimensions representing height, width, depth and color value. Every point in that structure is a pixel of the image. You can easily expand this to any number of dimensions, and it still makes sense - you're just adding information (eg, add a fifth dimension for time, and you've got yourself a sequence of images - a simple video). My beef with the way math is often approached is that on the one hand, it's asserted that math is the universal solution to all problems - including practical ones - but on the other hand, more often than not math is removed so far from reality that it's nearly impossible to make any practical use of it.
- CamperBob 15y agoFor many years, computers sucked at math. In many cases the job of a programmer was not to make the computer do complicated math, but to come up with clever ways to get out of doing complicated math. That's not really true anymore, now that so many technologies from gaming to communications rely on concepts and algorithms from higher mathematics. While I'm skeptical about the importance of the particular equations on the author's list, I don't think it's reasonable any longer for software devs to plead ignorance (your humble correspondent included).
- karlzt 15y agoProgramming is a branch of math.
- kleiba 15y agoFair enough, but note that the list doesn't say "true software engineers should know" but "true computer science geeks should know".
- king_magic 15y agoMy response to this is that I am a "true computer science geek". Why isn't P=NP (or P!=NP) on that list? Why not more about set theory? Why not proof by induction? How about lambda calculus? There is far more to CS than what that list implies. I realize that it's not supposed to be all-encompassing, but seriously, saying it's "something all CS geeks should know", in my mind is unfair - I have little understanding of most of the OP's article, but still consider myself to have a very solid understanding of CS, based on my level of education. I don't need to know most of the things in the article. There are plenty of other things in CS, however, that I do need to know. I think putting together lists like this does a disservice to people just about to enter the field. You can't possible break down CS into a list of 11 equations.
- munin 15y agoy-combinator is on there representing lambda calculus at least ...
- king_magic 15y agoGood point, I must have missed that one.
- kleiba 15y agoYeah, you're right. "10 best..." lists are usually B.S. anyway.
- abscondment 15y agoI assume you overlooked O(n). You've probably used Bayes' theorem and the binomial coefficient, if only indirectly. But I tend to agree with you: many of these are skewed by the author's perspective on what should be considered foundational. Someone doing webdev will not ever calculate eigenvectors. Someone doing machine learning will not be able to avoid them.
- docgnome 15y agoI think it's important in this situations to not confuse Computer Science with what we, as "software engineers" or "applications developers" or "programmers", do for 99.9% of our day. For most of us, what we do is as much Computer Science as the use of a protractor is geometry.