210 Lecture Notes
Announcement:
The tutorial for the second exam will be held on
Friday, 10/20/2000 at 3pm in DH 1070
Schedule
Here's a sample schedule,
based on the Spring 2000 class.
It roughly describes where the class will go.
We will deviate from it (undoubtedly).
Spring 2000 Lecture Notes
These are, literally, the notes from which I lecture.
They do not, of course, contain everything said in class.
They are not a substitute for attendance.
- The introductory lecture;
includes all sorts of adminstrative
detail and advice.
- Expressions and functions
- Conditional execution
- Moving beyond numbers
adds data analysis to the design methodology.
- More complex structures;
adds templates to the methodology.
- Keeping things in lists;
introduction to recursive data structures.
- More Lists; a second lecture
on lists, including Scheme's built-in list construct.
(Note: the overhead transparency is included in the
lecture notes.)
- Even More Tricks with Lists.
We looked at several different ways to build a simple
program that manipulated three different (but linked)
compound structures and talked about when to decompose
the program into several smaller programs. The lecture
relied heavily on overhead
transparencies that contained the code.
- Lists of Mixed Data.
- Recursion and the Natural Numbers.
This concludes the lecture material that will be covered
by the first exam
- Family trees, the first time, includes
a couple of examples worked in detail.
- More child-centric family trees, with a
side excursion into helper functions.
- Parent-centric family trees
- File systems, part I
- File systems, part II, and functions with
two complex arguments
- Functions with two complex arguments
- Introducing Local and the
slides (Monday, 10/09/2000)
- Hammering home local (including
details on the second exam).
- Functional Abstraction, part I and
the slides
- Functional Abstraction, part II and
the slides
- Reiterating lambda, plus review for exam
This concludes the lecture material that will be covered by the
second exam
- Introduction to generative recursion, featuring
Hoare's Quicksort and Sierpinski's triangles.
- Fitting generative recursion into the design
methodology, including the generative template, and the 6 questions
that you must ask to fill it in.
- Termination conditions and find-flights.
This lecture introduced the problem of finding a path through a
graph and used an accumulator to address the termination problem
that arose when we added a cyclic path to the graph.
The slides are essential to
following the lecture notes.
- Finishing up find-flights and looking at
reverse. A simpler example with an accumulator.
For those of you who notice small details, there are no
lectures 26 and 27. Item 26 is "lecture 28"
- Converting to use an accumulator. This lecture
shows how to modify the classic list template to handle an accumulator,
and runs through the steps required to build an accumulator-based
program from scratch.
- A last look at accumulators. This lecture looks
at accumulators on binary trees.
- Introducting Memo functions. The beginning of
a brief sojurn into the world where local, lambda, and define interact
to create interesting name spaces. This lecture also introduces set!
- Memo functions and set!, again This lecture
repeats much of the material from the previous lecture.
- More fun with set! and set-structure!.
This lecture explores the use of set! and adds the ability to
modify structure elements to the mix.
- From Data Hiding to Data Abstraction This lecture
takes the address book example one step farther, and introduces the
notion of data hiding.
- Finishing up Data Abstraction & Objects
This lecture shows how our address book example has evolved into
a full-blown object, in the sense of an object-oriented programming
language.
- The Search for Identity. Introduces the
distinction between extensional and intensional identity and the
Scheme constructs for testing each of them.
- Vectors. Introduces Scheme's vector construct.
- Finishing up Vectors. More on vectors.
- From Programs to Executions, Part I.
- From Programs to Executions, Part II and the
corresponding Scheme code.
This page maintained by Keith D. Cooper.