alex gaynor's blago-blog

Dynamic and Static Programming Languages and Teaching

Posted September 29th, 2010.

Lately I've seen the sentiment, "Why do all teachers need to prepare their own lesson plans" in a few different places, and it strikes me as representative of a particular mindset about education and teaching. To me, it seems like a fundamental question about pedagogical philosophy that's akin to the great programming debate between which is better dynamic or static languages (although it might be more apt to say compiled versus interpreted).

Static languages usually require an up front investment in time (compilation), in return for which you get less work at runtime, various things about your program are strictly defined: this function takes arguments of these types, and that's that. This is similar to a way of teaching, a lesson plan is prepared, and then it's taught, the flow of the class itself should stay in line with the lesson plan. In comparison dynamic languages usually require minimal compilation steps, and push more of the work to the runtime, and various things about the program are impossible to provide statically, you can't know what types a function takes. This is akin to a teaching style that reacts to what goes on in a classroom.

In the programming world which of these is preferable is a giant debate, and I won't even attempt to answer it here (the answer is both though, if you're curious), however I think in the realm of teaching the answer is clear: dynamic teaching is always preferable. One of the single most important components necessary for learning to occur is an active interest from a student. It's impossible for this to exist in an environment where the most important thing is keeping to the predefined, static, schedule. By responding to the way the class is going, the interests of the students, actual learning, as opposed to rote memorization (to be forgotten as soon as the test is over) can occur. We can see examples of this in everyday classes, the language arts teacher who misses a class on prepositions to discuss why word usage often doesn't match the dictionary definition, the math teacher who skips a day of geometry to discuss practical uses for theorem proving, the ethics professor whose lesson on Greek philosophers gets lost to a debate on the social contract. Especially in higher grade levels, there's little material that can't be learned with, "a dollar fifty in late charges at the public library", the value of the debate, discussion, and analysis to make it useful, however, is invaluable, and it's the job of an educator, most of all, to shepherd it.

That's not to say that this style of teaching requires no preparation, in fact it probably requires more preparation (oops, there goes the metaphor), thinking up different directions a class could go, useful comparisons and analogies, finding ways it relates to the students lives all take incredible amounts of time and thought, and are often different for any given class, inhibiting the diligent teachers ability to simply reuse some other teacher's material, as many seem to propose. Indeed, attempting to better tailor courses to effective teach the students taking them is far more valuable than attempting to maximize the throughput we can get out of a lesson.

This entry was tagged with education, programming, programming-languages.
blog comments powered by Disqus