How Should I Teach a Basic Programming Course? 452
riverman writes "I have been 'provisioned' at the school where I work to teach a new Computer Science/Programming course. I'm supposed to be teaching everything from the very-very basics (i.e. where that myspace thing is in your computer monitor, and how it knows who your friends are) to the easy-advanced (i.e. PHP classes and Python/Google App Engine). I'm an experienced programmer, but I'm not sure where to start — I could easily assume that my students know something basic they don't. Are there any resources on the internet that could help me find a solid curriculum? What are your suggestions?"
I'm sure many of us have gone through intro-level programming courses of some sort; what are some things your teacher or professor did that worked well, and what didn't work at all?
I remember... (Score:4, Funny)
...my first class in programming: the teacher wrote "x=x+1" on the blackboard, and my reaction was "Huh? That is unsolvable!"
Re:You need to narrow the scope (Score:5, Funny)
Re:You need to narrow the scope (Score:1, Funny)
109 If you already know BASIC goto 120
Teach them basic hygene. (Score:4, Funny)
Re:I remember... (Score:3, Funny)
Re:Task based learning (Score:5, Funny)
(Considering I'm almost 30, I program computers for a good living, and I've never used it, I'm thinking: it ain't.)
Considering I'm almost 40, I program computers for a living and have to use it all the time, I am thinking you are a some kind of web developer.
Re:Task based learning (Score:2, Funny)
One thing I have seen students get hung up on is:
It looks like an equality statement that couldn't possibly be correct. Just telling them it's "an assignment statement" doesn't seem to penetrate.
have you considered switching to Haskell?
Re:You need to narrow the scope (Score:3, Funny)
Assign George Boole as outside reading.
Give them a little bit of overview as to how the machine actually works, and maybe later down the track they'll think before they cascade ELSEIF's or load stack manipulation inside tight loops. Make them sensitive to the tools they use, not just the media (the languages) they're working with.
You can cover ones and zeroes, registers, memory and addresses a little easier, maybe even shorten the process by a couple of days if you give them something that relates abstracts to the physical world. Tie things together a bit.