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.