| 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]
|
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 |
Methods and Functions [pdf]
Folds [pdf]
Examples: Map, Filter, and Fold [pdf]
|
Code Snippets
|
Language Interpreter
|
Ch 3.4.7, 5
|
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]
More Functional Folds [pdf]
|
Option Types
Tail Recursion
Code Snippets
|
Option Types
Tail Recursion
|
Ch 6
|
Ch 8.10
|
Homework 4 (due Oct 13)
|
| 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)
Final Exam Study Guide (due Nov 17)
|
| 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]
Nested Classes [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 |
Surprising Design Decisions: Introduction to Javascript [pdf]
Delegation-based OOP [pdf]
Java Concurrency [pdf]
|
Code Snippets
|
JavaScript
|
-
|
Ch 17, 18, 20
|
Homework 8 (due Nov 10)
Final Exam Study Guide (due Nov 17)
|
| 10 |
Wed |
Nov 11 |
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.