Too long for a tweet; not really worthy of a blog post. Here goes anyway…
I just walked past a computer science classroom, where the instructor was drawing an elaborate set of diagrams—presumably representing subroutines and whatnot.
Students were dutifully taking notes.
I thought quickly to myself, How effective can this possibly be? Don’t you have to learn programming by solving problems?
And then I thought to myself, a bit more slowly, And how is mathematics any different?


I often find analogies related to programming useful when thinking about mathematics education.
1. The two domains of knowledge have enormous overlap.
2. Programming is a very new discipline, relatively speaking, to mathematics.
3. Amateur programmers are far more numerous than amateur mathematicians.
See this post: http://davidwees.com/content/toolkit-model-math-instruction for an example of how I adapted how I learned to program to a system for learning mathematics.
Actually, I think we need to do much more flow mapping in the mathematics classroom. It is part of the problem solving process. Programmers often do this to some extent before tackling a big programming task; it provides a roadmap for the code. While my students tend to just jump into a multi-step problem without backing up and getting the big picture.