3 ms·
Programming != Math. Logic is important, but that is mostly orthogonal to any course of math instruction I've ever been exposed to. Now, if your goal is to be
by douche 12y ago
Programming != Math.
Logic is important, but that is mostly orthogonal to any course of math instruction I've ever been exposed to. Now, if your goal is to be an academic computer scientist, then yeah, you do have to know some advanced math, just because the frontiers of research are so far out there. If you're aspiring to be a software engineer/developer, then chances are, outside of a few specialties, you may go weeks without using any math that an elementary-schooler couldn't perform.
A developer who is overly mathematically-inclined is actually a small red flag for me, because I have seen too many people who are very good at math and seem to understand theory, but absolutely cannot write code.
Anecdotally, I have seen much better results from developers who have experience in hands-on trades like mechanics, plumbing, carpentry, etc. There's an element of visualizing the entire system and how the components interact that seems to map over well to programming.
- sergiosgc 12y agoThat is not the gist of the text. The text states that programming involves reasoning using abstract entities, and Mathematics, while not used directly in programming, is an excellent training ground for the ability to reason in an abstract realm. I happen to agree a lot with the text. The best programmers, and most definitely the best system designers I know, excel at abstracting concepts.
- jbergens 12y agoBut he doesn't really talk about how much math he thinks a CS course should have. I personally think a few weeks might be a good idea. Many months of math takes time away from other CS parts. He writes that maths helps you get better at abstract thinking, which I agree with, but he don't compare to other CS areas. For example, if studying compilers or data strcutures help you think abstract then we can perhaps have a compiler/data structure course instead of a math course. This would help students learn both abstract thinking and something directly CS related. I think we can all agree that having only math for four years would make great abstract thinkers but probably very bad developers.
- sjolsen 12y ago>Programming != Math. Programming also isn't computer science. >Logic is important, but that is mostly orthogonal to any course of math instruction I've ever been exposed to. I think that's the issue the author intends to address: computer scientists not having been exposed to a mathematical treatment of logic. >you may go weeks without using any math that an elementary-schooler couldn't perform If by "math" you mean "arithmetic and basic algebra," yes. If in "math" you include logic, induction, abstract algebra, graph theory, combinatorics, etc., then you're using math every time you write any code at all, whether it's ensuring you don't write any cyclic dependencies, making sure you correctly handle all return values, or making sure an algorithm doesn't require quadratic time or worse before you implement it. You need math if you want to know that your custom comparators won't cause a sort routine to blow up, to recognize certain possible sources of bugs in unsafe languages, and most of all to recognize and assess the validity of potential optimizations. I mean, one can program with just a basic grasp of boolean logic and high-school algebra, but they'll have a hell of a time of it.
- douche 12y agoI suppose that my negative reaction is mostly because, generally, calls for more math in learning a subject results in additional semesters of calculus or differential equations, which would be of doubtful use in my experience developing software. > then you're using math every time you write any code at all, whether it's ensuring you don't write any cyclic dependencies, making sure you correctly handle all return values, or making sure an algorithm doesn't require quadratic time or worse before you implement it. You need math if you want to know that your custom comparators won't cause a sort routine to blow up, to recognize certain possible sources of bugs in unsafe languages, and most of all to recognize and assess the validity of potential optimizations. For the most part, I view this as simple bookkeeping. Probably I've been doing this for too long and have just internalized it.
- riskable 12y agoIt would be interesting to see a university degree where the running theme is, "We don't teach computer science we teach programming!"