-
Notifications
You must be signed in to change notification settings - Fork 16
Secondary Lecture Topics
The most important secondary topics which I work into lectures are those about Human Learning. I phrase them all as "To learn, you should...", and I accumulate them on my list board as the course progresses.
Speaking about these explicitly helps students take charge of their own learning and rely on instructors as crutches much less.
The concepts which I cover are the following:
- Get related knowledge in advance
- Expect to exert effort
- Try before being taught
- Review when memory is stale
- Scar in moderation
- Retrieve rather than re-expose
- Interleave topics
- Elaborate rather than repeat
- Study concept over implementation
- Use short feedback loops
Agile practices are also important. We don't just want to give people a knowledge of Rails, but we want to train productive developers for an Agile world.
The practices/principles which I cover are the following:
- Iterate with rigorous data collection and reflection
- Estimating is hard
- Hammer-user vs. shiny-object
- All code becomes legacy code
- Debugging is everywhere
- Data-first vs. behavior-first
- Start small
- Style matters early (sadly)
- Consider technical debt
Git and GitHub come up throughout the course, but some of the concepts are quite challenging, so I dedicate explicit blocks of time to them on the schedule. I also cover the commands in chunks, and review the challenging parts a few times. Here are the six chunks that I explictly use in class:
- init, add, commit, push
- fork, clone, pull, .gitignore
- pull, branch, merge, stash
- branch, pull request, merge
- Common git workflows (e.g. Gitflow)
- reset, rebase, filter-branch (i.e. How to recover from git messes)
Check out the curriculum spreadsheet to see where they fall. Their placement is largely chosen due to the assignments and the new challenges that they'll need to face on certain evenings.