FRAMES
NO FRAMES
Schedule
Below is a list of lectures and in-class
examinations.
There will also be 6 in-class (unannounced)
pop-quizzes, each about 10 minutes long.
Dates written in red
indicate
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
(HD01).
List functions in Scheme
(HD02).
Compound data in Scheme
(HD03).
Reading in [A&S]: All of
section 1.1 except subsection 1.1.7, section 1.2 to the end of
subsection 1.2.3.
Homework assignment 1:
Programming with lists.
Solution.
-
Mon 01/23; Wed 1/25; Fri 1/27:
Tue, 09/13:
Syntactic sugar and desugaring
(HD04).
Substitution model of evaluation
(HD05).
Special forms
(HD06).
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:
Higher-order functions.
-
Mon 01/30; Wed 2/1; Fri 2/3:
Higher-order functions and how to use them
(HD07, HD08, HD09). Clarity versus efficiency
(HD10).
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
(HD11),
side effects
(HD12).
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
(HD15).
Manipulating the syntax of INTEX programs (HD16).
Homework assignment 5:
A
small interpreter (Part 1), together with Scheme-utilities.tar
and Scheme-code-for-INTEX.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:
A
small interpreter (Part 2) together with
Scheme-code-for-INTEX+bind.tar.
Solution.
-
Mon 2/17; Wed 3/1:
Static versus dynamic scoping
(HD17),
named-let and letrec
(HD18),
delayed evaluation
(HD19),
streams
(HD20).
-
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
(HD21),
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),
exceptions (HD27),
signatures and structures (HD28).
Homework assignment 8:
Datatypes
and Structures
-
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
(HD34).
Homework assignment 11:
Streams and lazy evaluation.
-
Wed 4/19; Fri 4/21:
Streams in SML
(HD34).
Homework assignment 12:
Programming with continuations.
-
Mon 4/24; Wed 4/26; Fri 4/28:
Continuations in Scheme
(HD35a,HD35d).
Continuations in SML
(HD35b,HD35c).
-
SATURDAY, May 6, 9:00 - 11:00 am:
END-OF-TERM EXAMINATION.