CS Department Logo

COMS W4115
Programming Languages and Translators
Spring 2012
 Announcements
  Class meets 2:40-3:55pm on Mondays and Wednesdays, 309 Havemeyer Hall.

Class bulletin board: https://courseworks.columbia.edu

 Teaching Staff
 Name   email   Office hours    Location 
Prof. Al Aho   aho@cs.columbia.edu   Mon & Wed 1:00-2:00   513 CSB
 
Jiabin Hu   jh3240@columbia.edu   Thu 9:30-11:30   TA Room, 122 Mudd
Melanie Kambadur   melanie@cs.columbia.edu   Thu 3:00-5:00   TA Room, 122 Mudd
Shuai Sun   ss4088@columbia.edu   Mon & Wed 12:00-1:00   TA Room, 122 Mudd
Feng Zhou   fz2168@columbia.edu   Tue 10:00-12:00   TA Room, 122 Mudd
Yan Zou   yz2437@columbia.edu   Tue 3:00-5:00   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.

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 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 2011 PLT Languages
    Spring 2011 PLT Languages
    Fall 2010 PLT Languages
    Spring 2010 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 2011
Date  Lecture  Reading 
Jan 18   Introduction to PLT  Ch 1  
Jan 18   Introduction to PLT (powerpoint)   Ch 1  
Jan 23   The Basic Elements of Languages and Compilers   3.1-3.3  
Jan 25   Structure of a Compiler   3.1-3.3  
Jan 30   Regular Expressions and Lexical Analysis   3.3, 3.5  
Feb 1   Implementing a Lexical Analyzer   3.1-3.8  
Feb 6   Context-Free Grammars   4.1-4.2  
Feb 6   Homework Assignment #1   Due Feb 20  
Feb 8   Context-Free Grammars and YACC   4.3, 4.4, 4.9 
 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
  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
25 % Midterm
25 % Final

aho@cs.columbia.edu Updated February 1, 2012