Resources

Logic Programming

On-line books:

  • U. Nilsson, J. Maluszynski Logic, Programming and Prolog (2nd ed). Can be downloaded here.
  • P. Brna, Prolog Programming. A First Course. Can be downloaded here, courtesy of courtesy of Professor Paul Brna from the University of Glasgow. The HTML version of the book, which also contains solutions to the exercises can be viewed here.
  • P. Blackburn, J. Bos and K. Striegnitz, Learn Prolog Now!. The HTML version of the book is available here.
  • M. Spivey, An introduction to logic programming through Prolog. Can be downloaded here courtesy of Professor Michael Spivey from Oxford.

Books in the library:

  • W.F. Clocksin, C.S. Mellish, Programming in Prolog. On reserve at Steacie, call number QA 76.73 P76 C57 2003 (4th edition is good too). You may even consider buying this one (try here if you want to save some cash).
  • I. Bratko, Prolog programming for artificial intelligence. On reserve at Steacie, call number Q 336 B74 2001.
  • L. Streling, E. Shapiro, The Art of Prolog : Advanced Programming Techniques. On reserve at Steacie, call number QA 76.73 P76 S74 1986.
  • K. R. Apt., From Logic Programming to Prolog. On reserve in Steacie, call number QA 76.63 A67 1997.

Software:

We will be using SWI-Prolog for this part of the course. Updates: as discussed in the class, we will be using an older version of SWI-Prolog, namely 5.4.7. It is installed in Prism and can be invoked as /cs/local/lib/pl-5.4.7/bin/i686-linux/pl. If you want to have your own copy, it can be downloaded from here.

Here is some information how to get started using Prolog. This FAQ contains a lot of useful information working with Prolog. Check it out.

Functional Programming

On-line books:

  • J. Hickey, Introduction to Objective Caml. Can be downloaded here, courtesy of Professor Jason Hickey from Caltech.
  • E. Chailloux, Developing Applications with OCaml. Can be downloaded from OCaml website here.
  • T. Fischbacher, H. Fangohr, Tutorial: OCaml for Scientific Computation. This excellent on-line tutorial, can be viewed here.
  • A little note from UPenn on how to style your OCaml code is here. More detailed guide is here.

Books in the library:

  • G. Cousineau, M. Mauny, The Functional Approach to Programming. On reserve at Steacie, call number QA 76.62 C68 1998.

Since OCaml shares a lot with another programming language ML, you may find the following books on ML useful as well:

  • R. Harper, Programming in Standard ML. Available for download here.
  • J.D. Ullman, Elements of ML Programming. On reserve at Steacie, call number QA 76.73 M6 U45 1998.
  • L.C. Paulson, ML for the Working Programmer. On reserve at Steacie, call number QA 76.73 M6 P38 1996.

Software:

We will be using the Objective Caml version 3.10.2 for this part of the course. OCaml is installed in Prism (in /cs/local/packages/ocaml/bin). And, of course, you can install your own copy (available from OCaml website).

Here is some information on how to use OCaml on Linux (I beleive Windows is very similar). Ignore the course-related information in the document, i.e. you don't have to use Emacs, you can edit files any way you prefer.