Schedule of topics

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

Validated as XHTML
1.1 by the World Wide Web Consortium

created August 27, 2001
last revised December 10, 2001

John David Stone (stone@cs.grinnell.edu)