Schedule
| Week | Days | Date | Lecture Topic / Slides | Lecture Notes | Worksheets | Reading (CPL) | Reading (PS) | Assignment |
|---|---|---|---|---|---|---|---|---|
| 1 | Tue | Jan 06 |
Overview [pdf] Scala Introduction [pdf] Scala Pragmatics [pdf] |
Scala 3 Book Scala |
Java and C Scala |
Ch 1 | Ch 1,2,4 | Assignment 1 (due Jan 12) Midterm Study Guide (due Feb 09) |
| 2 | Tue | Jan 13 |
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 | Assignment 2 (due Jan 19) Midterm Study Guide (due Feb 09) |
| 3 | Tue | Jan 20 |
Strict and Nonstrict Evaluation [pdf] Functions on Lists [pdf] Methods and Functions [pdf] Folds [pdf] |
Functional Programming |
Functional Programming |
Ch 4 | Ch 5,7 | Assignment 3 (due Jan 05) Midterm Study Guide (due Feb 09) |
| 4 | Tue | Jan 27 |
Formal Semantics [pdf] Examples: Map, Filter, and Fold [pdf] More Functional Folds [pdf] |
- |
Language Interpreter |
Ch 3.4.7, 5.6 | Ch 9, 14, 15 |
Assignment 4 (due Feb 02) Midterm Study Guide (due Feb 09) |
| 5 | Tue | Feb 03 |
Tail Recursion [pdf] Static/Dynamic Types [pdf] |
Tail Recursion Static and Dynamic Types |
Tail Recursion |
Ch 6 | Ch 8.10 |
Midterm Study Guide (due Feb 09) |
| 6 | Tue | Feb 10 |
Midterm Exam Undefined Behavior [pdf] Safety [pdf] Option Types [pdf] L-Values [pdf] Argument Passing [pdf] |
Undefined Behavior Option Types |
Option Types Argument Passing |
Ch 13 | - | Assignment 5 (due Feb 16) |
| 7 | Tue | Feb 17 |
Scope and Lifetime [pdf] Closures [pdf] |
Scope and Pointers Closures |
Ch 7 | Ch 8 | Assignment 6 (due Feb 23) |
|
| 8 | Tue | Feb 24 |
Nested Classes [pdf] Dynamic Dispatch and Inheritance [pdf] Delegation-based OOP [pdf] |
OOP |
Ch 10, 12 | Ch 10, 11, 20 | Assignment 7 (due Mar 02) |
|
| 9 | Tue | Mar 03 |
Parametric Polymorphism [pdf] Subtyping [pdf] |
Subtyping |
Ch 6.4 | Ch 17,18 | Assignment 8 (due Mar 09) |
|
| 10 | Tue | Mar 10 |
Surprising Design Decisions [pdf] Exam Review [pdf] |
JavaScript |
- | - | - | |
| 11 | Tue | Mar 17 | 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:
- attend lecture (see D2L for recordings)
- reading from textbooks (see table above for chapter details)
- worksheet (see table above)
- Assignment submission (see D2L)
- quiz (see D2L)
- work through study guide questions for topics covered this week