Schedule

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

Wed
Mar 30

Apr 01
Overview [pdf]
Scala Pragmatics [pdf]
Scala Introduction [pdf]
Scala 3 Book
Scala
Java and C
Scala
- Ch 1,2,4 Assignment 1 (due Apr 10)
D2L Folder
2 Mon

Wed


Apr 06

Apr 08


Scala Classes [pdf]
Algebraic Data Types [pdf]
Pattern Matching [pdf]
Contracts [pdf]
Formal Semantics [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 Mon
Wed

Apr 13
Apr 15

Statements and Expressions [pdf]
Strict and Nonstrict Evaluation [pdf]
Functions on Lists [pdf]
Expressions
Functional Programming
Code Snippets
Language Interpreter
Functional Programming
Ch 4 Ch 5,7 Assignment 3 (due Apr 24)
D2L Folder
4 Mon

Wed

Apr 20

Apr 22

Methods and Functions [pdf]
Folds [pdf]
Tail Recursion [pdf]
Static/Dynamic Types [pdf]
Tail Recursion
Static and Dynamic Types
Code Snippets
Tail Recursion
Ch 3.4.7, 5.6 Ch 9, 14, 15 Assignment 4 (due May 08)
D2L Folder
5 Mon
Wed


Apr 27
Apr 29


Midterm Exam (Apr 27)
Undefined Behavior [pdf]
Safety [pdf]
Option Types [pdf]
Undefined Behavior
Option Types
Option Types
Ch 6 Ch 8.10 -
6 Mon

Wed
May 04

May 06
L-Values [pdf]
Argument Passing [pdf]
Scope and Lifetime [pdf]
Argument Passing
Scope and Pointers
Ch 13 - Assignment 5 (due May 15)
D2L Folder
7 Mon
Wed

May 11
May 13

Closures [pdf]
Nested Classes [pdf]
Dynamic Dispatch and Inheritance [pdf]
Closures
Ch 7 Ch 8 Assignment 6 (due May 22)
D2L Folder
8 Mon
Wed
May 18
May 20
Delegation-based OOP [pdf]
Parametric Polymorphism [pdf]
OOP
Ch 10, 12 Ch 10, 11, 20 Assignment 7 (due May 29)
D2L Folder
9 Mon
Wed
May 25
May 27
No class due to Memorial Day
Subtyping [pdf]
Subtyping
Ch 6.4 Ch 17,18 Assignment 8 (due Jun 05)
D2L Folder
10 Mon
Wed
Jun 01
Jun 03
Surprising Design Decisions [pdf]
Exam Review [pdf]
JavaScript
- - -
11 Final Exam, in-person students: June 8 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: