This is my attempt at Berkeley's self-paced CS61AS course based on SICP and using Racket (for most of the course). This includes the homework and projects from the self-paced version as well as Brian Harvey's lectures and notes from his final semester at Berkeley.
Progress | Lesson | Topic (Lecture Video) | Reading | Notes | HW |
---|---|---|---|---|---|
X | 0-1 | Introduction to Racket and CS61AS | HW | ||
X | 0-2 | More Practice with Racket | SS Ch. 3 SS Ch. 4 SS Ch. 5 SS Ch. 6 |
HW | |
X | 0-3 | Recursion and Racket | SS Ch. 11 SS Ch. 12 SS Ch. 13 SS Ch. 14 |
HW | |
X | 1 | Functional Programming (1, 2) | Ch. 1 Intro 1.1 |
Notes | HW |
. | 2 | Higher-order Procedures (3, 4) UI (Kay) (5) |
1.3 UI (Kay) |
Notes | HW |
. | Project 1: Chatterbot | ||||
. | 3 | UI (Kay) (6) Recursion & Iteration (7, 8) |
1.2 | Notes | HW |
. | 4 | Data Abstraction (9) Sequences (10) Calculator (11) |
Ch. 2 Intro 2.1 2.2.1 |
Notes | HW |
. | Project 2: Turtle Graphics | ||||
. | 5 | Hierarchical Data (12, 13) Interpreter (14) |
2.2.2-3 2.3.1 2.3.3 SS Ch. 18 |
Notes | HW |
. | 6 | Generic Operators (16, 17) | 2.4-2.5.2 | Notes | HW |
. | 7 | Object-oriented Programming (18, 19, 20) | OOP Above the Line | Notes | HW |
. | 8 | Assignment & State (21) Environments (22, 23) |
OOP Below the Line Ch. 3 Intro 3.1 3.2 Environment Diagrams |
Notes | HW |
. | Project 3: Adventure Game | ||||
. | 9 | Mutable Data (24, 25) Vectors (26) |
3.3.1-3 | Notes | HW |
. | 10 | Streams (33, 34) | 3.5.1-3 3.5.5 |
Notes | HW |
. | 11 | Metacircular Evaluator (36, 37) | Ch. 4 Intro 4.1.1-6 |
Notes | HW |
. | 12 | Analyzing Evaluator (40) Lazy Evaluator (41) Therac (35) |
4.1.7 4.2 Therac |
Notes Notes |
HW |
. | Mini Python Intro | HW | |||
. | Project 4: Schython | ||||
. | 13 | Logic Programming (42, 43) | 4.4.1-3 | Notes | HW |
. | 14 | Client-server Programming (30) Concurrency (31, 32) MapReduce (38, 39) |
3.4 | Notes MR Pt. 1 MR Pt. 2 |
HW |
cd homework
racket -tm grader.rkt -- tests/hwX-tests.rkt hwX.rkt <procedure name>
Note: Replace "hwX-tests.rkt" and "hwX.rkt" with the actual filenames. Only include the procedure name if you want to check an individual procedure; otherwise the grader will check the whole program.