Structure and Interpretation of Computer Programs

Fall 2021, Nanjing University


News

Course Information

Course Schedule

Week Date Lectures Assignments
4 Sep 22 (Wed) Xinyu Feng: Course Introduction
Slides Code
Sep 26 (Sun) TAs: Lab Introduction Lab 00: Set up a python environment
Tutorials Code (Due Oct 3)
5 Sep 27 (Mon) Xinyu Feng: Names and Functions & Control
Slides (Names and Functions) Slides (Control) Code
Sep 29 (Wed) Lab 01: Variables & Functions, Control
Tutorials Code (Due Oct 10)
Hw 01: Variables & Functions, Control
Tutorials Code (Due Oct 10)
6 National Day Holiday
7 Oct 11 (Mon) Xinyu Feng: Env Diagrams & Higher-order Functions
Slides (Env) Slides (Higher-order)
TAs: Review of lab00~hw01
Slides
Lab 02: Higher-order Functions
Tutorials Code (Due Oct 14)
Hw 02: Higher-order Functions
Tutorials Code (Due Oct 17)
Oct 13 (Wed) Xinyu Feng: Recursion
Slides
Proj 01: The Game of Hog
Tutorials Code (Due Nov 5)
8 Oct 18 (Mon) Xinyu Feng: Recursion (Examples) & Containers
Slides (Recursion Examples) Slides (Containers)
TAs: Review of lab02 and hw02
Slides
Lab 03: Recursion and Tree Recursion
Tutorials Code (Due Oct 21)
Hw 03: Recursion and Tree Recursion
Tutorials Code (Due Oct 24)
Oct 20 (Wed) Xinyu Feng: Data Abstractions
Slides
9 Oct 25 (Mon) Xinyu Feng: Trees
Slides
(Optional) Hog Strategy Contest
Tutorials Code Results (Due Nov 14)
TAs: Review of lab03 and hw03
Slides Slides(suppl)
Lab 04: Data Abstraction, Lists, and Trees
Tutorials Code (Due Oct 28)
Hw 04: Data Abstraction, Lists, and Trees
Tutorials Code (Due Nov 5)
Oct 27 (Wed) Xinyu Feng: Mutability
Slides
10 Nov 1 (Mon) Xinyu Feng: Mutability (Cont.)
Slides
TAs: Review of midterm Proj 02: Autocorrected Typing Software
Tutorials Code (Due Nov 14)
Nov 3 (Wed) Xinyu Feng: Iterators & Lazy Evaluation
Slides (Iterators) Slides (Lazy Evaluation) Code
Lab 05: Nonlocal, Iterators, and Generators
Tutorials Code (Due Nov 7)
Hw 05: Nonlocal, Iterators, and Generators
Tutorials Code (Due Nov 9)
11 Nov 8 (Mon) Xinyu Feng: Review of midterm
Slides
TAs: Review of lab04, hw04 and midterm
Slides Slides(suppl)
Nov 10 (Wed) Midterm Exam
12 Nov 15 (Mon) Yue Li: Object Oriented Programming
Slides Code
Proj 03: Ants vs. Some Bees
Tutorials Code (Due Dec 05)
TAs: Comments on Hog Contest and Midterm Exam
Hog Results Slides (midterm)
Hw 06: OOP and Inheritance
Tutorials Code (Due Nov 21)
Nov 17 (Wed) Yue Li: Inheritance
Slides Code
13 Nov 22 (Mon) Yue Li: Special Methods
Slides Code (Dog) Code (Ratio)
Lab 07: Special Method, Linked List and Tree
Tutorials Code (Due Nov 25)
Hw 07: Special Method, Linked List and Tree
Tutorials Code (Due Nov 28)
Nov 24 (Wed) Yue Li: Linked List and Tree
Slides Code
14 Nov 29 (Mon) Yue Li: Scheme
Slides Code
TAs: Review of lab07 and hw07
Slides (updated)
Lab 08: Scheme
Tutorials Code (Due Dec 02)
Hw 08: Scheme
Tutorials Code (Due Dec 05)
Dec 01 (Wed) Yue Li: Scheme (More)
Slides Code
15 Dec 06 (Mon) Yue Li: Interpreters
Slides
Proj 04: Scheme Interpreter
Tutorials Code (Due Dec 26 at 11:59 pm)
TAs: Review of lab08 and hw08
Slides
Lab 09: Interpreter
Tutorials Code (Due Dec 09)
Hw 09: Scheme List, Tail Recursion and Macro
Tutorials Code (Due Dec 12)
Dec 08 (Wed) Yue Li: Macros
Slides Code1 Code2
16 Dec 13 (Mon) Yue Li: Stream
Slides Code
Lab 10: Stream
Tutorials Code (Due Dec 16)
Dec 15 (Wed) Yue Li: SQL I
Slides
Hw 10: SQL I
Tutorials Code (Due Dec 19)
17 Dec 20 (Mon) Yue Li: SQL II
Slides
TAs: Just For Fun Topic: Streams
Slides
Lab 11: SQL II
Tutorials Code (Due Dec 26)
Dec 22 (Wed) Yue Li: Final Review

Reference Materials