Page type: course

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