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]
Folds [pdf]
Examples: Map, Filter, and Fold [pdf]
More Functional Folds [pdf]
Statements and Expressions [pdf]
Strict and Nonstrict Evaluation [pdf]
Formal Semantics [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
Static/Dynamic Types [pdf]
Undefined Behavior [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]
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
Undefined Behavior (Review) [pdf]
Safety [pdf]
Scope and Lifetime [pdf]
Closures [pdf]
Undefined Behavior
Scope and Pointers
Closures
Ch 7 Ch 8 Assignment 6 (due May 22)
D2L Folder
8 Tue

Thu
May 19

May 21
Nested Classes [pdf]
Dynamic Dispatch and Inheritance [pdf]
Delegation-based OOP [pdf]
Code Snippets
OOP
Ch 10, 12 Ch 10, 11, 20 Assignment 7 (due May 29)
D2L Folder
9 Tue
Thu
May 26
May 28
Parametric Polymorphism [pdf]
Subtyping [pdf]
Surprising Design Decisions [pdf]
Code Snippets
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: