Below is a list of lectures and in-class
There will also be 6 in-class (unannounced)
pop-quizzes, each about 10 minutes long.
Dates written in red
days on which a pop-quiz may be given. At most one pop-quiz
will be given within the same week.
Wed, 01/18; Fri 1/20:
Overview and course organization.
Different ways of programming the factorial function
List functions in Scheme
Compound data in Scheme
Reading in [A&S]: All of
section 1.1 except subsection 1.1.7, section 1.2 to the end of
Homework assignment 1:
Programming with lists.
Mon 01/23; Wed 1/25; Fri 1/27:
Syntactic sugar and desugaring
Substitution model of evaluation
Reading in [A&S]:
Section 1.3 (don't spend time on mathematics you don't understand,
but read the rest), once more carefully subsections 1.1.4 and 1.1.5.
Homework assignment 2:
Mon 01/30; Wed 2/1; Fri 2/3:
Higher-order functions and how to use them
(HD07, HD08, HD09). Clarity versus efficiency
Reading in [A&S]:
Section 2.2 to the end of Subsection 2.2.3.
Homework assignment 3:
Abstract data types.
Mon 2/6; Wed 2/8; Fri 2/10:
Pairs and lists
Programs with state (HD13),
examples of side effects (HD14),
memoization and dynamic programming (HD14a).
Homework assignment 4:
Mutable data objects and Scheme-code-for-PSet04.tar.
Mon 2/13; Wed 2/15; Fri 2/17:
The INTEX programming language
Manipulating the syntax of INTEX programs (HD16).
Homework assignment 5:
small interpreter (Part 1), together with Scheme-utilities.tar
Tue, 2/21; Wed 2/22; Fri 2/24:
More on INTEX and its extension to INTEX+Sigma (use handouts of last week).
Homework assignment 6:
small interpreter (Part 2) together with
Mon 2/17; Wed 3/1:
Static versus dynamic scoping
named-let and letrec
Friday, March 3: MID-TERM EXAMINATION.
(Last Semester's Midterm, with Solutions).
Solutions to midterm.
March 4 - 10: SPRING RECESS.
Mon 3/13; Wed 3/15; Fri 3/17:
Introduction to SML, several examples of useful list operations
and again using pattern-matching (HD22),
wildcards in SML (HD23).
User-defined types in SML (HD24).
Homework assignment 7: Pattern-matching in SML.
Mon 3/20; Wed 3/22; Fri 3/24:
Extended example of mutually recursive datatypes (HD25).
Input and output (HD26),
signatures and structures (HD28).
Homework assignment 8:
Mon 3/27; Wed 3/29; Fri 3/31:
Structures, substructures, functors (HD29),
examples of type inference (HD30) Mutable storage (HD33).
Homework assignment 9:
Mutable Storage in SML.
Mon 4/3; Wed 4/5; Fri 4/7:
Background for type inference: A fragment of SML (old HD31, new HD31),
examples of typing derivations (HD32).
Homework assignment 10:
A type system for Mini ML.
Mon 4/10; Wed 4/12; Fri 4/14:
Type inference through unification (HD36)
Streams in Scheme (HD19,
HD20), streams in SML
Homework assignment 11:
Streams and lazy evaluation.
Wed 4/19; Fri 4/21:
Streams in SML
Homework assignment 12:
Programming with continuations.
Mon 4/24; Wed 4/26; Fri 4/28:
Continuations in Scheme
Continuations in SML
SATURDAY, May 6, 9:00 - 11:00 am: