[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Use at Indiana University
- To: scheme@mc.lcs.mit.edu
- Subject: Use at Indiana University
- From: Chris Haynes <cth%indiana.csnet@.ARPA>
- Date: Wed ,9 Apr 86 14:40:53 EDT
/**** 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.
/* ---------- */