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:
- 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