CS Department Logo

COMS W4115
Programming Languages and Translators
Spring 2008
 Announcements
  Class meets 4:10-5:25pm, Mondays and Wednesdays, 602 Hamilton.
Class bulletin board: https://courseworks.columbia.edu
On Wednesday, January 30, Dr. Kedar Namjoshi of Bell Labs lectured on concurrency in languages.

Project presentations will occur April 28 and 30. See presentation suggestions for some hints on how to organize your presentation.
Final project reports are due on May 5. See suggestions for project report.
Final exam will be in class on May 5.
Project demos will occur May 12 and 13 in the CS conference room.

Project Presentations

Pictures from class courtesy of Gaurav Gautam, April 30, 2008.
 Teaching Staff
 Name   email   Office hours    Location 
Prof. Al Aho   aho@cs.columbia.edu   Mon 2-3 & Wed 3-4   513 CSB
Gaurav Gautam   gg2279@columbia.edu   Thu 11-12, Fri 11-12   TA Room, 122 Mudd
Akshay Pundle   ap2503@columbia.edu   Tue 2-3, Thu 1-2      TA Room, 122 Mudd
Gaurav Gaonkar   ggp2109@columbia.edu   Mon 11-12, Wed 12-1      TA Room, 122 Mudd
 
 Course Overview
  In PLT you will learn the syntactic and semantic elements of the most popular modern programming languages as well as the algorithms and techniques used by compilers to translate them into machine and other target languages.

The course will cover imperative, object-oriented, functional, logic, and scripting languages. A highlight of this course is a semester-long programming project in which you will work in a small team to create and implement an innovative little language of your own design.

The concepts, techniques, and tools that you will learn in this course have broad application to many areas of project management and software development outside of programming languages and compilers.

 Prerequisites
  Fluency in C and Java
  COMS W3137 Data Structures and Algorithms
  COMS W3261 Computer Science Theory
 Schedule 2008
Date  Lecture  Reading 
Jan 23   Introduction to PLT  Ch 1  
Jan 28   Language Design Issues   Java Whitepaper  
Jan 30   Kedar Namjoshi: Concurrency    
Feb 4   Language Processing Tools   Ch 1 
Feb 6   Lexical Analysis   Ch 3  
Feb 11   Lex   Ch 3  
Feb 13   Implementing a Lexical Analyzer   Ch 3  
Feb 18   Syntax Analysis   Ch 4  
Feb 20   Top-Down Parsing   Sects. 4.3, 4.4  
Feb 25   Constucting Predictive Parsers   Sect. 4.4  
Feb 27   Bottom-Up Parsing   Sections 4.5, 4.6  
Mar 3   Homework Assignment #1    
Mar 3   Parsing Action Conflicts   Sections 4.8, 4.9  
Mar 5   Syntax-Directed Translation   Sects. 4.9, 5.1-5.3 
Mar 10   HW1 Solutions    
Mar 12   Midterm    
Mar 12   Midterm Solutions    
Mar 24   Syntax-Directed Definitions   5.1-5.4  
Mar 26   Syntax-Directed Translation Schemes   5.5  
Mar 31   Intermediate Representations   6.1-6.3  
Apr 2   Types in Programming Languages   6.3, 7.1  
Apr 7   Arrays, Boolean Expressions, Flow of Control   6.4, 6.6  
Apr 9   Run-Time Storage Allocation   7.1, 7.2  
Apr 14   Homework Assignment #2    
Apr 14   Code Generation   8.1-8.5  
Apr 16   Optimization of Basic Blocks   8.5-8.7, 8.10  
Apr 21   Code Generation Algorithms   8.4, 8.6, 8.10    
Apr 23   Scope of Final Exam    
Apr 28   Suggestions for Project Report    
Apr 28   HW2 Solutions    
Apr 28   Project Presentations    
Apr 30   Project Presentations    
 Required Text
  Alfred V. Aho, Monica Lam, Ravi Sethi, and Jeffrey D. Ullman
Compilers: Principles, Techniques, and Tools, Second Edition
Addison-Wesley, 2007, ISBN 0-321-48681-1
 Additional References
  Keith D. Cooper and Linda Torczon
Engineering a Compiler
Morgan Kaufmann, 2004

  Andrew W. Appel
Modern Compiler Implementation in Java, Second Edition
Cambridge University Press, 2002

  Michael L. Scott
Programming Language Pragmatics, Second Edition
Morgan Kaufmann, 2006

  Steven S. Muchnick
Advanced Compiler Design and Implementation
Morgan Kaufmann, 1997
  Stephen Edward's CS4115 Web Page
 Class Policies
  Grading 40 % Project
10 % Homeworks
20 % Midterm
30 % Final
  Late Policy All assignments can be handed in one week after they are due for 50% credit.

aho@cs.columbia.edu Updated Tuesday, March 4, 2008