Schedule

Week Days Date Lecture Topic / Slides Lecture Notes Worksheets Reading (CPL) Reading (PS) Assignment
1 Thu Apr 03 Overview [pdf]
Scala Introduction [pdf]
Scala Pragmatics [pdf]
Scala 3 Book
Scala
Scala
Ch 1 Ch 1,2,4 Assignment 1
(due Apr 11)
2 Thu Apr 10 Scala Classes [pdf]
Statements and Expressions [pdf]
Strict and Nonstrict Evaluation [pdf]
Contracts [pdf]
Formal Semantics [pdf]
Expressions
Java and C Ch 4 Ch 3,5,13 Assignment 2
(due Apr 18)
3 Thu Apr 17 Pattern Matching [pdf]
Functions on Lists [pdf]
Methods and Functions [pdf]
Functional Programming
Functional Programming
Ch 3 Ch 7,14 Assignment 3
(due Apr 25)
4 Thu Apr 24 Folds [pdf]
Examples: Map, Filter, and Fold [pdf]
Static/Dynamic Types [pdf]
Safety [pdf]
Static and Dynamic Types
- Ch 6 Ch 9,24 Assignment 4
(due May 02)
5 Thu May 01 Midterm Exam (5:45pm-7:15pm)
Undefined Behavior [pdf]
Option Types [pdf]
Undefined Behavior
Option Types
- Ch 6 - -
6 Thu May 08 Tail Recursion [pdf]
L-Values [pdf]
Argument Passing [pdf]
Algebraic Data Types [pdf]
Tail Recursion
Algebraic Data Types
Code Snippets
Algebraic Data Types
Argument Passing
Ch 7 Ch 19 Assignment 5
(due May 16)
7 Thu May 15 Scope and Lifetime [pdf]
Closures [pdf]
Runtime Storage
Closures
Ch 7 Ch 8 Assignment 6
(due May 23)
8 Thu May 22 Nested Classes [pdf]
Dynamic Dispatch and Inheritance [pdf]
Delegation-based OOP [pdf]
OOP
Ch 10,13 Ch 10,11,20 Assignment 7
(due May 30)
9 Thu May 29 Parametric Polymorphism [pdf]
Subtyping [pdf]
Subtyping
- Ch 17,18 Assignment 8
(due Jun 06)
10 Thu Jun 05 Surprising Design Decisions [pdf]
Exam Review [pdf]
JavaScript
- -
11 Thu Jun 12 Final Exam (5:45pm-8:00pm) - - - -


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: