The class is scheduled to meet at 9 a.m. on Mondays, Wednesdays, and Fridays and at 10 a.m. on Tuesdays, from August 31 through October 19, from October 29 through November 21, and from November 26 through December 14.
August 31: Getting started: in which we open up the kit and heft some of the useful instruments therein
September 3: Beginning Scheme: in which we begin to model the world between parentheses
September 4: Editing Scheme programs: in which we stylishly combine two contrasting literary genres, to wit, the essay and the computer program
September 5: Symbols and lists: in which nameful but opaque entities are serried and defiled
September 7: Procedure definitions: in which the virtues of abstraction from action are expounded
September 10: Conditional evaluation: in which we look before deciding which way to leap
September 11: Recursion with lists: in which we do things by positing that they have already been done
September 12: (pause for breath)
September 14: Numbers: in which the computer does all the tricky calculations
September 17: Recursion with integers: in which we count things by positing that they have already been counted
September 18: Preconditions and postconditions: in which we receive guarantees and make promises
September 19: Project #1: Mixing organic fertilizers.
September 21 and 24: Deep recursion: in which we fearlessly plunge to unknown depths
September 25: Pairs and pair structures: in which we observe the coupling of data (profusely illustrated!)
September 26: Association lists: in which the items march in two by two
September 28: Local bindings: in which we confer names that outsiders are not allowed to know
October 1: Indefinite recursion: in which we learn why we should confine the genie to its bottle
October 2: Local binding and recursion: in which we put the kernel back in its husk
October 3 and 5: Project #2: The prisoner's dilemma
October 8: Characters: in which we look at some unusual characters and check their serial numbers
October 9: Strings: in which we pick the characters out of line-ups
October 10 and 12: Procedures as values: in which we perform computations on computations, and abstract from abstractions
October 15: Folding: in which the program figures out for itself how to do things by positing them done
October 16: Variable arity: in which our procedures receive as many data as we choose to give them
October 17 and 19: Project #3: Solving permuted-word puzzles
October 29: Multiple-valued procedures: in which our procedures give us as many data as we choose to receive from them
October 30: Vectors: in which we access values randomly.
October 31: Side effects: in which we descend from Plato's heaven into the flux
November 2: Structure mutation: in which data structures become storage structures and lists become circular
November 5: Iteration: in which the side effects accumulate
November 6: Matrices: in which we encounter creatures from other dimensions
November 7: Sorting by insertion: in which we impose order on the unruly
November 9: Sorting by merging: in which we impose order more efficiently
November 12: Searching: in which we find that computers can ferret more quickly among orderly data
November 13 and 14: Project #4: substitution ciphers
November 16: Input and output under program control: in which we take over interactions with the user from DrScheme
November 19: Files: in which we take the interactivity out of input and output
November 20: Recursion with files: in which we read and write files by positing that they have already been read and written
November 21: Records: in which we customize our data models
November 26: Metaprogramming: in which a program customizes our data models for us
November 27: Assignment: in which we learn why variables are so called
November 28: Object-oriented programming: in which we learn how protective about its data a procedure can be
November 30: Stacks: in which we learn how a sequence of procedure calls is like a spring-loaded rack for cafeteria trays
December 3: Queues: in which our data are made to wait in line without cutting
December 4: Classes and objects in DrScheme: in which we catch a glimpse of how a big, complicated graphical user interface might be constructed
December 5: Windowing classes: in which we lay out some widgets
December 7: Drawing classes: in which we stretch some canvases, prepare our brushes, mix our colors, and start painting
December 10: Outside the DrScheme environment: in which we compare DrScheme to other implementations of the language.
December 11 and 12: Project #5: Plotting a mathematical function
December 14: Power and authority: in which the troubling dual nature of our instruments is described, with a lesson for the willful
This document is available on the World Wide Web as
http://www.cs.grinnell.edu/~stone/courses/scheme/schedule-of-topics.xhtml
created August 27, 2001
last revised December 10, 2001