This schedule is tentative and subject to change.
Date(s) | Topic(s) | Homework | |
---|---|---|---|
Week | Day | ||
1 | Jan 5 |
Course overview
Why languages?
|
Micro-Homework 1 (due Fri Jan 7) Reading: Ullman Ch. 1 - 2.3 (due Wed Jan 7) |
Jan 7 |
ML introduction
History of ML Values, bindings Built-in data types Organization of heap data Read-eval-print loop programming environment
|
Reading: Ullman Ch. 2.4, 3.2 (due Fri Jan 9) | |
Jan 9 |
Functions intro
Pattern matching
|
Micro-Homework 2 (due Wed. Jan 14) Reading: Ullman Ch. 3.3, 3.4, 5.1-5.4 (due Wed. Jan 14) |
|
2 | Jan 12 |
Patterns ct'd
Language semantics
|
Homework 1: ML programming (due Fri Jan 16) Homework 1 Solution |
Jan 14 |
Recursive functions; proper tail recursion
Polymorphic types
Higher-order functions; currying
Standard list functions: map/filter/fold
|
Reading: Ullman 4.1, 5.3-5.6, 6.1, 6.2 (due Wed. Jan 21) | |
Jan 16 |
Lexical scoping (vs. dynamic scoping)
Polymorphic type inference
|
Homework 2: ML functions and polymorphic types (due Fri. Jan 23) | |
3 | Jan 21 |
User-defined data types and type synonyms
Type synonyms Monomorphic uses of datatype |
Reading: Ullman 6.3, 7.2, 7.3 (due Fri. Jan 23) |
Jan 23 |
User-defined data types ct'd
Polymorphic uses of datatype Mutual recursion Optional data (
option and null) |
Reading: Ullman 8.1-8.3, 8.5 (due Wed. Jan 28) |
|
4 | Jan 26 |
Mutable data (
ref ) |
|
Jan 28 |
Module systems
|
Reading: Ullman 5.2 (due Fri. Jan 30) | |
Jan 30 |
Module systems ct'd
Exceptions introduction
|
Project 1: Interpreter in ML (due Fri. Feb 13) | |
5 | Feb 2 |
Grammars, language specifications, and
interpreters
BNF, regular expressions Project overview
|
|
Feb 4 |
Interpreter design: case study
Scheme introduction
History of Lisp Scheme syntax, evaluation, special forms DrScheme programming environment
|
||
Feb 6 |
Midterm
|
||
6 | Feb 9 |
Dynamic typing vs. static typing
|
|
Feb 11 |
Dynamic types ct'd
Programs as data (quote and quasiquote)
|
Reading: all lecture notes this week: [1], [2], [3], [4] (due Wed. Feb. 18; skim before Fri. Feb 13.) | |
Feb 13 |
Continuations and exceptions
|
Homework 4: Scheme programming (due
Reading: Guzdial Ch. 1-2.4 (due Wed. Feb. 18) |
|
7 | Feb 18 |
Smalltalk introduction
History of Smalltalk/OOP Objects, classes, messages Squeak programming environment
|
Micro-Homework
3 (due Mon. Feb. 23)
Reading: Guzdial Ch. 2.5-3.8 (due Fri. Feb. 20)
Reading: The
Early History of Smalltalk, Alan C. Kay (due Mon. Mar. 1) |
Feb 20 |
Smalltalk intro ct'd.
Classes and metaclasses
|
Homework 5: Smalltalk programming (due Fri. Feb. 27)
Reading: Guzdial Ch. 4 (due Fri. Feb. 27) |
|
8 | Feb 23 |
Classes and metaclasses ct'd.
|
|
Feb 25 |
ADTs, OOP, and OO library design
Smalltalk collection libraries Morphic
|
Reading: Guzdial 5.3.2-5.5 (no due date, but
complements Smalltalk project; focus on 5.3.2.1, 5.4.2, and
5.5).
Nano-homework: Work your way through Morphic tutorial
from lecture.
|
|
Feb 27 |
Exploratory programming in Squeak and Morphic
OO static typing and subtyping
|
Project 2: Smalltalk
Morphic application (see writeup for due dates)
|
|
9 | Mar 1 |
OO static typing ct'd.
Multiple inheritance
Parameter passing
|
|
Mar 5 |
Connections between object-oriented and functional programming
Research languages---
Pizza EML and MultiJava |
||
Mar 3 |
Scripting, Ruby, and regular expression matching
|
||
10 | Mar 8 |
Unsafe languages: C
|
|
Mar 10 | |||
Mar 12 |
Course wrapup
|
||
Finals | Mar 17 |
Final exam (8:30-10:20 a.m.)
|