CS212
Handouts
Most of the notes are text files. The slides are PowerPoint slides, so you'll
need a PowerPoint viewer for your browser in order to read them. You can get a free PowerPoint
viewer from Microsoft.
- [1/26] Introduction and Overview
- [1/28] [slides] Functional Abstraction and an
informal Substitution Model
- [2/2 and 2/4] [slides] A formal
Substitution Model
- [2/9] Tail Recursion, Letrec, and
Induction
- [2/16] [slides from 2/18] Analysis of
Algorithms. See also the handout on order of growth.
- [2/23-26] How to do a proof using
induction, encoding pairs using lambda, and abstraction
- [3/2] Contracts, specifications, implementation, and abstraction with defstruct,
bulletproofing with error
- rationals0.ss: a contract for rational
numbers and naive implementation
- rationals1.ss: a better implementation with
more bulletproofing
- rationals2.ss: an even better implementation
that reduces fractions to a normal form
- [3/3] Structural induction: example
(append x (append y z)) = (append (append x y) z)
- [3/9-11] Object Oriented Programming (see also the Swindle Quick Reference):
- deriv0.ss: a symbolic expression package that
calculates derivatives of constants, variables, and sums
- deriv1.ss: extends deriv0.ss with support for
products and exponentials
- deriv.ss: deriv0+deriv1 smoothly integrated
- deriv2.ss: extends deriv.ss so that expressions
are simplified as they're built.
- for fun: can you simplify them further?
- [3/16] More examples of generic functions
- nums.ss: rationals and univariate polynomials --
here we overload +,-,*,<=,equals etc. to work with new numeric types and take advantage
of our pre-existing list-manipulation routines like mergesort.
- [3/18] [slides]
Side effects, set!, and an introduction to the environment model.
- [3/30] [slides] More on the environment model, closures (see
also Brandon's Environment Model handout)
- [4/1] [slides]
Higher-order functions and the environment model, local state.
- [4/6] [slides] Let, Let*, and Letrec in the
environment model, intro to box-and-arrow diagrams for lists
- [4/8] [slides] More box-and-pointers,
stacks, queues, and simple priority queues.
- NOTE: the priority queues discussed here are not the same as on PS5.
- [4/13] [slides] Priority queues using heaps,
vectors
- [4/15] a Tiny-Scheme interpreter (preview for
PS6).
- [4/20] Introduction to macros.
- [4/22] Introduction to streams including the code for computing primes using the sieve method.
- [4/27] Eli's meaning of life (Warning: not for exams, can
consume brain resources so do not go over it before exams).
Lecture notes for each lecture will be available soon after the lecture itself.
- [1/25] No section
- [1/27] Demo session.
- [2/01] Introduction stuff.
- [2/03] Evaluation examples.
- [2/08] More Evaluation examples, functions, the let form.
- [2/10] Primitive types, let, let*, list basics.
- [2/15] More on lists, letrec, higher-order functsions.
- [2/17] More higher-order functsions, new special forms.
- [2/22] Symbols, easy evaluations.
- [2/24] Easy evaluations cont.
- [3/01] Tail recursion, list functions.
- [3/03] More about lists, associations and interfaces.
- [3/08] Higher order examples.
- [3/10] Evaluation of higher order functions.
- [3/15] Prelim review.
- [3/17] defstruct stuff.
- [3/29] Some leftovers.
- [3/31] defclass, call-next-method, and singletons.
- [4/05] PS#4 review.
- [4/07] Box/pointer diagrams, lists, sharing and destructive operations.
- [4/12] More pointers, equal? vs. eq?.
- [4/14] Using equal? for functions, comparing circular objects, using equals?, keywords.
- [4/19] defclass stuff, methods vs. generics.
- [4/21] Environments environments environments.
- [4/26] Even more environments.
- [4/28] Reader/printer, quote and macros.
- [5/03] More macros and problems using them, the apply function.
- [5/05] Lots of leftovers.
![home.gif (1300 bytes)](images/home.gif)
Last update: 01/19/00 11:35 PM