CIS505 Fall 2010 Lecture Notes

CIS505 Lecture Notes: Introduction to Programming-Language Paradigms

Here is a set of lecture notes meant to serve as a Programming-Language Principles/Paradigms text. There are some rough edges here, but remember that I am saving you $100 that you would otherwise be spending for a textbook....

Here are some links to programming languages that are likely to be used during the course:

  1. Python: Python is a dynamically typed and structured language, and it supports imperative, declarative, and o-o programming. It is great for doing small- and medium-sized programs quickly.
    * Here is some tutorial material and a summary of Python's basic capabilities
    * Your computer might already have Python installed; please read Installing Python to check for Python and install it if needed.
    * Here is the download page for a free copy of Python. Download version 2.6.5 or 2.7.0. (The 3.X versions use syntax incompatible with the examples in the course notes.)
    * This nice on-line book, The Python Standard Libary, shows you how to use Python to do clever systems hacking and gluing, the sort of stuff not normally taught in courses but is hugely useful in practice.

  2. ML: ("MetaLanguage") is a functional language that cleverly combines compile-time type checking with dynamic data structures.
    * Here is some on-line reference material: (1) (2) | (3)
    * You will likely need to install ML on your computer; try one of these:
    • SML New Jersey (claims to work on any of Windows, Mac, Linux)
    • Moscow ML. (supposedly a ``lighter'' version of ML; works with Windows and Linux)
    • MLton (Linux, Unix, Mac)

  3. Prolog: The classic logic-programming language. You must see it to believe it.
    * Here is a good, easy-to-install implementation:
    * Here is some intro material on Prolog that I wrote for my CIS301 students.
    * This material is oriented towards using SWI Prolog: PLPM, St. Etienne, France | CSC485, Univ. Toronto
(We assume you already know well either Java or C#. If not, please go study one of them.)
David Schmidt,  das at,   July 2010
Creative Commons License This work is licensed under a Creative Commons License.

Sample exercises from Fall'09