A number of resources are available here ranging from links to interpreters to interesting language related items. All of the languages we use in class are freely available for Windows, OS X, and Linux.
An excellent introductory Java tutorial by the folks that brought you Java initially. Specifically look at basic language features, object-oriented features, writing Java applets, and a section on GUI design. The tutorial is a part of the Java site mentioned above. I quite like this tutorial, particularly for people who already know C++ or programming in another C-style language.
A source for all things Java from the folks at Sun who originated the language. Tons of material here including tutorials and libraries. Rather than ask you to purchase one of the thousands of Java books, I refer you to this site.
The Eclipse cross-platform, cross-language development envionment. Excellent resource for developing Java programs.
A source for all things Scheme related. Several implementations, reference guides, examples and other interesting things. Of particular interest is Guile, the GNU extension language that is a Scheme dialect. Highly recommended.
The Scheme Programming Language - An online version of a text by Kent Dybvig
A comprehensive bibliography on Scheme related research.
Another site with lots of scheme information.
An excellent paper by Richard Gabriel that goes trough the derviation of the Y combinator. Definitely not required reading, but those of you who are interested in advanced techniques will find this interesting.
A source for all things Haskell related. You will find compilers and interpreters, development tools, tutorials and examples here. If you are interested in pursuing Haskell further, there is also a list of ongoing Haskell projects and communities. If you look closely, you may find KU in there...
There are numerous interpreters for the Haskell language. Amoung the most popular are GHC and HUGS. Links to both systems with RPMs and source are available from this page. GHC is the interpreter we will be using in class, although most of the projects should perform similarly in HUGS.
A compressed tarball containing the latest and greatest emacs mode for Haskell. There are a couple of other Haskell modes for emacs, but this is the one I use. I don't know if it works under xemacs or not.
A comprehensive bibliography of work people are doing related to Haskell programming.
Another site with lots of information on Haskell
Website for a book under development on practical applications of Haskell. The book will eventually be published by O'Reilly, thus I'm reasonably sure the "real world" description should be accurate.
Some random thoughts on how to test and demonstrate your code. Although specific to Java, most of the techniques apply more generally. Take a look at this before you hand in your homeworks to get an idea of what we expect. You will learn much more about testing in your Software Engineering course - this document is intended to get you started along the right path.
FAQ file that describes how Java is used and accessed on the EECS Linux machines.
FAQ file that describes how Scheme is used and accessed on the EECS Linux machines.
FAQ file that describes how Haskell is used and accessed on the EECS Linux machines.
A solution for Homework 3. Please excuse the sparseness of the documentation.
Test functions for Homework 3
A solution for Homework 4. Please see the blog for additional details
Homework 5 test functions. Read the documentation!
Graham Hutton's wonderful paper on fold and unfold for defining program semantics
Notes on Graham Hutton's paper as well as executable code
Duponcheel's paper on writing modular interpreters
Notes on Duponcheel's paper including exectuable code