CSC 580 - Theory of Programming Languages, Spring, 2009 - Old Main 140, Monday 6-8:50 PM.

Dr. Dale E. Parson
Office Hours: M 5-6, Tu 10-11, W 10-12, Th 2-3, and by appointment

First day handout with language links. Official syllabus.
Links to language websites.
The Python website is at
Documentation is at
There is a good on-line tutorial and reference called Building Skills in Python.
We will be using a 2.4, 2.5 or 2.6 version of Python, not 3.x.
Python on bill is at /opt/csw/bin/python.

Lecture notes

Week 2 slides on Python Data Types and Control Abstraction (PR Chapters 7 and 8).
Week 3 slides on Data Abstraction and Object Orientation in Python (PR Chapter 9).
Week 4 slides on intermediate virtual machines and threaded intermediate code.
Week 9 slides on ML and Haskell functional languages.
Example code is at /export/home/faculty/parson/ThryLang on
There are also some examples at
Programming Language Pragmatics web site.
Programming Language Pragmatics, Second Edition slides (password protected).


Assignment 1 on Python eval(), apply(), explicit type coercion and a sorting function, is due at 11:59 PM on February 2, 2009 for CSC 580.
Assignment 2 on Implementing an indirect threaded virtual machine in Python is due at 11:59 PM on February 23. Here is the documentation on the Forth-like STEP VM
    and a paper on implementing Forth using g++ computed gotos
    and a slides on Sun's HotSpot Just-in-time (JIT) compilation technology.
Assignment 3 on concurrent, purely functional programming in Python
is due at 11:59 PM on March 26. Students are also working on individual projects and preparing for 30 minute presentations during this time.
Here are the guidelines for the Assignment 5 programming exercises and 30 minute talks.

Documentation and other external links  has the gmake manual.
An introduction to Python by its creator.
A Python tutorial by its creator.

Download site for Python, use latest stable 2.6.n version, not 3.x!
Download site for Eclipse IDE/Debugger for Java.
       Use the "Eclipse IDE for Java Developers," then  update it as follows.
       Download and unzip Eclipse.
       Go into the Eclipse directory and run the eclipse executable file.
       Once Eclipse is running, click Help -> Software Updates -> Available Software -> Add site.
       Add as a site, click the boxes to add packages.
       Eclipse should require a restart.
       Window -> Preferences -> Pydev -> Debug -> Interpreter Python for interpreter.
       "New" to add Python 2.4, 2.5 or 2.6 interpreter.
       We will go over Pydev Projects, source editing and debugging in class.