CMSC 22630/32630
Advanced Implementation of Computer Languages

General Information

Course: CMSC 22630/32630
Advanced Implementation of Computer Languages
Instructor: John Reppy Hinds 033
Lecture: TR 12:00-2:30
Ry 277

Overview

This course covers advanced topics in programming language implementation, such as control-flow analysis, abstract interpretation, partial evaluation, advanced optimizations, runtime system representations, garbage collection algorithms, and foreign-function interfaces. The course will involve reading papers on various aspects of advanced language implementation and an implementation projecct that involves adding an advanced analysis or optimization to an existing compiler. It is aimed at advanced undergraduate and graduate students who have already taken an undergraduate compiler course (such as CMSC 22610-22620). The programming project will require knowledge of Standard ML.

Project Ideas

The following is a list of possible projects with pointers to the literature:

Text books

The course does not have a required text, but the following books provide a useful reference for programming in Standard ML:
Title: ML for the Working Programmer (2nd Edition)
Authors: L.C. Paulson
Publisher: Cambridge University Press, 1996
 
Title: The Standard ML Basis Library
Editors: Emden Gansner and John Reppy
Publisher: Cambridge University Press, 2004

Links

The Standard ML Basis Library
Online reference manual for the SML Basis Library

The SML/NJ Compilation Manager (CM)

Programming in SML'97: An on-line tutorial

The BOL IR (Draft of 2004-10-21)
A description of the Moby compiler's intermediate representation.

A tarball of Moby programs for testing

Academic Honesty

[The following is due to Stuart Kurtz]

The University of Chicago is a scholarly academic community. You need to both understand and internalize the ethics of our community. A good place to start is with the Cadet's Honor Code of the US Military Academy: "A Cadet will not lie, cheat, or steal, or tolerate those who do." It is important to understand that the notion of property that matters most to academics is ideas, and that to pass someone else's ideas off as your own is to lie, cheat, and steal.

The University has a formal policy on Academic Honesty, which is somewhat more verbose than West Point's. Even so, you should read and understand it.

We believe that student interactions are an important and useful means to mastery of the material. We recommend that you discuss the material in this class with other students, and that includes the homework assignments. So what is the boundary between acceptable collaboration and academic misconduct? First, while it is acceptable to discuss homework, it is not acceptable to turn in someone else's work as your own. When the time comes to write down your answer, you should write it down yourself from your own memory. Moreover, you should cite any material discussions, or written sources, e.g.,

Note: I discussed this exercise with Jane Smith.

The University's policy, for its relative length, says less than it should regarding the culpability of those who know of misconduct by others, but do not report it. An all too common case has been where one student has decided to "help" another student by giving them a copy of their assignment, only to have that other student copy it and turn it in. In such cases, we view both students as culpable and pursue disciplinary sanctions against both.

For the student collaborations, it can be a slippery slope that leads from sanctioned collaboration to outright misconduct. But for all the slipperyness, there is a clear line: present only your ideas as yours and attribute all others.

If you have any questions about what is or is not proper academic conduct, please ask your instructors.


Last revised: October 21, 2004.