Hacker News new | ask | show | jobs
by spacemanaki 5433 days 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.
1 comments

> 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.

I 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.

The 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.