[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Use at Indiana University



/**** iuvax:scheme-list / iuvax!cth / 12:59 am  Mar 31, 1986 ****/

Scheme is used in a broad range of teaching and research contexts throughout
the Indiana University Computer Science Department.  The primary courses
which use Scheme are

-- Programming Languages (Junior/Senior level, with some graduate students)
   Scheme is used throughout this course to express the semantics of 
   programming languages and their implementation.  A sequence of interpreters
   is developed which demonstrate a systematic approach to deriving
   implementation from abstract semantics. The notes for this 
   unique course are turning into a book by Friedman, Wand, Haynes and
   Kohlbecker.

-- Advanced Concepts in Programming Languages (graduate level)
   In this course Dan Friedman uses Scheme is used to study a variety
   of advanced PL features, such as concurrency and reflection.  
   Typical projects require students to implement in Scheme the essence
   of various proposed language mechanisms, such as data flow or actors.

-- Operating Systems I and II (senior and graduate level)
   As I teach this course (others here do it a bit differently) after a few 
   weeks of interrupt handler programming in assembly language, the remaining
   course projects are done in Scheme.  (I wish we had direct access to 
   hardware interrupts and I/O controllers in a Scheme system.  Some day...)
   This year I gave the students a process scheduler written in Scheme using 
   engines, and asked them to add semaphores and monitors.  The second
   semester project is to implement all of the Ada concurrency mechanisms that
   seem to make sense in a Scheme environment (including termination and
   delays).

-- Compiler Construction I and II (senior and graduate level)
   is often taught with extensive use of Scheme, including lexical analysis,
   parsing and code generation.  This semester Kent Dybvig's class is
   writing an optimizing compiler for a subset of C in Scheme.

-- Denotational Semantics (advanced graduate level)
   is taught using a Semantic Prototyping System developed by Mitch 
   Wand that assists in the translation of denotational semantics into 
   running Scheme programs. (This system includes an ML-style type checker.)

In most other advanced courses students are free to use any language of their
choosing, and many choose Scheme, particularly in the AI courses.  Scheme is
also used in a variety of student projects, some of them outside of the
department.  Examples include (1) an oil exploration model for geology
instruction that is being tied into an expert system, and uses engines for
time-shared simulation, (2) a Scheme Development System, inspired by Knuth's
WEB, which targets Scheme and line printers instead of Pascal and Tex, and
(3) a Scheme Implementation of Neural Networks (SINN).

In the fall, George Springer will teach an honors introduction to programming
course using Scheme, The Little LISPer, and parts of the Abelson and Sussman
text.  We anticipate expanding the use of Scheme in future introductory
courses.  Scheme is also used in a variety of research projects, including
the study of programming language sequential control, logic programming, data
typing, concurrency, compilers, syntactic extension mechanisms, and hardware
design methodology.
/* ---------- */