CSE 130 Homepage
Principles of Programming Languages
Winter 2004


The Registrar's office scheduled the final for Monday, 15 March, from 7 to 10 pm, in HSS 2250, the same room in which the lectures are given. Here is an online copy.

An online review of the course is now available, as is a previous year's final (but that course was quite different from this one). You may also find chapter 15 of Sethi useful.

There will be a review session from 10 to 12 am in Center 216 on Saturday, 13 March.

The final exam will cover the whole course and will be weighted 50%. After some discussion with students, we have decided to take the maximum of two weights for the remaining 50%: homework at 35% and midterm at 15%, or else 25% each. The structure of the final will be similar to the midterm, with probably fewer historical questions, and with some emphasis on functional and logic programming.

Instructions for Prolog on ieng9 are available, as are Instructions for BinProlog at CSE.

We are providing webboards for discussing homework problems; click below for

Solutions for the midterm are available in pdf and in postscript. The mean was about 58, with a standard deviation of about 14.

Here is a link to the previous version of this class, which you may find useful for exams, etc., though this year differs in some significant ways.

Please do not ask the TAs, grader, or professor for help doing your homework; this is not fair to other students. Of course, it is acceptable - indeed, it is encouraged! - to ask questions about the content of the course. And naturally you can also ask about bugs in the homework questions (if there are any). Also please check the website before asking us administrative questions; the chances are good that the answer is already here.

Past classes have seen homework answers with strongly overlapping content. In this class, a grade of zero will be assigned for such answers, and there will be more drastic consequences for repeat offenders. You can talk with other students about how to approach homework problems, but you are not allowed to work together on solutions. See the Integrity of Scholarship Agreement, by Scott Baden, and UCSD's official policies on Plagariasm; see also the most recent amended policy (sorry, it's in MS Word). You are expected to abide by these rules; failure to do so can have very serious consequences.


Some general features, history and comparison of programming languages. Abstract and concrete syntax; induction. Types and modules; type systems and module systems. Functional programming and polymorphism; logic programming and Prolog. If time permits, the course will conclude with a brief discussion of internet languages like Java, HTML, JavaCC, JavaScript, Perl, and XML. Click here for an outline of the class

In addition to the usual topics, this course will include some formal methods and a little on social and historical aspects. We consider what languages are, how they are used, what they mean, and how and why they differ, rather than focus exclusively on programming.

TuTh 5:00 - 6:20 pm, HSS 2250
ID 487904, Section A00
Discussion in Center 212, Monday 4:00 - 4:50 pm
Instructor office hours are right after class, in APM 3131.


The following is required:

You should bring this book to class, because I will not always copy material that is in it onto the board during lectures.

The following books are recommended:

The required book should be available at the UCSD Bookstore, and the other books should be on reserve at the Science and Engineering Library. (You can likely buy these books more easily and even cheaply from amazon.com or some other online bookseller). Stansifer is close to the spirit of this course. Pratt and Zelkowitz is good on the connection between languages and machines. McLennan is particularly good for background information on syntactic and historical issues. In addition, the following may be of interest:
Additional Information
  1. Reading assignments
  2. Homework assignments
  3. Some class notes
Be sure to reload these pages frequently, because sometimes they are updated frequently! If you find on the web a Java applet that I actually use to illustrate some aspect of the class, you will get extra credit towards the homework.

Grades will be based on 50% for the final, 25% for the homework, and 25% for the midterm (subject to modification as I get to know the class better).

The class TAs are Sean O'Rourke (office hours: Thursday 9:00-10:30 AM in EBU1 6307), and Fox Harrell (office hours: Tuesday 8:30 - 9:30 AM, in EUB1 6307A); both are doctoral students in CSE.

Prerequesites for this class are CSE 100, CSE 20, CSE 12, and one of the basic programming courses. If you are not familiar with the discrete mathematics in CSE 20, you should review it; a good textbook is Discrete Mathematics with Applications, by Susanna Epp (Brooks/Cole 1999).

If you find bugs in the lecture notes or the textbook, please send me email, because I want to include a comprehensive bug list in the class notes.

To my course page
Maintained by Joseph Goguen
© 2000 - 2004 Joseph Goguen
Last modified: Thu Jan 6 17:03:03 PST 2005