CS690A 
 Seminar in Advanced Compiling and Programming
  Systems 
 
  or 
 
  ``So you want to know how to make Java run fast'' 
 Course description 
 
  Spring 1999
 
Instructor: Dr. Tony Hosking (hosking@cs.purdue.edu) 
 
Meeting times: MWF 9:30-10:20, CS G066, but we may negotiate a time change 
 
Credits: 3 
 
 
This  seminar course   will focus  on   compiler  and runtime principles   and
techniques needed  to implement advanced object-oriented programming languages
such as Java.   Modern  language features   such as  data  abstraction, object
orientation,   garbage  collection, dynamic  loading,  and  threads  offer new
challenges to language implementors, if  languages including such features are
to continue to perform comparably  to traditional languages.  The course  will
cover current   and    recent research  in programming   language   design and
implementation,  with readings taken  from  the research literature.  Specific
topics will include (among others):
-  advanced program analysis and optimization techniques
 -  bytecode interpretation and virtual machines
 -  dynamic ("JIT") compilation
 -  memory management (garbage collection)
 -  thread management
 
The goal is for students to become familiar with developments in language
implementation that have delivered languages such as Java.  Such knowledge is
currently in very high demand in industry - it will serve you well even if
you do not plan to go on to do research in programming languages.  The course
is offered at the 600-level to indicate its place in the sequence after CS502.
- Prerequisites:
 -  CS502 or equivalent, or familiarity with programming
  language implementation techniques
 - Workload and Grading:
 -  Participants will be expected to read 1-3 papers
  per week.  One or more attendees will be responsible for presenting a 20-30
  minute summary of each paper.  Discussion of the papers will then follow.
  You should think about what you read and participate actively in class
  discussions.  Just to be sure, 20% of the course grade will be based on
  your concise summary and discussion (no more than a page) of any 8 of the
  assigned papers, 10% on your participation in class, and 30% on your
  presentations.  The remaining 40% of the course grade will be based on
  either a software project and writeup, or a research report, on an approved
  topic of your choosing.  You are strongly encouraged to work in groups on
  the term project/report.
 
 
 
Antony Hosking 
Tue Nov 24 11:25:45 EST 1998