Dr. Adam Brooks Webber
This page accesses supporting material for the book. The page was last updated on 5/16/2012. (If you are not yet familiar with my book, you can learn about it by reading the preface.)
Please note that the book is now in the second edition. Instructors should use the links below to get updated versions of the slide sets and source code. (Instructors should also contact the publisher for updated sample solutions.) There is a summary of changes for those moving from the first edition to the second.
A list of errors in the book (pdf), containing all those known to the author as of May 16, 2012.
Here are PowerPoint slides for lectures, one set for each chapter of the book.
Here is the source code from the book, organized by chapter.
All language systems required by the book are available for free. Platforms include Windows and a variety of Unix-based systems, including Mac OS X.
The implementation of ML used in the book is Standard ML of New Jersey. You can download it from the Standard ML of New Jersey web site.
The Standard ML of New Jersey web site also has links for downloading a nice emacs mode for ML. It autoindents your ML code and runs the ML language system as an inferior process. (In past semesters, few of my students made use of this, so I have stopped installing it for them. However, experienced emacs hackers might consider installing it for themselves.)
There are several good ML tutorials available on the Web. A tutorial developed by Stephen Gilmore is called Programming In Standard ML '97: An On-line Tutorial. The text for this one is very well organized. Robert Harper has a very extensive introductory on-line text, Programming in Standard ML, that includes lots of examples. Andrew Cumming of Napier University in Edinburgh has written a tutorial site for ML called A Gentle Introduction to ML. There are many small tutorial exercises, and if you set things up right you can cut from them and paste into an ML session.
The implementation of Java used in the book is the basic Java Development Kit (JDK), using the simple command-line compiler, javac. You can download this for Windows and Unix platforms from Oracle's Java site; Java SE, the Standard Edition, is the one you want. Most Mac OS X systems already have the necessary java and javac commands; to check, run the Terminal application and try the command "javac -version". It should show the version information for the javac tool, and any version 1.5 or later will work fine. If it shows an earlier version, or if it gives a "command not found" error message, then you will need to install tools maintained by Apple at the Mac Dev Center . This will require registering as an Apple Developer, but it's free.
Those who have already learned to program in Java may be familiar with a integrated development environment such as Eclipse. That will work fine too. In fact, if you are planning to do any Java programming beyond the elementary level covered in the book, it would be a good idea to learn how to use Eclipse, which is very good, very popular, and free. You can download it here.
The classic on-line tutorials for more experienced programmers are the Java Tutorials, which are also available in book form. These are very thorough tutorials with many examples.
I wrote a Java tutorial called The Java Trainer when I was teaching at Western Illinois University. It delivers entirely Web-based, on-line puzzles integrated with the text. Unfortunately it is meant to teach rudimentary programming to people who have never programmed before, so it is way too elementary to supplement the book. Still, students may find some of the puzzles challenging.
The implementation of Prolog used in the book is SWI-Prolog from the University of Amsterdam. You can download it from the SWI-Prolog web site.
A useful Web resource is Paul Brna's online Prolog textbook. For general Prolog information and lots of source code, check out the Prolog Repository at CMU.
Don't miss the on-line collection of programs to print the lyrics of that heart-warming classic song, "99 Bottles of Beer on the Wall". Over 1300 different programming languages are represented.
You can email me here with comments and questions.