Schedule

Week Days Date Lecture Topic / Slides Lecture Notes Worksheets Reading (CPL) Reading (PS) Assignment
1 Tue Mar 31 Overview [pdf]
Scala Introduction [pdf]
Scala Pragmatics [pdf]
Scala 3 Book
Scala
Java and C
Scala
Ch 1 Ch 1,2,4 Homework 1
(due Apr 06)
Midterm Study Guide
(due May 04)
2 Tue Apr 07 Contracts [pdf]
Pattern Matching [pdf]
Scala Classes [pdf]
Algebraic Data Types [pdf]
Statements and Expressions [pdf]
Algebraic Data Types
Expressions
Algebraic Data Types Ch 9.1,9.2 Ch 3,13,19,24 Homework 2
(due Apr 13)
Midterm Study Guide
(due May 04)
3 Tue Apr 14 Strict and Nonstrict Evaluation [pdf]
Functions on Lists [pdf]
Methods and Functions [pdf]
Folds [pdf]
Functional Programming
Functional Programming
Ch 4 Ch 5,7 Homework 3
(due Apr 20)
Midterm Study Guide
(due May 04)
4 Tue Apr 21 Examples: Map, Filter, and Fold [pdf]
More Functional Folds [pdf]
Formal Semantics [pdf]
- Language Interpreter
Ch 3.4.7, 5.6 Ch 9, 14, 15 Homework 4
(due Apr 27)
Midterm Study Guide
(due May 04)
5 Tue Apr 28 Tail Recursion [pdf]
Static/Dynamic Types [pdf]
Undefined Behavior [pdf]
Tail Recursion
Static and Dynamic Types
Tail Recursion
Ch 6 Ch 8.10 Midterm Study Guide
(due May 04)
6 Tue May 05 Midterm Exam
Option Types [pdf]
L-Values [pdf]
Argument Passing [pdf]
Option Types
Option Types
Argument Passing
Ch 13 - Homework 5
(due May 11)
7 Tue May 12 Undefined Behavior (Review) [pdf]
Safety [pdf]
Scope and Lifetime [pdf]
Closures [pdf]
Undefined Behavior
Scope and Pointers
Closures
Ch 7 Ch 8 Homework 6
(due May 18)
Final Exam Study Guide
(due Jun 08)
8 Tue May 19 Nested Classes [pdf]
Dynamic Dispatch and Inheritance [pdf]
Delegation-based OOP [pdf]
OOP
Ch 10, 12 Ch 10, 11, 20 Homework 7
(due May 25)
Final Exam Study Guide
(due Jun 08)
9 Tue May 26 Parametric Polymorphism [pdf]
Subtyping [pdf]
Surprising Design Decisions [pdf]
Subtyping
JavaScript
Ch 6.4 Ch 17,18 Homework 8
(due Jun 01)
Final Exam Study Guide
(due Jun 08)
10 Tue Jun 02 Exam Review [pdf]
- - - Final Exam Study Guide
(due Jun 08)
11 Tue Jun 09 Final Exam


This course requires worksheets to be completed each week. The purpose is to provide support structure for your study and to provide better coverage of routine introductory exercises prior to completing more challenging homework assignments. You are welcome to ask questions about the worksheets on Discord.

Weekly checklist: