Schedule

Week Days Date Lecture Topic / Slides Lecture Notes Worksheets Reading (CPL) Reading (PS) Assignment
1 Wed Sep 09 Overview [pdf]
Scala Introduction [pdf]
Scala Pragmatics [pdf]
Scala 3 Book
Scala
Code Snippets
Java and C
Scala
Ch 1 Ch 1,2,4 Homework 1
(due Sep 15)
Midterm Study Guide
(due Oct 06)
2 Wed Sep 16 Contracts [pdf]
Pattern Matching [pdf]
Scala Classes [pdf]
Algebraic Data Types [pdf]
Formal Semantics [pdf]
Algebraic Data Types
Expressions
Code Snippets
Algebraic Data Types Ch 9.1,9.2 Ch 3,13,19,24 Homework 2
(due Sep 22)
Midterm Study Guide
(due Oct 06)
3 Wed Sep 23 Formal Semantics (Continued) [pdf]
Statements and Expressions [pdf]
Strict and Nonstrict Evaluation [pdf]
Functions on Lists [pdf]
Methods and Functions [pdf]
Folds [pdf]
Functional Programming
Code Snippets
Functional Programming
Ch 4 Ch 5,7 Homework 3
(due Sep 29)
Midterm Study Guide
(due Oct 06)
4 Wed Sep 30 Examples: Map, Filter, and Fold [pdf]
More Functional Folds [pdf]
Code Snippets
Language Interpreter
Ch 3.4.7, 5.6 Ch 9, 14, 15 Homework 4
(due Oct 13)
Midterm Study Guide
(due Oct 06)
5 Wed Oct 07 Midterm Exam
Option Types [pdf]
Tail Recursion [pdf]
Option Types
Tail Recursion
Code Snippets
Tail Recursion
Option Types
Ch 6 Ch 8.10 Midterm Study Guide
(due Oct 06)
6 Wed Oct 14 Static/Dynamic Types [pdf]
Undefined Behavior [pdf]
L-Values [pdf]
Argument Passing [pdf]
Closures [pdf]
Static and Dynamic Types
Undefined Behavior
Code Snippets
Argument Passing
Closures
Ch 6, Ch 13 - Homework 5
(due Oct 20)
7 Wed Oct 21 Safety [pdf]
Scope and Lifetime [pdf]
Compile-Time Safety in Rust [pdf]
- Scope and Pointers
Ch 7 Ch 8 Homework 6
(due Oct 27)
Final Exam Study Guide
(due Nov 17)
8 Wed Oct 28 Dynamic Dispatch and Inheritance [pdf]
Parametric Polymorphism [pdf]
Subtyping [pdf]
Code Snippets
OOP
Subtyping
Ch 6.4, 10, 12 Ch 6, 10, 11 Homework 7
(due Nov 03)
Final Exam Study Guide
(due Nov 17)
9 Wed Nov 04 Nested Classes [pdf]
Surprising Design Decisions: Introduction to Javascript [pdf]
Delegation-based OOP [pdf]
Code Snippets
JavaScript
- Ch 17, 18, 20 Homework 8
(due Nov 10)
Final Exam Study Guide
(due Nov 17)
10 Wed Nov 11 Java Concurrency [pdf]
Exam Review [pdf]
- - - Final Exam Study Guide
(due Nov 17)
11 Wed Nov 18 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: