Schedule

Week Days Date Lecture Topic / Slides Lecture Notes Worksheets Reading (CPL) Reading (PS) Assignment
1 Tue

Thu
Mar 31

Apr 02
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 Apr 10)
D2L Folder
2 Tue
Thu
Apr 07
Apr 09
Scala Classes [pdf]
Algebraic Data Types [pdf]
Algebraic Data Types
Code Snippets
Algebraic Data Types Ch 9.1,9.2 Ch 3,13,19,24 Assignment 2 (due Apr 17)
D2L Folder
3 Tue

Thu
Apr 14

Apr 16
Contracts [pdf]
Pattern Matching [pdf]
Functions on Lists [pdf]
Methods and Functions [pdf]
Code Snippets
Functional Programming
Ch 4 Ch 5,7 Assignment 3 (due Apr 24)
D2L Folder
4 Tue
Thu
Apr 21
Apr 23
Tail Recursion [pdf]
Tail Recursion (Again)
Folds [pdf]
Tail Recursion
Tail Recursion
Ch 3.4.7, 5.6 Ch 9, 14, 15 Assignment 4 (due Apr 30)
D2L Folder
5 Tue
Thu
Apr 28
Apr 30
Examples: Map, Filter, and Fold [pdf]
Statements and Expressions [pdf]
Expressions
Static and Dynamic Types
Language Interpreter
Ch 6 Ch 8.10 Midterm Study Guide
(due Apr 30)
6 Tue
Thu
May 05
May 07
Midterm Exam (May 05)
Option Types [pdf]
Option Types (Again)
Formal Semantics [pdf]
L-Values [pdf]
Argument Passing [pdf]
Option Types
Option Types
Argument Passing
Ch 13 - Assignment 5 (due May 15)
D2L Folder
7 Tue
Thu
May 12
May 14
Strict and Nonstrict Evaluation [pdf]
Scope and Lifetime [pdf]
Scope and Pointers
Ch 7 Ch 8 Assignment 6 (due May 22)
D2L Folder
8 Tue

Thu
May 19

May 21
Closures [pdf]
Static/Dynamic Types [pdf]
Undefined Behavior [pdf]
Safety [pdf]
Undefined Behavior
Closures
Ch 10, 12 Ch 10, 11, 20 Assignment 7 (due May 29)
D2L Folder
9 Tue
Thu
May 26
May 28
Nested Classes [pdf]
Dynamic Dispatch and Inheritance [pdf]
Delegation-based OOP [pdf]
Parametric Polymorphism [pdf]
Subtyping [pdf]
Surprising Design Decisions [pdf]
Code Snippets
Code Snippets
OOP
Subtyping
JavaScript
Ch 6.4 Ch 17,18 Assignment 8 (due Jun 04)
D2L Folder
10 Tue
Thu
Jun 02
Jun 04
Exam Review [pdf]
JavaScript - - ! Final Study Guide
(due Jun 04)
11 Final Exam, in-person students: June 11 11:30am-1:45pm, see Final Exam Schedule; online students: please register through D2L


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 the D2L forum.

Weekly checklist: