Schedule

A week-by-week breakdown of the material.

Week 1 (01/11-01/15)

Day 1
OCAML setup
Day 2
OCAML basics Evaluation model, basic types, bindings
Day 3
Functions
Day 4

Tuples, practice

Assignment 1 due by class time, Friday, January 22nd.

Week 2 (01/18-01/22)

Day 1
Lists and Option Types
Day 2
Pattern-matching
Day 3
Recursion
Day 4

State recursion

Assignment 2 due by class time, Wed, January 27th.

Week 3 (01/25-01/29)

Day 1
Tail Calls
Day 2
Style reviews.
Day 3
Recursion practice.
Day 4
Assignment 2 style reviews. Recursion practice problems

Week 4 (02/01-02/05)

Day 1

Type aliases and Type variants

Assignment 3 due by class time, Monday, February 8th.

Day 2
Polymorphic Types
Day 3
Type inference
Day 4

Anonymous Functions, Functions as values

Assignment 4 due Thursday, February 11th.

Week 5 (02/08-02/12)

Day 1
Currying
Day 2

Exceptions and exception handling

Assignment 5 due Wednesday, February 17th.

Day 3
Sick day
Day 4
Sick day

Week 6 (02/15-02/19)

Day 1

Higher order functions

Assignment 6 due Monday, February 22nd.

Day 2
List functions
Day 3

Introduction to Modules

Assignment 7 due Friday, February 26th.

Day 4
References and mutation

Week 7 (02/22-02/26)

Day 1
Sick Day
Day 2
Delayed Evaluation
Day 3
Records and Objects
Day 4

Building an Interpreter

Assignment 8 due Monday, March 14th.

Week 8 (02/29-03/04)

BREAK

Week 9 (03/07-03/11)

Day 1
Introduction to Racket
Day 2
MIDTERM (study guide)
Day 3
Introduction to Racket (cont)
Day 4
Bindings and Mutation in Racket

Week 10 (03/14-03/18)

Day 1

Macros

Dynamic Datatype-Programming via pairs

Assignment 9 due Monday, March 21st.

Day 2
Guest lecture
Day 3
Dynamic Datatype-Programming via structs
Day 4
Mutation in the Interpreter: The need for a store

Week 11 (03/21-03/25)

Day 1

Mutation in the Interpreter: The need for a store

Assignment 10 due Friday, April 1st.

Day 2
Mutation in the Interpreter: The need for a store
Day 3
Static Type-Checking vs Dynamic checking
Day 4
Interpreting objects and classes

Week 12 (03/28-04/01)

Day 1
Interpreting objects and classes (cont)
Day 2
Interpreting objects and classes (cont)
Day 3
Type-checking in the interpreter
Day 4
Type-checking in the interpreter

Week 13 (04/04-04/08)

Day 1
Memory Management and Garbage Collection
Day 2
Control Structures
Day 3
Continuation-passing style
Day 4
Implementing Type Inference

Week 14 (04/11-04/15)

Day 1
Implementing Type Inference (cont)
Day 2
Implementing Parametric Types
Day 3
Subtyping
Day 4
Subtyping (cont)