Structure and Interpretation of Computer Programs
This course is challenging — don't let week 1 fool you. The key is to keep practicing. Use office hours. Struggle with friends, not alone.
Start by reading the tips below.
- To maximize lecture, listen like you're about to reteach it.
- How to debug black boxes
- How to get a coding job without experience - for internships
Quizzes
After each lecture, try a corresponding quiz to test your understanding of the topic. These quizzes are meant to be difficult.
- Functions, Control QuizSol Script
- Diagrams, Recursion QuizSol Script
- Tree Recursion, Comprehensions QuizSol Script
- Trees QuizSol Script
- OOP, Trees QuizSol Script
- Linked List QuizSol Script
- Scheme QuizSol Script
- Exceptions, Interpreter QuizSol Script
- Iterators, Generators, Streams QuizSol Script
- SQL QuizSol
Cheat Sheets
- Midterm 1: Diagrams, Functions Cheat Sheet
- Midterm 2: Tree, Recursion Cheat Sheet - unfinished
- Orders of Growth Script - notes I never polished
- Recursion PracticeSol
Midterms
Tools
- Custom Python tool for making quick web apps PyTwiddle
- Utility to add doctest support to Scheme UniExpect
Teaching
I TA'ed for this course for the first (and last) time in Fall 2015.
-
Undergraduate Student Instructor - Fall 2015
- Discussions: Tu,Th 2-3, 5-6 p.m. in B56 Hildebrand
- Office Hours: Tu 11 am-12 pm, 1-2 pm in B9 Evans
Explainers
I've made some explainer courses, which contain guided practice. Use these for more in-depth guidance.
- Coding 101: Python for Beginners
- Learn How to Learn Coding Faster: Object-Oriented Programming
- SQL 101: Databases for Beginners
← back to Guide to Undergraduate
Want more tips? Drop your email, and I'll keep you in the loop.