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. Notes refers to the course notes. OSV refers to Odersky, Spoon, and Venners. Programming in Scala, 3rd edition. FW refers to Friedman and Wand, Essentials of Programming Languages, 3rd edition. The readings will be classified into the following order of recommendation: Advised (expected, required, and of highest importance), Recommended (important but read after previous category), and Supplemental (additional material for a different perspective).

Date Topic Reading Assignment
1 T 8/23 Welcome. Getting your money's worth.
Advised. Notes 1.1. FW Foreword and Preface.
Recommended. OSV Chapter 1 A Scalable Language.
Supplemental. Bootstrapping: Torben Mogensen. Basics of Compiler Design, Chapter 13.
Controversial editorial (optional). Joel Spolsky. The Perils of JavaSchools.
Why Twitter uses Scala (optional).
Poster (optional). Peter Van Roy. The principal programming paradigms.
Poster (optional). O'Reilly. History of Programming Languages Poster.
R 8/25 Scala Crash Course: Basic Values and Types. Evaluation.
Advised. Notes 1.2. OSV Chapter 2 First Steps in Scala (Step 1-4), Chapter 5 Basic Types and Operations, Section 6.10 Identifiers in Scala, Section 7.7 Variable Scope, Section 17.5 Tuples.
F 8/26 Course Tools. Team Formation.
2 T 8/30 Recursion. Data Structures and Pattern Matching.
Advised. OSV Chapter 15 Case Classes and Pattern Matching.
R 9/1 Recursion. Data Structures and Pattern Matching.
Advised. Notes 1.3 (ok to skip 1.3.1 for now).
F 9/2 Lab 1 Lab 1 due
3 T 9/6 Syntax: Grammars; Scoping; Binding.
Advised. Notes 2.1: 2.1.1-2.1.3.
Exercise 1
R 9/8 Syntax: Grammars; Scoping; Binding.
Advised. FW Chapter 2 Data Abstraction.
F 9/9 Lab 2
4 T 9/13 Syntax: Concrete versus Abstract.
Advised. Notes 2.1.4. Notes 2.3 (ok to skip 2.3.3 for now).
R 9/15 Inductive Definitions. Expression Evaluation.
Recommended. FW 3.1-3.2.
F 9/16 Lab 2 Lab 2 due
5 T 9/20 Operational Semantics. [whiteboard, lab handout]
Advised. Notes 3.1.
Exercise 2
R 9/22 Small-Step Semantics; Evaluation Order; and Short-Circuit Evaluation. [whiteboard]
Advised. Notes 3.2.
F 9/23 Lab 3
6 T 9/27 Small-Step Semantics; Evaluation Order; and Short-Circuit Evaluation. Dynamic Scoping. [whiteboard, lab handout]
Recommended. FW Chapter 3.3-3.4 PROC and LETREC.
R 9/29 Small-Step Semantics; Evaluation Order; and Short-Circuit Evaluation. Dynamic Scoping. [whiteboard]
Supplemental. FW Chapter 3.5 Scoping and Binding of Variables.
F 9/30 Lab 3 Lab 3 due
7 T 10/4 Midterm Review Exercise 3
R 10/6 Midterm Exam
F 10/7 Lab 4
8 T 10/11 Collections and Callbacks (Higher-Order Functions)
Advised. OSV Chapter 16.1-16.9 Lists.
Recommended. OSV Chapter 17.2 Sets and Maps.
Supplemental. Twitter Scala School. Collections.
R 10/13 Collections and Callbacks (Higher-Order Functions) Advised. Higher-Order Functions: Code Worksheet
F 10/14 Lab 4
9 T 10/18 Type Checking. Records.
Advised. Notes 4.1.
R 10/20 Type Checking. Records.
F 10/21 Lab 4 Lab 4 due
10 T 10/25 Imperative State. Exercise 4
R 10/27 Imperative State.
Recommended. FW Chapter 4 State (4.5).
Supplemental. OSV Chapter 23.2, 23.4-23.5 For Expressions.
F 10/28 Lab 5
11 T 11/1 Variables and Pointers.
R 11/3 Variables and Pointers.
F 11/4 Lab 5 Lab 5 due
12 T 11/8 Continuations. Regular Expressions.
Advised. "Twelve Days of 3155"
Advised. FW Chapter 6.1 Writing Programs in Continuation-Passing Style
Supplemental. FW Chapter 5 Continuation-Passing Interpreters. This supplemental reading provides some additional context for 6.1.
Exercise 5
R 11/10 Continuations. Regular Expressions.
Supplemental. Michael Sipser. Introduction to the Theory of Computation. Chapter 1.3. For the lab, you really only need to basic "operational" definition of regular expressions, but this reading is a nice supplement to connect regular expressions with the theory of regular languages and finite automata in your other courses. Similarly for Chapter 2.1-2.2 for context-free grammars, context-free languages, and pushdown automata.
F 11/11 Lab 6
13 T 11/15 Continuations. Regular Expressions. Parsing.
R 11/17 Continuations. Regular Expressions. Parsing.
F 11/18 Lab 6 Lab 6 due
- T 11/22 No class. Thanksgiving break.
R 11/24 No class. Thanksgiving break.
F 11/25 No class. Thanksgiving break.
14 T 11/29 Objects and Classes. Exercise 6
R 12/1 Objects and Classes.
F 12/2 Project
15 T 12/6 Project Presentations.
R 12/8 Final Review
F 12/9 Final Review
Final Exam