MIME-Version: 1.0 Server: CERN/3.0 Date: Tuesday, 07-Jan-97 15:22:55 GMT Content-Type: text/html Content-Length: 9314 Last-Modified: Thursday, 19-Dec-96 17:51:03 GMT CS 345 (Wilson)---Class Page

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

  1. Syllabus

  2. Lecture Notes on Declarative Programming .

  3. 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.

  4. 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.

  5. First set of Practice Questions . There's also a version with answers .

  6. Second set of Practice Questions . There's also a version with answers .

  7. Quiz 1 (with answers) .

  8. Third set of Practice Questions . There's also a version with answers .

  9. 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.

  10. Homework assignment on writing merge sort in Scheme, and my solutions to the first three problems. (Commented Scheme code.)

  11. Notes on a simple reader, including regular expressions, BNF grammar, and the actual code in Scheme.

  12. 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.

  13. 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.

  14. Scheme code for a simple object-based programming system based on classes and generic procedures (inheritance not implemented yet).

  15. Notes on type systems, including inheritance and subtyping.

  16. Take-Home Quiz and the answers (and some explanations).

  17. 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.