bored on the bus.. a collection of teaching-related notes that I think worked out this year
Post created: 2018-06-23
Ask them to draw a picture of the starting state and the final state.
- Reason: Separate figuring out "what to do" from "how to do it"
- Make sure they can:
- relate variables to the picture
- do a toy example by hand, entirely justified by the picture
- They may need guiding for intermediate states
- empirically, going backwards easier than going forwards
- simplify the problem, get them to figure out what they need
- reaction pathways, really..
- especially useful for: C0VM, malloc, collect
Come up with systematic approaches and encourage their use.
- Reason: If people are stuck on a problem, either 1. they don't have the right tool or 2. they're not applying the tool correctly. This addresses the former, helping the latter should be easy.
- e.g. 122 style proofs encourage you
- write down what assumptions you're starting from
- write down what you want to prove
- write down any useful equivalences
- e.g. 150 structural induction problems generally solvable by
- reverse step
- invent lemma (almost never a good idea to mention this one...)
- e.g. tracing 150 CPS
- substitute every continuation with s0 s1 ... and you find that they look the same
- like built-in error checking, patterns will guide your work
Make sure they understand what they're required to do for credit.
- Credit: 122 internal TA training
- Reason: Amazingly, people do not know what they are required to do for credit.
- I've had people who were stuck on optional things for hours.. without realizing it was optional.
Always end with "explain in your own words back to me" before leaving someone at OH.
- Reason: Most people don't take good notes as they're getting help. Make sure they know what to do after you go and have a logical sequence of steps in mind.
- Plus they feel like they learned something this way.
- Bonus points if you can make it sound like they were there all along, just missing tiny steps.
- Need to build up their confidence wherever possible to prevent the "frozen in OH" where they stare into space until a TA gets there. They should keep trying.
Learn to draw analogies to Python.
- Reason: Most people "know" Python, more likely to pay attention, concepts often transfer
- range/generators: lazy programming, concurrency
- list comprehensions: map + filter, powerful!! readable!!
- Fun stuff to make them feel special and all
- C0VM: dis.dis
Functional programming in general
- Don't tell computer what to do, tell computer what you want
- No side-effects = no jumping around a codebase to figure out how a function works
- Particularly well suited to transforming data
- Two-strike rule for RTFM responses, after which leave their Piazza post alone
- Distinguish between people there for homework help, and people there to learn
- 251 reductions: draw a table. List the variables of problem A on the left, and problem B on the right. Then you just need to connect arrows.
i'm free! time to stop for now