What's New?
Homework 11 is available and due by the end of Friday next week. It asks you to extend your Huey interpreter to support assignment statements. Be sure to read the language specification early — especially the parts marked "new" — and ask any questions you have before diving into code.
Download this zip file to study the code of the BF interpreter in Session 28.
Schedule
| Week | Date | Unit | Topic | Notes & Code | Assignments | |
|---|---|---|---|---|---|---|
| 1 | Tue, 01/20 | A Gentle Introduction to the Study of Languages | 01 notes | Homework 0 | ||
| Thu, 01/22 | An Introduction to Racket | Learning a New Language: Racket | 02 notes & code | Homework 1 | ||
| 2 | Tue, 01/27 | & Functional Programming | More Primitive Racket | 03 notes & code | Homework 2 | |
| Thu, 01/29 | Racket Data Structures | 04 notes & code | ||||
| 3 | Tue, 02/03 | Racket Functions | 05 notes & code | Homework 3 | ||
| Thu, 02/05 | Higher-Order Functions | 06 notes & code | ||||
| 4 | Tue, 02/10 | Thinking Functionally | 07 notes & code | |||
| Thu, 02/12 | Inductive Specifications | Inductive Definitions of Data | 08 notes | Quiz 1 | ||
| 5 | Tue, 02/17 | & Recursive Programs | Defining Recursive Programs | 09 notes & code | Homework 4 | |
| Thu, 02/19 | Recursive Programming Techniques | 10 notes & code | ||||
| 6 | Tue, 02/24 | Recursive Programs and Loops | 11 notes & code | Homework 5 | ||
| Thu, 02/26 | Recursive Programs and Programming Languages | 12 notes & code | ||||
| 7 | Tue, 03/03 | An Application of Recursion: Variable Binding | 13 notes & code | Homework 6 | ||
| Thu, 03/05 | An Application of Recursion: A Small Interpreter | 14 notes & code | ||||
| 8 | Tue, 03/10 | Programming Recursively | 15 notes & code | |||
| Thu, 03/12 | Syntactic Abstraction | Syntactic Abstraction | 16 notes & code | Quiz 2 | ||
| . | Tue, 03/17 | SPRING BREAK | ||||
| Thu, 03/19 | ||||||
| 9 | Tue, 03/24 | Local Variables as Syntactic Abstraction | 17 notes & code | Homework 7 | ||
| Thu, 03/26 | Variable Reference and Scope | 18 notes & code | ||||
| 10 | Tue, 03/31 | Lexical Addresses | 19 notes & code | Homework 8 | ||
| Thu, 04/02 | Lexical Addresses, Part 2 | 20 notes & code | ||||
| 11 | Tue, 04/07 | Creating New Syntax | 21 notes & code | |||
| Thu, 04/09 | Data Abstraction | Data Abstraction and Variety | 22 notes & code | Quiz 3 | ||
| 12 | Tue, 04/14 | The Finite Function ADT | 23 notes & code | Homework 9 | ||
| Thu, 04/16 | Programs with State | 24 notes & code | ||||
| 13 | Tue, 04/21 | Objects as Closures | 25 notes & code | Code review | ||
| Thu, 04/23 | Building a Language Interpreter | 26 notes & code | Homework 10 | |||
| 14 | Tue, 04/28 | no class — work on homework | ||||
| Thu, 04/30 | Bringing It All Together | Optimizing a Simple Interpreter | 28 notes & code | Homework 11 | ||
| 15 | Tue, 05/05 | The Next Big Thing? | 29 notes & code | |||
| Thu, 05/07 | Back to the Future | 30 notes & code | ||||
| F | Thu, 05/14 | 1:00 - 2:50 p.m. | Final Exam | |||