CS 345, Programming Languages (Wilson)---Class Page
This is the home page for Paul
Wilson's CS345 class
THIS PAGE IS UNDER CONSTRUCTION. Things are subject to change.
BECAUSE THINGS MAY CHANGE, you should hit the RELOAD BUTTON in your
browser when you come to this page, to make sure you're seeing the most
recent version.
Online Course Readings and Reference Material
-
Syllabus
- Lecture Notes on
Declarative Programming .
-
Course Notes on Scheme and its Implementation in html for web browsing.
These notes are under construction. Only the first few sections are
reasonably well indexed for browsing, and the later sections will
change as the course goes along. Reading far ahead of the class is
likely to be an adventure.
I suggest that you use this web page with a browser while using
a Scheme system interactively. (Especially while working through
chapter 3, the tutorial.) This will allow you to cut text out
of the document and paste it into a running Scheme system.
THERE ARE ERRORS IN THIS TEXT, especially the later chapters. That's
another reason to read the html version with a browser, rather than
printing out a hardcopy. I'll correct most of the errors before we
get to those chapters.
-
The R4RS (Scheme language definition) in html format for online
browsing. This lists all of the standard features of Scheme and (tersely)
describes what they do. For most stuff in this course, my Scheme course
notes will be more helpful, but if you want to know about miscellanous
functions and exactly what they do, this is the authority.
- First set of
Practice Questions . There's also a version with
answers .
- Second set of
Practice Questions . There's also a version with
answers .
-
Quiz 1 (with answers) .
- Third set of
Practice Questions . There's also a version with
answers .
-
Notes on naming conventions and indenting for Scheme, which you should
consult when doing homework so that I can read your code and grade it
sensibly, and
notes on drawing data structures.
-
Homework assignment on writing merge sort in Scheme, and
my solutions to the first three problems. (Commented Scheme code.)
-
Notes on a simple reader, including regular expressions, BNF grammar,
and the actual code in Scheme.
-
Scheme code for a simple backward-chaining propositional calculus theorem
prover, which is essentially a little subset of Prolog, and a set
of
rules for classifying animals, i.e., a logic program about kinds of
animals, to play with using the theorem prover.
-
A picture of some class objects and instances to illustrate the simple
object system from the Scheme notes, and
another picture showing class objects and the metaclass object,
illustrating the circularity that makes the latter self-describing.
-
Scheme code for a simple object-based programming system based on
classes and generic procedures (inheritance not implemented yet).
-
Notes on type systems, including inheritance and subtyping.
-
Take-Home Quiz and the
answers (and some explanations).
-
Test 2 and a version of
Test 2 with Answers (and some explanations).
The main language we'll be using in this course is Scheme ,
and by default the implementation to use is RScheme , which
is installed on the public cs SPARCs (running Solaris) and RS6000's
(running AIX). On the CS machine, you run RScheme with the command
/p/bin/runscheme .
If you use your own machine, and you're running Linux or Solaris or
any of several other implementations of UNIX, you can get RScheme and
install it on your machine---it's free. You can find it
from
Donovan Kolbly's Home Page . Be sure to get version 0.7 or later,
and ask the TA (Zhu Qing) for a patch to make it friendlier for
newbies.
If you're using your own machine, and it's a Mac, I recommend getting
Gambit, Marc Feeley's implementation of Scheme. It's free too. You
can get it from the Scheme Repository (see below).
If you're using a PC running Windows or DOS, I'm not sure what the best
Scheme to get is. There are a bunch available at the Scheme Repository.
do not use MIT Scheme or Guile---they're not standard Scheme.
You might try Gambit-C by Mark Feeley, or MzScheme, from Rice.
If you use something besides RScheme, I recommend getting the Meroon
(version 3) object system from the Scheme Repository when we start doing
object-oriented programming. For a few assignments, you may have to
use RScheme under UNIX to take advantage of RScheme's object system,
but for most things you should be able to use Meroon.
The Scheme Repository
The
Scheme Repository at the University of Indiana has lots of free
implementations of Scheme, and various documents on Scheme. If you get
interested in learning more about Scheme than we cover in this class,
that's the place to look.
comp.lang.scheme
There is an internet newsgroup devoted to Scheme, comp.lang.scheme.
The main language we'll be using in this course is Scheme ,
and by default the implementation to use is RScheme , which
is installed on the public cs SPARCs (running Solaris) and RS6000's
(running AIX). On the CS machine, you run RScheme with the command
/p/bin/runscheme .
If you use your own machine, and you're running Linux or Solaris or
any of several other implementations of UNIX, you can get RScheme and
install it on your machine---it's free. You can find it
from
Donovan Kolbly's Home Page . Be sure to get version 0.7 or later,
and ask the TA (Zhu Qing) for a patch to make it friendlier for
newbies.
If you're using your own machine, and it's a Mac, I recommend getting
Gambit, Marc Feeley's implementation of Scheme. It's free too. You
can get it from the Scheme Repository (see below).
If you're using a PC running Windows or DOS, I'm not sure what the best
Scheme to get is. There are a bunch available at the Scheme Repository.
do not use MIT Scheme or Guile---they're not standard Scheme.
You might try Gambit-C by Mark Feeley, or MzScheme, from Rice.
If you use something besides RScheme, I recommend getting the Meroon
(version 3) object system from the Scheme Repository when we start doing
object-oriented programming. For a few assignments, you may have to
use RScheme under UNIX to take advantage of RScheme's object system,
but for most things you should be able to use Meroon.
The Scheme Repository
The
Scheme Repository at the University of Indiana has lots of free
implementations of Scheme, and various documents on Scheme. If you get
interested in learning more about Scheme than we cover in this class,
that's the place to look.
comp.lang.scheme
There is an internet newsgroup devoted to Scheme, comp.lang.scheme.