Principles of Programming Languages (CSCI 3155), Summer 2007

Programming languages are the most general means we have for interacting with computers. When we encounter a computational problem whose solution escapes the tools we have at our disposal, we must therefore fall back to either implementing a new tool, or extending an existing tool, using a programming language. However, there are thousands of languages, and new ones are constantly being added. How, then, can we hope to quickly understand a language that is being forced upon us, and which we have never even heard of? And how can we hope to choose among this enormous pool of languages if the choice is ours? Fortunately, the vast majority of programming languages consists largely of a comparatively small number of common principles. In this course, you will learn about the most important of these principles. Knowing these principles, you should then find it much easier to learn new programming languages, to evaluate languages you have learned, and also to implement your own domain-specific languages.


News


Administrative information

Instructor:Christoph Reichenbach (Christoph(dot)Reichenbach(at)colorado(dot)edu)
Office:ECCR 1B05E
Regular office hours location:ECCR 1B06
Office hours:Mon/Thu 3pm - 4pm, Tue/Wed 4:30pm - 5:30pm or by appointment
Class times:11:00am - 2:45pm, Mon-Thu, 4 June - 5 July
Class location:ECCR 105
Class main web site URL:http://www-plan.cs.colorado.edu/creichen/csci3155-s07

Class structure

A detailed detailed class schedule is now available.

This class uses the Conversational Classroom strategy: instead of you listening to me read a book to you, we will use the classroom as a resource for answering questions and discussing concepts. To guide this discussion, mandatory readings will be assigned for every class. Recent research (cf. this article) indicates that this approach is a much better way to learn than the traditional "lecture" style.

We will use the PL Detective to learn about some principles of programming languages. The PL Detective is a programming language implementation with "flexible behaviour"- this will allow us to explore many language concepts by trying them out, rather than by just reading about them. The PL Detective has been used in many previous instances of this course, with great success (cf. this article). The PL Detective was originally developed by Amer Diwan.

Finally, Group assignments will allow you to work together with your peers to apply the concepts discussed on that day (and possibly some concepts discussed previously) to concrete problem statements.

The structure of every class will be roughtly as follows:

There will be two 15 minute breaks at opportune points.
All mobile phones and pagers must be turned off or muted during class.

A more detailed class schedule is also available.


Book

The main text for this course is "Concepts of Programming Languages", by Robert Sebesta (8th edition), ISBN 0321493621.

Assignments and Grading

As mentioned above, most classes will incorporate a worksheet assignment. Your results from these assignments, together with midterm and final examinations, will determine your grade. The table below summarises the impact your individual scores will have:
Assignments20%
Midterm40%
Final40%

Assignments

20% of your grade will derive from group assignments. These assignments may come in one of two forms: For both kinds of assignments, you are encouraged to collaborate with other students, and to use any resources at your disposal to find an answer. I strongly recommend that you formulate "prose" parts (i.e., "explain X") all by yourself, since this will help you prepare for the exams, though this will not be enforced. For online assignments (which we will also do during class), you will need group accounts on our machines. Each group must consist of two or three students; each group submits precisely one assignment for grading. Details will be announced during class.
All assignments are due at 6pm on the day they are handed out, though I recommend that you go easy on yourselves and try to finish them during class. If you cannot finish them during class, you can return them during office hours, or you can put them into the instructor's mailbox in the ECOT tower on the 7th floor. Assignments will be returned to you at the beginning of the next lecture; part of the lecture will then be dedicated towards discussing particular issues regarding the assignment. No grades will be changed during class; if you believe that your grades are not fair and would like them adjusted, you must attend office hours.
Exam modalities have their separate page.

Interesting Links


Previous courses and acknowledgements

This course has benefitted heavily from previous courses taught on the same material, specifically by courses taught by Amer Diwan (Spring 2001, Spring 2002, Fall 2003, Spring 2004, Fall 2004) and Daniel von Dincklage (Summer 2005). You may want to check out their course web page to prepare yourselves fort future assignments and examinations.