198:516 - Programming Languages and Compilers II
Spring 2006
Prof Barbara G. Ryder
Announcements
April 19, 2006: I have edited the "results to report" section
of Project 2 because of some typos that left the words
"synchronization elimination" in the text in unfortunate
places. Please reread to make sure you are collecting the correct metrics.
April 14, 2006: There will be no class on Wednesday, April 19th
or Monday, April 24th. We will have a double period class on Monday,
April 17th to make up the first cancelled class, and on Monday, May 1st
to make up the second cancelled class.
March 27, 2006: Please check the lecture notes page frequently;
today I added to the notes from last Monday's lecture and posted the
new notes on the lecture page.
March 22, 2006: The exam will be held on Monday, April 10, 2006.
February 21, 2006: Next Monday, February 27th, we will go over
written homework #2 in class; come prepared to show your solutions to
the problems.
February 15, 2006: Next Monday, February 20th, we will have an
extended makeup class from 4:30pm-7:00pm. Class on Monday March 6,
2006 will be cancelled due to Prof Ryder's travel.
January 24, 2006: Prof Ryder's office hours will be on
Thursdays from 4-6pm (or by arrangement). We will need to schedule
makeup classes later in the term for February 6th and probably for
March 24th.
January 18, 2006: The first class of CS516 will be held in Core
A from 4:30-6:00pm.
Course Description
This term the course will concentrate on static and dynamic
analyses and transformations for software tools and compilers for
object-oriented languages. The goal is to cover a foundation of
compiler technology: analyses, program representations,
transformations, especially those which are applicable to tools such as
test harnesses, profilers, change impact estimators, etc.
The course will emphasize both analyses and clients of those analyses.
We will cover:
the classical machine independent analyses
and optimizations for imperative languages (e.g., def-use chains, dead
code elimination, common subexpression elimination, constant
propagation, code motion),
internal representations of programs (e.g., Static Single
Assignment form)
the theoretical foundations which insure the correctness of
optimizing transformations, namely, abstract interpretation and
monotone data flow frameworks,
specific analyses aimed at OOPLs (e.g., points-to analysis
with and without context sensitivity),
optimizations aimed specifically at OOPLs (e.g., inlining,
method specialization),
modern profiling methods (i.e., execution-time analyses)
Course work
There will be one comprehensive examination near
the end of the semester (probably in April) which will count 50% of
the grade. During the semester, we will do 2 projects, the last one
in teams of 2 students each. Both projects will be documented by a
written report of findings. The second (and larger) of the projects
will be presented to the class jointly by both team members at the end
of the term. These projects will count for 50% of your grade.
Specific project topics will be selected in consulation with the
instructor.
In addition, there will be bi-weekly written homeworks which will be
self-assessments with answers made available online, to make sure you grasp
the material being presented. These homeworks will help prepare you for
the exam.
Helpful Materials
Any advanced compiler text will cover the classical analysis
problems and optimizations. The standard is
A.V. Aho, R. Sethi, and J.D. Ullman, Compilers: Principles,
Technique and Tools, Addison-Wesley, 1986 (the red dragon book), or
A. Appel with Jens Palsberg, Modern Compiler Implementation in
Java, 2nd Edition, 2002.
We also will read many research papers for course material
including:
T.J. Marlowe and B.G. Ryder, Properties of Data Flow
Frameworks, Acta Informatica, volume 28, 1990, pp 121-163.
(a good overview of the mathematical framework properties which lead
to eventual, and fast, convergence of fixed point iteration)
Administrative Details
Instructor:
Barbara G. Ryder
(ryder@cs.rutgers.edu)
Office: CoRE 311, 732-445-3699
Office hours: TBD
Class Meeting Time:Mon-Weds 4:30pm-6:00pm, Core A
PROLANGS Light Seminar on Current Research on Object-oriented Software
Systems Thusdays,1:30-3:00pm, Core B
Useful Links
- LCSR
Computing Facility
This home page includes documentation for
both Macs and Unix. Documents cover topics such as "Getting Started",
"Basic Unix Commands", "Using the X Window System", "Programming in C
Under Unix", "Electronic Mail", and "Working at Home".
- PROLANGS
Home page of the programming language research group at
Rutgers.
- On how to write a successful paper, please see Bill Pugh's article
Advice to Authors of Extended Abstracts
Last updated by Barbara Ryder at 1:06pm on April 19, 2006