Computer Science 301 deals with the design, formulation, and implementation of algorithms, including issues of correctness and efficiency, and with the data structures on which commonly occurring algorithms operate.
Introduction to algorithms, by Thomas H. Cormen, Charles E. Leiserson, and Ronald L. Rivest. Cambridge, Massachusetts: The MIT Press, 1990.
Algorithms for functional programming, by John David Stone (New York: Springer-Verlag, to appear). Copies of the manuscript of this not-yet-published book will be distributed in class.
Participating in class discussions, in an intelligent and well-informed way. This requirement entails some others: attending each meeting of the class, reading the assigned texts beforehand, thinking carefully about them, and writing down notes and questions.
Submitting satisfactory solutions to homework exercises.
Taking and passing two one-hour in-class examinations and a three-hour final examination.
Office: Science 2418
Telephone: extension 3181
E-mail: stone@cs.grinnell.edu
Office hours: Mondays, 10 a.m. to 12 m.; Tuesdays, 10 a.m. to 12 m.;
Thursdays, 2:15 to 4:15 p.m.; and by appointment.
In some of our Scheme programming, it will be useful to extend the syntax of the language to include new kinds of derived expressions, to simplify or regularize the code. The handout ``Macros in Scheme'' describes the mechanics of introducing such syntax extensions.
Algorithms for functional programming uses two extensions to
standard Scheme: receive-expressions and a limited form of
exception handling. The handout ``Two
useful extensions to standard Scheme'' describes these extensions and
explains how they are implemented.
Answers to the questions on the first hour examination, the second hour examination, and the final examination are now available.
Sessions of this course will meet from 2:15 to 3:15 p.m. on Mondays, Wednesdays, and Fridays, from August 25 through December 8, except for October 16, 18, and 20 (fall break) and November 24 (Thanksgiving recess).
The hour exams will be held on September 25 and November 3. The final exam is scheduled for December 14, at 2 p.m. Please take this date into account when making end-of-the-semester travel plans.
Composing unary procedures in Java (and invoking composites)
This document is available on the World Wide Web as
http://www.cs.grinnell.edu/~stone/courses/algorithms/
created July 2, 2000
last revised January 8, 2001