General Teaching Advice
When planning, don't think about what you're going to do. Think about what they're going to do.
Metaphors and Stories for Teaching Programming:
A program is like a recipe. There's two parts: a list of ingredients and a list of instructions. Think of code as the instructions and data as the ingredients.
Also, to extend the metaphor, think about doubling a recipe: the instructions don't change even though the data are different this time.
Computer memory is like a warehouse with lots of boxes. Each box has something inside (the data) and it also has a label (the variable name).
The command line as Zork. You are "in" a room (a directory) and can either act on things in the room (commands) or move to a new room (cd). It's very important that you know where you are! Learn how to read the command line, and do an "ls" (or "dir") to look around.
- Have one volunteer be a runner to remind people when it's 10 minutes until the next break. (This worked really well.)
- Make sure all of the projectors have Mac adaptors
- Handouts with all of the code that people need to type
- Tell people at the beginning that the slides are online
- Have a volunteer leader, make sure they are distributed evenly
- Advertise that the Friday night setup is required, send notes out 1 week ahead of time, so people can get started ahead of time
- USB keys and/or DVDs with the big stuff like XCode
- Ask the venue about bike policy (can participants bring bikes inside?) and communicate that to participants ahead of time.
- Get a good night's sleep before the class, it is important to be well rested and fresh when teaching or TA'ing.
- Start with live coding - watch and type along, don't even use slides. make sure students & teachers irb prompts display line numbers, so we can say go to line 32
- Go into IRB to practice basic concepts first, don't discuss what agile and a variable is in the abstract right away. Learning by doing first and talking later worked better.
- At the very beginning, show a designed version of app so people can recognize it as finished product like other web sites they see: screenshots are on Sarah Allen's site.
- Have TAs wear different badge colors so they can recognize each other.
- Discuss rubyisms where appropriate. use code to show elegance & readability of ruby vs other languages: each vs (for i; i = "lame"; i ++)
- Ask students to discuss what they learned, what they thought of it, at end of the day. As beginning of wrap-up session or just before it.