6 ms·
I completely agree, but at the same time, it's a barrier to entry that I think might be unnecessary. Some college freshman haven't taken calculus, and SICP woul
by spacemanaki 15y ago
I completely agree, but at the same time, it's a barrier to entry that I think might be unnecessary. Some college freshman haven't taken calculus, and SICP would seem a bit daunting at times to those students, I imagine. Unfortunately, I think HtDP goes too far; it's too dumbed down.
- thaumaturgy 15y ago> Some college freshman haven't taken calculus... Yeah, and that's a serious problem, too -- and one that I'm guilty of! ...that is, if I'd ever gone to college. :-( I am very much not encouraged by a "race to the bottom" when it comes to education. If calculus is too difficult for the student, then perhaps the student should not consider a career in programming. I say that without any malice whatsoever; I'm not sympathetic enough to be a counselor, and I wouldn't expect counseling courses to simply disregard the importance of counseling so that I could have a job in the field. To bring all this back to a more practical argument: I am annoyed daily by the great and heaping piles of inefficiencies and bloats and bugs and weaknesses of software. I have to, on a regular basis, explain to clients that they should throw out their old computer and get a new one, so that they can continue to do what is, to them, exactly the same thing they were doing with their old one. That can be a rather challenging thing to explain to some people. I find it difficult to believe that this ongoing pattern of abuse of resources is not at least partly related to a greater and greater ignorance of the fundamentals of programming.
- barrkel 15y agoI really don't see what connection calculus has with the vast majority of programming. Calculus, and algebraic manipulation in general, has next to no relationship with programming. I really don't see any reason why someone who has difficulty with calculus would have similar difficulties with programming; for all I know, they missed out on some fundamentals because they were sick in school, or they fell out with their maths teacher, or god knows what. The only time I've ever used calculus in a program in 20+ years of programming is in physics simulation in some toy game apps; and that was just to derive some formulas that plugged in. They could have easily been solved today with some googling (other people probably solved the same problems) or questions on forums. (FWIW, mathematics has always been my best and favourite subject in school, aptitude tests put me in 99th percentile, etc. IOW, I have no personal grudge against maths. I just see very little connection to programming outside niche areas, and even then they usually barely scrape the surface of the related mathematical area.) PS: I think your specific bugbears are not related to mathematics either. Bugs: best approached with proper programming style like invariants and defensive programming, along with testing. The quality of software that people actually use can be measured from feedback, bug fix rates, etc. A bigger issue with bugs is usually economics; it's frequently more important to get things into people's hands quickly and cheaply than it is to have higher quality and compromise the other two. Bloat and sluggishness have two cures: measurement and big-O. I'd put both in engineering rather than maths. Understanding big-O, either explicitly or intuitively, is absolutely essential, though it's all blatantly obvious when you spend some time thinking about it.
- bb75 15y agoIf you weren't exposed to calculus in college, would you have even known what to google for when you were doing your physics simulation for your toy game apps? My guess is, no. The point of education is not to cram and remember everything you're exposed to-it is to be able to look up and reference stuff more quickly than someone who doesn't have a clue.
- derleth 15y agoThe only thing special about calculus is that it is where practically all universities have decided to start teaching students to create real proofs with the level of formalism expected in other courses. This is likely due to the fact the world needed more engineers than programmers or mathematicians when this stuff got hashed out.
- deleted 15y ago[deleted]
- danenania 15y agoLet's be realistic here: there are plenty of mathematical wizards who can't code themselves out of a paper bag, and there are plenty of computer scientists who can create brilliant, elegant, and perfectly optimized algorithms but couldn't create a complete, functioning, useful piece of software to save their lives. There is some programmatic thinking in mathematics and there is some mathematical thinking in programming, but they are very distinct disciplines and skills. It's easy for academically-oriented people to say "oh Python is just glue, web development is just calling apis, etc. etc." But this so-called 'gluing together' of libraries and apis actually presents seriously tricky algorithmic challenges all the time, just at a higher level. The reality is that seasoned CS phds often aren't any better at solving these problems effectively than a smart and creative 19 year old with a few years of python behind him/her. I don't say this to diminish the type of thinking SICP teaches--on the contrary, I think it's extremely important and cuts to the core of good programming. BUT I do think it's a mistake to assume that you can always better train yourself for this type of thinking by doing problem sets and theorizing versus ramming your head against messy real world problems with whatever Turing-complete language is at hand.