Language
This semester, CS51 is being taught in PLT Scheme. It runs on all platforms, and includes a great development environment: DrScheme.- PLT Scheme Homepage - the homepage for the PLT Scheme project, including a link to download DrScheme.
Books
There are two books for the course, both of which are freely available online (linked below). If you want a paper copy as well, they are also at the COOP.- How to Design Programs: An Introduction to Computing and Programming, by Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, and Shriram Krishnamurthi. This is the book we'll be following most closely.
- Structure and Interpretation of Computer Programs, by Harold Abelson and Gerald Jay Sussman, with Julie Sussman. This book is a classic, and is a great place to look if you want more info.
Assignments
See the Course Policies page for details about assignment dues dates, etc.Topics
These are the topics that the course will cover. The details and the exact order are still in flux, and will appear in the schedule below as they get decided.- Functional programming
- Recursion, iteration
- Higher-order functions
- Algebraic data types (lists, trees, etc.)
- Modularity
- Abstract data types
- Interfaces, implementations
- Information hiding/encapsulation
- Parameterization vs. inheritance
- Software engineering
- Unit tests
- Contracts
- Performance evaluation
- Refactoring
- Models of computation
- Substitution model of evaluation
- Box-and-pointer
- Asymptotic complexity
- Environment model
- Key data structures
- Lists, trees, stacks, queues, sets, dictionaries, graphs
- DFS, BFS, iterative deepening
- Lists, trees, stacks, queues, sets, dictionaries, graphs
- Data analysis
- Least squares
- Classification/clustering
- Prediction
Schedule
Feb 6Pset 0 due
Feb 13Pset 1 due
Feb 17P1 Chk 1 due
Feb 20Pset 2 due
Feb 24P1 Chk 2 due
Feb 27Pset 2 due
Mar 3P1 Chk 3 due
Mar 6Pset 4 due
Mar 13Project 1 due
Mar 17Pset 5 due (midterm review)
Mar 19Midterm!
Apr 7Pset 6 due
Apr 7P2 Part A due
Apr 14Pset 7 due
Apr 17P2 Part B due
Apr 21Pset 8 due
Apr 24P2 Part C due
Apr 28Pset 9 due
May 1Project 2 due
May 19Final exam
