Schedule

Week Date Lecture Topic Reading Resources
1 Jan 09 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 Jan 16 Parsing Expressions
Evaluating Expressions
Statements and State
Statements versus Expressions
Strict versus Nonstrict
Scope
L-Values
CI 3.5-3.6
CI 6-8
Worksheet: Lvals
See D2L for homework and quiz
chap07_evaluating.zip
3 Jan 23 Control Flow
Functions and Closures
Resolution
Dynamic/Static Scope
Dynamic/Static Types
CI 3.7-3.8
CI 9-11
chap09_control.zip
chap10_functions.zip
chap11_resolving.zip
4 Jan 30 Scala Pragmatics (10 min)
Scala Introduction (45 min)
PS 1-5,7
(PS = Programming in Scala)
Worksheet: Scala
hw4-5-6.zip
5 Feb 06 Lifetime
Closure Implementation
Functions over Lists
Folds
PS8-9
PS13-14
Functional Programming
6 Feb 13 Midterm Exam 5:45PM-7:15PM - -
7 Feb 20 Scala Classes
Methods and Functions
Algebraic Data Types
Option Types
Tail Recursion
PS18 Algebraic Data Types
8 Feb 27 Classes
Inheritance
Dynamic Dispatch and Inheritance
Nested Classes
CI 3.9-3.10
CI 12-13
chap12_classes.zip
chap13_inheritance.zip
9 Mar 05 Undefined Behavior
Safety
Parametric Polymorphism
Subtyping
- Subtyping
Argument Passing
10 Mar 12 Argument Passing
- -
11 Mar 19 Final Exam 5:45PM-8:00PM - -

Slides use reveal.js: