CS Department Logo

COMS W4115
Programming Languages and Translators
Spring 2013
 Announcements
  Class meets 2:40-3:55pm on Mondays and Wednesdays, 535 Mudd.

Courseworks site: https://courseworks.columbia.edu

Piazza bulletin board: https://piazza.com/class#spring2013/comsw4115

On February 18, 2013, Dr. Robert L. Martin, former CTO of Bell Labs, gave a lecture on Software Project Management. Bob argued that producing a high quality programming product on time requires the disciplined application of well-tuned individual and team skills. While often repackaged with fancy new, consultant-expensive names, these skills are based on decades-old ideas. Intriguingly, many programmers and programming teams ignore these techniques and assume, by magic, they will avoid repeating history's disasters. There is no magic.

On April 24, 2013, Maria Ayako Taku gave a lecture on Functional Programming Languages. Maria discussed the influence of the lambda calculus on functional languages and showed how to implement an interpreter using the functional language OCaml.

Languages Created during the Spring 2013 Semester

  • The languages created during the Spring 2013 semester and the associated project presentations can be found here.
 Teaching Staff
 Name   email   Office hours    Location 
Prof. Al Aho   aho@cs.columbia.edu   Mon & Wed 1:00-2:00   513 CSB
 
Karan Bathla   kb2658@columbia.edu   Mon & Tue 4:00-5:00   TA Room, 122 Mudd
Melanie Kambadur   melanie@cs.columbia.edu   Thu 10:00-12:00   TA Room, 122 Mudd
Jared Pochtar   jrp2181@columbia.edu   Fri 4:30-6:30   TA Room, 122 Mudd
Maria Taku   mat2185@columbia.edu   Tue & Thu 12:30-2:30   TA Room, 122 Mudd
 
 Course Overview
  In PLT you will learn the syntactic and semantic elements and the computational models 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, as well as trends in the evolution of programming 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. This project will teach you computational thinking in language design as well as 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
    Fall 2012 PLT Languages
    Spring 2012 PLT Languages
    Fall 2011 PLT Languages
    Spring 2011 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 2013
Date  Lecture  Reading 
Jan 23   Introduction to PLT  Chs 1 and 2  
Jan 23   Introduction to PLT (powerpoint)   Chs 1 and 2  
Jan 28   The Basic Elements of Languages and Compilers   Chs 1 and 2  
Jan 30   Structure of a Compiler   3.1-3.3  
Feb 4   Regular Expressions and Lexical Analysis   3.3, 3.5  
Feb 4   Homework Assignment #1   Due Feb 13  
Feb 6   Implementing a Lexical Analyzer   Ch 3  
Feb 11   Context-Free Grammars   4.1, 4.2  
Feb 13   Parsing Context-Free Grammars   4.3, 4.4, 4.9 
Feb 18   Software Project Management   Robert L. Martin 
Feb 20   Predictive Top-Down Parsers   4.4 
Feb 25   Bottom-Up Parsing   4.5, 4.6 
Feb 25   Homework Assignment #2   Due Mar 6 
Feb 27   Parsing Action Conflicts   4.8, 4.9 
Mar 4   Syntax-Directed Translation   5.1-5.5  
Mar 6   Intermediate Representations   6.1-6.3  
Mar 11   Midterm Review    
Mar 25   Intermediate Code Generation   6.1-6.3 
Mar 27   Translation of Statements   6.4-6.8, 7.1 
Apr 1   Procedures   7.1-7.2  
Apr 1   Homework Assignment #3   Due Apr 10  
Apr 3   Run-time Environments   7.1-7.2, 7.6.1 
Apr 8   Code Generation   8.1-8.5  
Apr 10   Code Generation Algorithms   8.2-8.4, 8.6, 8.8, 8.10  
Apr 15   Code Optimization   8.5, 8.7, 9.1  
Apr 15   Homework Assignment #4   Due Apr 24  
Apr 17   Introduction to The Lambda Calculus    
Apr 22   The Lambda Calculus    
Apr 24   Functional Programming Languages   Maria Ayako Taku  
Apr 29   Sample Final  
Apr 29   Sample Final Solutions  
 Required Text
  Alfred V. Aho, Monica Lam, Ravi Sethi, and Jeffrey D. Ullman
Compilers: Principles, Techniques, and Tools, Second Edition
Addison-Wesley, 2007, ISBN 978-0321486813
 Additional References
  Alfred V. Aho and Jeffrey D. Ullman
Foundations of Computer Science, C Edition
W. H. Freeman, 1995
An online version of this book is available here.

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

  Keith D. Cooper and Linda Torczon
Engineering a Compiler, Second Edition
Morgan Kaufmann, 2012

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

  Michael L. Scott
Programming Language Pragmatics, Third Edition
Morgan Kaufmann, 2009

  Robert W. Sebesta
Concepts of Programming Languages, Tenth Edition
Pearson/Addison-Wesley, 2012

  Stephen Edward's CS4115 Web Page
 Class Policies
  Grading 40 % Project
10 % Homework
20 % Midterm
30 % Final

aho@cs.columbia.edu Updated May 19, 2013