Page 4 of the Shaw-Hanselman interview transcript discusses direct instruction.
http://s3.amazonaws.com/hanselminutes/hanselminutes_0407.pdf
Out of curiosity did your SO learn Python and if so what resources worked particularly well?
I tried out a few Ruby classes just for the heck of it, and with Ruby, somehow things fell into place.
How can that be? I remember learning about functions such as f(x) = ax + b in the fifth grade if I am not mistaken and learning about functions in programming was extremely natural. I studied programming in high school taken from the very basic and nobody had troubles with how functions worked. It was so math like that it was simply a non-issue. I am really interested to understand what the problem was and how did she figure it out eventually.
> And his way of teaching boolean logic is to memorize truth tables
But isn't Boolean algebra based on exactly that? Isn't this the pillar field covered by the mathematical logic, how can it be wrong?
From the book:
> Learning logic has to come after you do some memorization. I want you to do this exercise for an entire week. (http://learnpythonthehardway.org/book/ex27.html)
Why would you need to memorize that not true == false? All of the others can be deduced by simple reasoning. One example:
not (True and False)
True and False is False
not (False) is True
Instead of teaching people this (basic algebra), he recommends spending a week memorizing stupid tables?The same thing with spending first ten chapters having people write print statements with convoluted string interpolations. String interpolation is a hard concept to grasp for beginners. Unpacking variables before learning about objects, introducing what he calls "commands" like raw_input(), before even mentioning functions. I could go on and on.
If you're just going to remember truth tables, throw those names to the wind. You might as well call them P and Q. But we don't, because OR and AND and XOR make sense.
It looks like he introduces these truth tables (sec 27), where, to be fair, he does say this:
> The terms (and, or, not) actually work the way you expect them to, just like in English.
And then he asks you to practice memorizing the tables until you know them intuitively.
That seems like an odd thing to single out. I took an "Intro to Logic" course years before I did any CS courses and truth tables were very much used. I believe that they helped ease students not accustomed to thinking precisely about logical propositions into that mode of thought. Why rely on students' intuitions about ambiguous natural language constructs when we can be explicit and also provide an early lesson on the precision required by machine languages?