CS Department Logo

COMS W4115
Programming Languages and Translators
Fall 2009
 Announcements
  Class meets 4:10-5:25pm on Mondays and Wednesdays, 833 Mudd.
On Wednesday, September 30, 2009, Professor Bjarne Stroustrup, the creator of C++, gave a talk, "Evolving a language in and for the real world."

On Monday, November 30, 2009, Professor Bjarne Stroustrup will lecture on concepts and concurrency in the new C++ standard.


Class bulletin board: https://courseworks.columbia.edu
 Teaching Staff
 Name   email   Office hours    Location 
Prof. Al Aho   aho@cs.columbia.edu   Mon & Wed 3:00-4:00   513 CSB
 
Sharadh Bhaskharan   sb3053@columbia.edu   Wed 11:00-1:00   TA Room, 122 Mudd
Peter Lu   yl2505@columbia.edu   Tue 12:30-2:30   TA Room, 122 Mudd
Jyotsna Sebe   js3624@columbia.edu   Mon 2:45-3:45 & Fri 2-3   TA Room, 122 Mudd
Sinan Xiao   sx2117@columbia.edu   Thu 10-12   TA Room, 122 Mudd
 
 Course Overview
  In PLT you will learn the syntactic and semantic elements of the most important 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. This fall Dr. Bjarne Stroustrup will give lectures on the design and implementation of C++.

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. This project will teach you project management, teamwork, and communication skills that you can apply in all aspects of your career.

Examples of past languages created in PLT can be found at
    Spring 2009 PLT Languages
    Fall 2008 PLT Languages

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

 Prerequisites
  Fluency in C and Java
  COMS W3137 Data Structures and Algorithms
  COMS W3261 Computer Science Theory
 Schedule 2009
Date  Lecture  Reading 
Sep 9   Introduction to PLT  Ch 1  
Sep 14   Language Design Issues   K & R, Appendix A  
Sep 16   An AWK Tutorial   AKW: AWK book 
Sep 21   Lexical Analysis   3.1-3.3 
Sep 23   LEX   3.1-3.8  
Sep 28   Implementing a lexical analyzer   3.1-3.8  
Sep 30   Stroustrup C++ talk    
Oct 5   Syntax Analysis   4.1-4.2, 4.9  
Oct 5   Homework Assignment #1    
Oct 7   Top-Down Parsing   4.3-4.4 
Oct 12   Constructing Predictive Parsers   4.4  
Oct 12   Sample Midterm    
Oct 12   Sample Midterm Solutions    
Oct 12   Homework Assignment #1 Solutions    
Oct 19   Bottom-Up Parsing   4.5-4.6 
Oct 21   Parsing Action Conflicts   4.8-4.9  
Oct 26   Syntax-Directed Definitions   5.1-5.4 
Oct 28   Intermediate Representations   6.1-6.3  
Nov 4   Types in Programming Languages   6.3  
Nov 9   Intermediate Code Generation   5.5, 6.4-6.9  
Nov 11   Procedures and Run-Time Storage   7.1-7.2  
Nov 16   Code Generation   8.1-8.5  
Nov 18   Code Generation Algorithms   8.4, 8.6, 8.10  
Nov 18   Homework Assignment #2    
Nov 23   Code Optimization   8.5, 8.7  
 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
  Andrew W. Appel
Modern Compiler Implementation in Java, Second Edition
Cambridge University Press, 2002

  Keith D. Cooper and Linda Torczon
Engineering a Compiler
Morgan Kaufmann, 2004

  Steven S. Muchnick
Advanced Compiler Design and Implementation
Morgan Kaufmann, 1997

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

  Robert W. Sebesta
Concepts of Programming Languages, Eighth Edition
Addison-Wesley, 2008

  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 June 29, 2009