CS Department Logo

COMS E6998-1
Advanced Topics in Programming
Languages and Compilers
Fall 2014
  Class meets 4:10-6:00pm, Mondays, 253 ENG.
First class is on Monday, September 8, 2014.

Class website: https://www.cs.columbia.edu/~aho/cs6998
Courseworks website board: https://courseworks.columbia.edu
Piazza bulletin board: https://piazza.com/columbia/fall2014/cs69981
 Teaching Staff
 Name   email   Office hours    Location 
Prof. Al Aho   aho@cs.columbia.edu   Mon & Wed 3:00-4:00   513 CSB
 Course Overview
  This will be a project-oriented course focused on advanced topics in programming languages and compilers.

Topics will include detailed studies of new programming languages such as Swift and Java 8 and advanced compiling and optimization techniques used in modern programming language translators.

The course requirements are in-class presentations and a final project report on a topic of mutual interest. Some proposed project topics for Fall 2014:

  • New programming languages
  • New features in legacy languages
  • Program analysis and optimization techniques
  • Solver-aided languages
  • Verifying compilers
  • Abstract interpretation and model checking
  • Regular expression pattern matching in programming languages
  • Applications of category theory to programmming languages
  • Insecure constructs in programming languages and how to overcome them
  • Report on a "Most Influential PLDI Paper"
  Fluency in at least one major high-level programming language such as
C, C++, C#, Java, OCaml, or Python
  COMS W4115 Programming Languages and Translators, or an equivalent course
 Schedule Fall 2014
Date  Lecture   
Sep 8   Introduction to Course   
Sep 15   Design and Implementation of Lambdas in Java 8   
Sep 22   Kevin Roark: The Swift Programming Language   
Sep 22   Louis Croce: JIT Compilation   
Sep 29   Chris Narrikkattu: The PyPy Interpreter Framework   
Sep 29   Richard Townsend: The Elm Programming Language   
Sep 29   David Williams-King: Making New Pseudo-Languages with C++   
Oct 6   Dina Lamdany: The Rise of OOP   
Oct 6   Serena Simkus: Django   
Oct 6   Kenneth Harvey: Problem Comprehension and Metaprogramming   
Oct 13   Sireesh Gururaja: An Introduction to Monads   
Oct 13   Xingyu Wang: Regex Pattern Matching in Programming Languages   
Oct 13   Daniel Newman: Regular Expressions and Pattern Matching    
Oct 20   Tony Ling: Meta-level Compilation   
Oct 20   Rui Zhao: Rosette Solver-Aided Language   
Oct 20   Ramkumar Ramachandra: Lowering High-Level Language Constructs to LLVM IR   
Oct 27   Suzanna Schmeelk: Formal Methods on Android   
Oct 27   Chae Jubb: Concurrency   
Oct 27   Weiyuan Li: Garbage Collection 
Nov 10   Bocheng Zhou: An Introduction to Applicative Functors   
Nov 10   Gudbergur Erlendsson: The Rust Programming Language    
Nov 17   David Williams-King: Compiler-Based Support for Code Re-Randomization    
Nov 17   Chris Narrikkattu: A Personal, Practical Exploration of Rust    
Nov 17   Tony Ling: A Study on Modern and Competitive SAT Solvers    
Nov 17   Dina Lamdany: OOP    
Nov 17   Rui Zhao: Static Program Analysis and Optimization    
Nov 24   Chae Jubb: Modern C Compilers & x86 Loop Optimizations    
Nov 24   Richard Townsend: Recursion Unrolling    
Nov 24   Weiyung Li: Garbage Collection in Java    
Nov 24   Louis Croce: V8 vs Spider Monkey JavaScript Compilation    
Nov 24   Ramkumar Ramachandra: Precise GC Support in LLVM    
Nov 24   Serena Simkus: Languages for AI Programming    
Dec 1   Suzanna Schmeelk: Android Security   
Dec 1   Kenneth Harvey: ADHOC Logic Database + Autocomplete    
Dec 1   Kevin Roark: Error Handling in New Languages    
Dec 1   Sireesh Gururaja: Monads    
Dec 8   Daniel Newman: Regular Expressions and Pattern Matching    
Dec 8   Xingyu Wang: Java Checker Framework    
Dec 8   Bocheng Zhou: Why Dependent Types?    
Dec 8   Gudbergur Erlendsson: Memory Safety in Modern PLs    
 Background Text
  Alfred V. Aho, Monica S. Lam, Ravi Sethi, and Jeffrey D. Ullman
Compilers: Principles, Techniques, and Tools, Second Edition
Pearson Addison-Wesley, 2007, ISBN 0-321-48681-1
  50% Final Project Report
  50% Class Participation and Presentations

aho@cs.columbia.edu Updated September 7, 2014