CSE 130 Homepage
Principles of Programming Languages
Winter 2002


BinProlog 4.00 binary for ACS Solaris machines is on the ACS directory for CSE 130, /home/solaris/ieng9/cs130w/public/prolog/bp where everyone in the class should have an account. The prolog/ directory mentioned above also has a file ex1.pl that you may find useful. Some basic notes on using BinProlog 4.00 are at binpro.html. If you have a CSE account, you can also get BinProlog 4.00 binary on CSE Sun workstations (such as beowulf, bintijua, kongo, and APE lab machines) at /net/cs/class/wi99/cse230/prolog/bp, as well as /net/cat/disk1/prolog/bp.

The midterm and final exams are on the class website; the midterm is in postscript.

Graded homwork will be handed out in the discussion section; there are too many students for it to be practical after class when homework is also being handed in. If you cannot make it to the section yourself, please ask a friend to pick up your homework for you.

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.


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.

This course will include a little on social and historical aspects and on formal methods. We consider what languages are, how they are used, what they mean, and how and why they differ, instead of focusing exclusively on programming. Click here for an outline of the class (subject to change as I get a better feeling for the class members).
TuTh 11:10 - 12:30, Center 105
ID 424345, Section A00
Discussion in Solis 104, W 2:30 - 3:20


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). Sethi 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 the larger of: 60% for the final, 20% for the homework, and 20% for the midterm; or else 40% for the final, 30% for the homework, and 30% for the midterm.

The class TAs are Fox Harrell (office hours Wednesday 3:30 - 4:20 PM, in APM 3337D), and Yu Xu (office hours Tuesday, 2:30 - 3:30, APM 3337A).

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 for the texts in the class notes.

My office hours are right after class, or by appointment.

Programming Resources

Binary for BinProlog 4.00 for Sun workstations is on the ACS directory for CSE 130, /home/solaris/ieng9/cs130w/public/prolog/bp where you should all have accounts. If you have a CSE account, you can also find it at /net/cs/class/wi99/cse230/prolog/bp as well as at /net/cat/disk1/prolog/bp. Some basic notes on using BinProlog 4.00 are at binpro.html.

To my courses homepage
Maintained by Joseph Goguen
© 2000, 2001, 2002 Joseph Goguen
Last modified: Wed Apr 3 11:29:35 PST 2002