Before adopting Scheme, an instructor should feel comfortable with the language and have a feel for the new instructional possibilities that Scheme enables. To this end Indiana University and Oberlin offered in the Summer of 1996 five workshops of one week each, which could be taken individually or in succession.
Introducing Scheme: June 10 - 14
An introduction to Scheme with special attention paid to the use of Scheme in introductory programming courses. Functional programming is introduced first, with emphasis on recursion. Covers selected material from chapters 1-6 of {\em Scheme and the Art of Programming,} by Springer and Friedman.
Intermediate Topics in Scheme: June 17 - 21
The use of procedures as first-class objects. Conceptual differences between the functional and imperative programming paradigms are highlighted when assignment is introduced. Graphics problems are provided for visual interest. Infinite lists (streams) and a Scheme extension for object-oriented programming, inspired by C++, are introduced. Covers selected material from chapters 7-15 of the above text.
Advanced Topics in Scheme: June 24 - 28
The Oberlin College approach to teaching sophmore-level topics using Scheme. Introduces lab materials that effectively acquaint students with such topics as hash tables, trees and balancing, object-concepts, combinatorics, streams, lazy languages, heaps, coding and encryption, priority queues, greedy algorithms, pattern-matching. Important language concepts include tail-recursion, continuations, coroutines, parameter-passing, and implementation issues.
Using Scheme to Understand Programming Languages: July 1 - 5
A unique approach to the study of programming languages is introduced. Using Scheme as an executable meta-language enables a unified approach to teaching programming languages that spans the range from abstract semantics to implementation techniques. Covers selected material from {\em Essentials of Programming Languages,\/} by Friedman, Wand, and Haynes.
Compiling Scheme: July 8 - 12
An approach to teaching a compilers course using Scheme will be presented using recently developed materials. Students develop a native-code compiler for the core of Scheme using source-to-source transformations.