Friday, March 17, 2006

Math For Programmers

Another good post by Steve talks about Math For Programmers. His basic premise is that Math is useful for programmers, and that it is taught wrong in school. He talks of teaching it breadth-first, rather than depth-first. I have to say I agree - I didn't really grok certain areas of Math until I took some courses designed to teach the underlying concepts. You still need the depth-first in certain areas, but that can come later, after you foundation in mathematical concepts is solid. An example is a course in discrete math I took as a requirement for my CS degree. The first book we had to read was How to Read and Do Proofs - a remarkably eye-opening book, that teaches logical thought while showing you basic proof techniques (highly recommended, although I have an older edition). Understanding the two helped me with future courses (like the Theory of Computation), and also with programming, which at its core requires logical thought. I touched on this in a previous post on What Should be in a CS Curriculum. This is similar to the mistaken way in which programming is taught. High school or first-year college students are taught the syntax of a popular language, then do some simple exercises designed to cement the syntax in their head. The best programming course I took way-back-when was the "Theory of Programming Languages", which gave a breadth-first overview of programming techniques (procedural, functional, logic, etc.), and sampled various languages from each domain with programming exercises that showed how each domain lent itself to solving particular problems. Once you know the underlying concepts, picking up whatever the latest, hot language is turns out to be a snap. Here is a good article on the terrible way students are taught programming that says basically the same thing.

Technorati Tags: , ,

No comments: