January 19: Computer science: an overview.
Reading: Abelson and Sussman, chapter 1, through section 1.1.1 (pages
1-7).
January 20: Computer programming.
Reading: Abelson and Sussman, sections 1.1.2 and 1.1.3 (pages 7-11).
January 21: Invoking procedures, defining identifiers and evaluating
expressions.
Reading: Abelson and Sussman, section 1.1.4 (pages 11-13).
January 23: Creating and invoking new procedures.
Reading: Abelson and Sussman, section 1.1.5 (pages 13-17).
January 26: The substitution model of evaluation; applicative and
normal-order evaluation.
Reading: Abelson and Sussman, section 1.1.6 (pages 17-21).
January 27: Conditionals.
Reading: Abelson and Sussman, section 1.1.7 (pages 21-26).
January 28: Example: Computing square roots by Newton's method.
Reading: Abelson and Sussman, section 1.1.8 (pages 26-31).
January 30: Local binding and block structure.
Reading: Abelson and Sussman, section 1.2, through section 1.2.1 (pages
31-37).
February 2: Recursion and iteration.
Reading: Abelson and Sussman, section 1.2.2 (pages 37-42).
February 3: Tree recursion.
Reading: Abelson and Sussman, section 1.2.3 (pages 42-44).
February 4: Orders of growth.
Reading: Abelson and Sussman, sections 1.2.4 and 1.2.5 (pages 44-50).
February 6: Examples: Exponentiation; computing the greatest common
divisor.
Reading: Abelson and Sussman, section 1.2.6 (pages 50-56).
February 9: Example: Primality testing.
Reading: Abelson and Sussman, section 1.3, through section 1.3.2 (pages
56-66).
February 10: Higher-order procedures.
Reading: Abelson and Sussman, section 1.3.3 (pages 66-72).
February 11: Examples: Finding roots by bisection; finding fixed points.
Reading: Abelson and Sussman, section 1.3.4 (pages 72-78).
February 13: Procedures as returned values.
Reading: Abelson and Sussman, chapter 2, through section 2.1.1 (pages
79-87).
February 16: Data abstraction.
Reading: Abelson and Sussman, section 2.1.2 (pages 87-90).
February 17: Abstraction barriers for modularity.
Reading: Abelson and Sussman, section 2.1.3 (pages 90-93).
February 18: Example: Rational numbers.
Reading: Abelson and Sussman, section 2.2, through section 2.2.1 (pages
97-107).
February 20: Sequences; mapping.
Reading: Abelson and Sussman, section 2.2.2 (pages 107-113).
February 23: Hierarchical data structures.
Reading: Abelson and Sussman, section 2.2.3, through the subsection
``Sequence operations'' (pages 113-122).
February 24: Enumerating, filtering, and accumulating.
Reading: Abelson and Sussman, section 2.2.3, subsection ``Nested
mappings'' (pages 122-126).
February 25: Nested mappings.
Reading: Abelson and Sussman, section 2.2.4 (pages 126-141).
February 27: Example: The picture language.
Reading: Abelson and Sussman, section 2.3, through section 2.3.1 (pages
142-145).
March 1: Symbolic data; quotation.
Reading: Abelson and Sussman, section 2.3.2 (pages 145-151).
March 2: Example: Symbolic differentiation.
Reading: Abelson and Sussman, section 2.3.3 (pages 151-161).
March 3: Example: Representing sets.
Reading: Abelson and Sussman, section 2.4, through section 2.4.2 (pages
169-179).
March 5: Multiple representations and generic procedures.
Reading: Abelson and Sussman, section 2.4.3 (pages 179-187).
March 8: Data-directed programming.
Reading: Abelson and Sussman, section 2.5, through section 2.5.2 (pages
187-202).
March 9: Generic operations.
Reading: Abelson and Sussman, section 2.5.3 (pages 202-216).
March 10: Example: Symbolic algebra.
Reading: Handout (in preparation).
March 12: Records; Scheme Requests for Implementation (SRFIs).
Reading: Abelson and Sussman, chapter 3, through section 3.1.2 (pages
217-229).
March 29: Assignment and state.
Reading: Abelson and Sussman, section 3.1.3 (pages 229-236).
March 30: Aliasing.
Reading: Abelson and Sussman: section 3.2 (pages 236-251).
March 31: The environment model of evaluation.
Reading: Abelson and Sussman: section 3.3, through section 3.3.1 (pages
251-261).
April 2: Mutable lists.
Reading: Abelson and Sussman: section 3.3.2 (pages 261-266).
April 5: Example: Queues.
Reading: Abelson and Sussman: section 3.5, though the subsection ``The
stream implementation in action'' in section 3.5.1 (pages 316-323).
April 6: Streams.
Reading: Abelson and Sussman: section 3.5.1, subsection ``Implementing
delay and force'' (pages 323-326).
April 7: Delayed evaluation.
Reading: Abelson and Sussman: section 3.5.2 (pages 326-334).
April 9: Infinite streams.
Reading: Abelson and Sussman: section 3.5.3 (pages 334-346).
April 12: Examples using streams.
Reading: Dybvig, chapter 2 (pages 11-54).
April 13: Review of the core Scheme language.
Reading: Dybvig, chapter 4 (pages 83-92).
April 14: Procedures and variables.
Reading: Dybvig, chapter 5 (pages 93-117).
April 16: Control structures.
Reading: Dybvig, chapter 6 (pages 119-168).
April 19: Predefined procedures.
Reading: Dybvig, section 9.2 (pages 218-220).
April 20: Example: Sorting.
Reading: Dybvig, chapter 7 (pages 169-179).
April 21: Input and output.
Reading: Dybvig, section 9.4 (pages 224-228).
April 23: Example: Word-frequency counts.
Reading: Dybvig, section 9.6 (pages 231-234).
April 26: Example: Formatted output.
Reading: Handout (in preparation).
April 27: Example: Programming the Common Gateway Interface.
Reading: Dybvig, sections 3.1 and 3.2 (pages 57-70).
April 28: Syntactic extension.
Reading: Dybvig, chapter 8 (pages 181-209).
April 30: Advanced syntactic extension.
Reading: Dybvig, section 9.8 (pages 238-242).
May 3: Object-oriented programming.
Reading: ``Solving permuted-word puzzles''
May 4 and 5: In-class project.
(No new reading.)
May 7: A sermon on power and authority; student evaluations.
May 14, 9 a.m.: Final examination.
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 May 3, 2004