SMOLNET PORTAL home about changes
# Math For Programmers

Another good post by [Steve][1] talks about [Math For
Programmers][2].  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][3] - 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][4]. 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][5] that says basically the same thing.

[1]: http://steve-yegge.blogspot.com
[2]: http://steve-yegge.blogspot.com/2006/03/math-for-programmers.html
[3]: http://www.amazon.com/gp/product/0471680583
[4]: gopher://gopher.unixlore.net/0/articles/historical-blog-posts/20060311-what-should-be-in-a-cs-curriculum.txt
[5]: https://web.archive.org/web/20061205191851/http://www.trollope.org/scheme.html
.
Response: text/plain
Original URLgopher://gopher.unixlore.net/0/articles/historical-blog-p...
Content-Typetext/plain; charset=utf-8