# Schedule

Week Date Lecture Topic Reading Resources
1 Sep 04 Introduction
Scanning
ASTs
CI 1-3.4
CI 4-5
(CI = Crafting Interpreters)
Worksheet: Lox and Prerequisites
See the resources tab for software to install
See D2L for homework and quiz
`chap04_scanning.zip`
`chap06_parsing.zip`
2 Sep 11 Parsing Expressions
Evaluating Expressions
Statements and State
Statements versus Expressions
Strict versus Nonstrict
L-Values
Scope
CI 3.5-3.6
CI 6-8
Worksheet: Lvals
See D2L for homework and quiz
`chap07_evaluating.zip`
`chap08_statements.zip`
3 Sep 18 Dynamic/Static Types
Scala Introduction
PS 1-5,7
(PS = Programming in Scala)
Worksheet: Scala
`scala-hw.zip`
4 Sep 25 Functions over Lists
Tail Recursion
Folds
PS8-9
PS13-14
Worksheet: Functional Programming
5 Oct 02 Control Flow
Functions and Closures
Resolution
Closures
Dynamic/Static Scope
CI 3.7-3.8
CI 9-11
`chap09_control.zip`
`chap10_functions.zip`
`chap11_resolving.zip`
6 Oct 09 Midterm Exam 5:45PM-7:15PM - -
7 Oct 16 Closure Implementation
Scala Classes
Methods and Functions
Option Types
Algebraic Data Types
PS18 Worksheet: Algebraic Data Types
8 Oct 23 Dynamic Dispatch and Inheritance
More Inheritance
Nested Classes
Classes
Inheritance
CI 3.9-3.10
CI 12-13
`chap12_classes.zip`
`chap13_inheritance.zip`
9 Oct 30 Undefined Behavior
Safety
Parametric Polymorphism
Subtyping
- Worksheet: Subtyping
Worksheet: Argument Passing
10 Nov 06 Argument Passing
- -
11 Nov 13 Final Exam 5:45PM-8:00PM - -

Slides use reveal.js:
• 'q' to exit slides
• 'z' to print slides (one per page)
• Other keycodes built in to reveal. Use '?' to list them. For example:
• space moves to the next slide
• cursor keys to navigate through slides
• up and down are useful!
• 'ESC' for slide overview and navigate quickly