|
CISC 260: Programming Paradigms
Resources
Winter 2006
|
The textbook for this course is "Programming Paradigms", available at the Queen's book store. This is a custom text, not available elsewhere. It consists of selections from a Haskell text and a Prolog text. That saves you from having to buy two textbooks. A few students last year told me they would rather have had both textbooks in entirety. If you're interested in buying the original texts, they are:
- Haskell: The Craft of Functional Programming, second edition, by Simon Thompson, ISBN 0-201-34275-8
- Prolog: Programming for Artificial Intelligence, third edition, by Ivan Bratko,
ISBN 0201-40375-7
Both books are available from amazon.ca and chapters.indigo.ca. There are other Haskell and Prolog texts on the market, but they don't all cover the same topics in the same order, so they might not fit as well with this course.
Some of you are experienced Linux users and some others may have experimented with Linux briefly. I'd like to encourage those of you who haven't tried Linux to try it out this term. Knowledge of Linux may be useful in later courses, and it's a nice thing to be able to put on a C.V. when you're looking for a job. I feel that CISC 260 is a particularly appropriate course in which to learn Linux. Both of the programming tools you'll need for the course have good Linux versions. More than that, you can consider the Linux shell (the command line interface) to be a different operating system paradigm -- different from the GUI interfaces you're used to. While learning different programming paradigms, you can be learning a bit about a new operating system paradigm at the same time!
If you don't have a Linux computer, you can access the CASLab Linux computers over the Internet. There are instructions on the CASLab web site. I wrote some notes about using Linux at Queen's for my 121 and 124 students, which may be useful to you:
A Quick Intro To Linux. It contains links to the relevant CASLab web pages, tells you
how to access the CASLab Linux machines and gives a very basic introduction to the Linux command line.
Here are some other more general Linux references that might be helpful. Please note that Linux is an open-source version of the UNIX operating system, so UNIX tutorials apply to Linux as well.
While I encourage you to give Linux a try, it's not a required part of CISC 260. You can do all the course work on Windows or a Mac if you prefer.
The tool to use for running Haskell is Hugs 98. I will be demonstrating the use of Hugs during lectures.
Hugs is available for Windows, Linux and Macintoshes. Both the Windows and Linux versions are available on CASLab machines. You can download the version of your choice for your home computer from http://haskell.cs.yale.edu/hugs.
- For a Macintosh version, click on "downloading" and scroll down to "Mac OS X". I don't have a Macintosh, so I haven't tried this version.
- For a Windows version, click on "downloading" and at the top of the page you'll see a note saying that the current version (March 2005) hasn't been packaged for Windows. Click on the "previous release" link.
- If you've got a machine running Linux, first check and see if you've already got hugs. It may have been
included in your installation. If not, go to the Hugs home page, click on "downloading" and you'll see
several Linux versions.
There are other Haskell interpreters and compilers available, but please don't use them for CISC 260. The Haskell language and libraries are not completely standardized and if we all use the same tool we will avoid huge amounts of confusion. Marking of assignments, quizzes and exams will assume you're writing Haskell for use in Hugs.
- The Hugs home page contains links to documentation about the Hugs tool.
- The Haskell home page contains a huge list of Haskell-related links.
- A Gentle Introduction To Haskell is a nice tutorial.
Please consider this a supplement to the required text, not a possible replacement. It covers Haskell
in a very different way and in a different order.
- The web site for Haskell: The Craft of Functional Programming (the Haskell portion of the custom textbook) contains some interesting Haskell-related information, an errata page, and all of the Haskell code from the book for downloading.
The tool to use for running Prolog is SWI-Prolog. I will be demonstrating the use of this tool during lectures.
SWI-Prolog is available for Windows, Linux and Macintoshes. Both the Windows and Linux versions are available on CASLab machines. You can download the version of your choice for your home computer from
http://www.swi-prolog.org/.
There are other Prolog interpreters and compilers available, but please don't use them for CISC 260. Prolog tools vary greatly and if we all use the same tool we will avoid huge amounts of confusion. Marking of assignments, quizzes and exams will assume you're writing Prolog for use with SWI-Prolog.
- The SWI-Prolog Reference Manual. If you
click on the icon that looks like a card file, it takes you to the table of contents. Chapter 2 is an
overview, including a "Getting Started Quickly" section. (The "likes.pl" file referred to there is in
the "demo" folder inside your installation folder.) Appendix A describes all the built-in predicates.
Section A.1 is particularly useful, since the built-in list manipulation predicates are a bit different
from those described in the text. Section 4.1 explains the notation used in this appendix and elsewhere in
the manual.
- The SWI-PROLOG home page contains documentation for the tool as well as other Prolog-related links
- The
companion website for the Bratko textbook (the second half of the custom text) contains most of the
examples from the textbook ready for download
- Prolog Programming: a do-it-yourself course for beginners from Saarland University in Germany.
- Prolog Tutorial another tutorial, this one from California State Polytechnic University.
When running either Hugs or SWI-Prolog on Windows, you need a text editor to create and edit your programs.
The default is Notepad, which comes with Windows. There are fancier editors you can try if you want. My favorite, which I'm using for in-class demos, is
Notepad++.
Many students in the past have told me they like using
TextPad. I'm sure there are more out there.
Anything that will let you produce a plain text file is OK.
If you're using Linux, there are many, many text editors available. Among long-time Linux/Unix users, choice of text editor can be almost a religious issue! Emacs and Vi are very powerful editors and have many devoted users, but they take a while to learn how to use effectively. If you aren't already acquainted with one of these, I'd stick with a simpler one. If you're using a CASLab Linux machine in the graphics mode, right-click on the desktop, then choose "Programming" and then "Text Editors" and you'll see a long list. Scite is a nice easy one to start with. If you're using the command line only with no graphics (for example, if you're accessing CASLab via Putty), scite and many of the other editors won't work. Type "pico" to the command line and you'll get a very basic but useable editor.
back to home page
This page maintained by
Margaret Lamb,
Queen's University, Kingston, Ontario. Last modified