The following schedule lists the topics we plan to cover and approximately the number of meetings we plan to spend on each topic. The schedule is tentative. Most likely, some things will change during the semester, and the schedule will be revised as necessary. This class is yours, so please make suggestions.

The exam dates are fixed, so you may plan accordingly.

The Reading column lists the assigned reading for the meeting. You should do the reading before attending class and view it as an introduction to spark discussion in class.

The Assignment column lists the due date for each assignment.

Readings: OSV refers to Odersky, Spoon, and Venners. Programming in Scala, 2nd edition.

Date Topic Reading Assignment
1 T 17-Jan Welcome. Getting your money's worth. [slides]
Notes 1.1.
Controversial editorial (optional). Joel Spolsky. The Perils of JavaSchools.
Talk (optional). Alex Payne (Twitter). Why Scala for Web 2.0?.
Poster (optional). Peter Van Roy. The principal programming paradigms.
Poster (optional). O'Reilly. History of Programming Languages Poster.
R 19-Jan Basic Values and Types. Evaluation. [whiteboard, code]
Notes 1.2.
Scala references (optional, skim). These are reference documents on the Scala Programming Language that are likely hard to read now, but such documents will be more approachable at the end of this course.
F 20-Jan Getting Started with Scala
2 T 24-Jan Basic Values and Types. Evaluation.
Notes 1.2.
Supplemental. OSV Chapter 5, Section 6.10, Section 7.7.
R 26-Jan Recursion and Induction [whiteboard]
Notes 1.3.
Supplemental. OSV Chapter 2 for Function Definitions. OSV Section 17.5 Tuples. OSV Section 7.5 Match Expressions.
F 27-Jan Mathematical Induction Solutions HW1 due 1/30
3 T 31-Jan Syntax: Grammars; Scoping; Binding [whiteboard]
Notes 1.4.
Supplemental. Sebesta. Chapter 3.1-3.3.
R 2-Feb Syntax: Grammars; Scoping; Binding [whiteboard]
Notes 1.4.
Supplemental. Sebesta. Chapter 3.1-3.3.
F 3-Feb Syntax
4 T 7-Feb Data Structures and Pattern Matching [whiteboard, code]
Supplemental. OSV Chapter 15 for Pattern Matching. OSV Chapter 16 (through 16.6) for Lists.
R 9-Feb Structural Induction [whiteboard, code] Notes 2.2
F 10-Feb Pattern Matching and Structural Induction Solutions HW2 due 2/13
5 T 14-Feb Structural Induction [whiteboard] Notes 2.2
R 16-Feb Higher-Order Functions [whiteboard, code]
Re-implementations of list map, list foldLeft, list foldRight along with example uses [code].
Supplemental. OSV Chapter 16.7-16.9 Methods on Lists.
F 17-Feb More Higher-Order Functions Solutions
6 T 21-Feb Currying [code]
R 23-Feb Tail Recursion and Continuations [code]
F 24-Feb Homework Help HW3 due 2/27
7 T 28-Feb Inductive Definitions [whiteboard]
Notes 3.1.
R 1-Mar Operational Semantics [whiteboard]
Notes 3.2.
Supplemental. Sebesta. Chapter 7.2 (particularly 7.2.2), 7.6 Expressions.
F 2-Mar Continuation Practice Solutions
8 T 6-Mar Operational Semantics [whiteboard]
R 8-Mar Operational Semantics; Homework 4 [whiteboard]
F 9-Mar Reduction Rules HW4 due 3/12
9 T 13-Mar Type Checking [whiteboard] Amer Diwan. Type Checking and Type Equality.
R 15-Mar Type Checking; Type Equality [whiteboard]
F 16-Mar
10 T 20-Mar Midterm Review [whiteboard]
R 22-Mar Midterm Exam
F 23-Mar Homework 5 Notes
T 27-Mar No class. Spring Break
R 29-Mar No class. Spring Break
F 30-Mar No class. Spring Break
11 T 3-Apr Records and Unions [whiteboard, hw5 notes] Supplemental. Sebesta. Chapter 6.7, 6.8.
R 5-Apr Records and Unions [whiteboard, hw5 notes]
F 6-Apr Yet Another Homework 5 Notes Solutions HW5 due 4/7
12 T 10-Apr Dynamic Scoping; Imperative Computation: Variables and Pointers [whiteboard] Supplemental. Sebesta. Chapter 5.5.6 Dynamic Scope, 6.9 Pointers.
R 12-Apr Imperative Computation: Variables and Pointers; Procedural Abstraction [whiteboard, hw6 notes] Supplemental. Sebesta. Chapter 9.1-9.6 (emphasis on 9.5 Parameter Passing).
F 13-Apr Parameter Passing and Mutability Solutions
13 T 17-Apr Imperative Computation: Variables and Pointers; Procedural Abstraction [whiteboard, hw6 notes]
R 19-Apr Procedural Abstraction [whiteboard, hw6 notes]
F 20-Apr More Fun With Parameter Passing Solutions HW6 due 4/20
14 T 24-Apr Retrospective [whiteboard, Smalla code, C code, C++ code, JavaScript code] Amer Diwan. An Introduction to Subtyping.
R 26-Apr Presentations [schedule]
F 27-Apr Presentations [schedule]
15 T 1-May Subtyping; Objects and Classes [whiteboard]
R 3-May Final Review [whiteboard]
F 4-May Final Review
S 5-May Final Exam, 7:30pm-10:00pm