I've talked a bit about instructional design and educational principles in this blog in the past; here's a concrete example of how we try to apply those ideas. As well as teaching the basics of the Bash shell and Python, we also (try to) teach people that every programming system must have:
*.dat
. In Python, they're lists and dictionaries.cp
command.for
loops in the shell and Python) or implicitly (like wc *.dat
).if
statements in Python or file-matching patterns in the shell. (We're not going to try to teach people how to do conditionals in the shell.)These ideas are connected: groups of things and ways to repeat commands tie together naturally, as do creating functions and combining them. Those connections:
In fact, connections matter as much as facts. What distinguishes experts from novices is not just how many facts the former know, but the density of connections between those facts. The more densely connected someone's knowledge is, the eaiser (and faster) it is for them to bring the next set of facts they need to solve a problem into working memory.
Another example of how we try to tie ideas together (which we haven't used in courses yet, but should) is the essay on counting things. It works through successively more complex scenarios, and uses the shell and SQL as well as Python, to give learners context for complexity. Our biggest goal in the next major revision of the course material is to do more of this: switching to the IPython Notebook will be cool, but putting a sound pedagogical basis under the course will make a much bigger difference.
Originally posted 2012-08-14 by Greg Wilson in Education.
comments powered by Disqus