Schedule

Week Date Lecture Topic Reading Resources
1 Apr 01 CI: Introduction
CI: A Map of the Territory
Statements versus Expressions
Scala Introduction
CI 1.1,2
PS 1-5,7
(CI = Crafting Interpreters)
(PS = Programming in Scala)
Worksheet: Scala and Prerequisites
scala-hw.zip
2 Apr 8 Tail Recursion
Functions over Lists
Folds
PS8-9
PS13-14
Worksheet: Functional Programming
3 Apr 15 Closures in Other Languages
Closure Implementation
Scala Classes
Methods and Functions
PS8 (again) Worksheet: Algebraic Data Types
4 Apr 22 Option Types
Algebraic Data Types
Parametric Polymorphism
Subtyping
PS18,19 Worksheet: Subtyping
5 Apr 29 Undefined Behavior
Safety
Dynamic/Static Types
CI: Scanning
CI: ASTs
CI 1-3.4
CI 4-5
(CI = Crafting Interpreters)
Worksheet: Lox
See the resources tab for software to install
See D2L for homework and quiz
chap04_scanning.zip
chap06_parsing.zip
6 May 06 Midterm Exam 5:45PM-7:15PM - -
7 May 13 Grammars
Scope
L-Values
CI: Parsing Expressions
CI: Evaluating Expressions
CI: Statements and State
CI 3.5-3.6
CI 6-8
Worksheet: Lvals
See D2L for homework and quiz
chap07_evaluating.zip
chap08_statements.zip
8 May 18 Strict versus Nonstrict
Argument Passing
Dynamic/Static Scope
CI: Control Flow
CI: Functions and Closures
CI: Resolution
CI 3.7-3.8
CI 9-11
Worksheet: Argument Passing
chap09_control.zip
chap10_functions.zip
chap11_resolving.zip
9 May 27 Dynamic Dispatch and Inheritance
Nested Classes
C++ and Vtables
CI: Classes
CI: Inheritance
CI 3.9-3.10
CI 12-13
chap12_classes.zip
chap13_inheritance.zip
10 Jun 03 Review
Javascript (Bonus: Not on exam)
Javascript OOP (Bonus: Not on exam)
- -
11 Jun 10 Final Exam 5:45PM-8:00PM - -

Slides use reveal.js: