Schedule of topics

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

Validated as XHTML 1.1 by the World Wide Web Consortium Cascading Style Sheet validated by the World Wide Web Consortium

created August 27, 2001
last revised May 3, 2004

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