General Information
Instructor: Prof. Ronghui Gu
Lectures: Schermerhorn Hall Room 501, Mon & Wed, 4:10pm ~ 5:25pm
Staff
Name | Office hours | |
---|---|---|
Prof. Ronghui Gu | rg3123@columbia.edu | Tue (10:00-11:00am) at zoom |
Christopher J Yoon (lead) | cjy2129@columbia.edu | Tue (5:00-6:00pm) & Thu (4:00-5:00pm) at Mudd 122 & Mon (8:00-9:00pm) at zoom |
Seoyoung Kweon | sk4865@columbia.edu | Wed (1:00-3:00pm) at DSI Lounge |
Jennifer Duan | jd3794@columbia.edu | Tue (3:00-4:00pm) at CS TA room & Thu (10:00-11:00am) at zoom |
Runzhou Tao | rt2758@columbia.edu | Fri (10:00-12:00am) at CS TA room |
Note: For any general questions related to assignments and projects, please send emails to the following TA mailing list using your Columbia email address:
Gu4115TA@lists.cs.columbia.edu
Overview
The goal of PLT is to teach you both about the structure of computer programming languages and the basics of implementing compilers for such languages.
The course will focus mostly on traditional imperative and object-oriented languages, but will also cover functional and logic programming, concurrency issues, and some aspects of scripting languages. Homework and tests will cover language issues. You will design and implement a compiler in a semester-long team project.
While few of you will ever implement a full commercial compiler professionally, the concepts, techniques, and tools you will learn have broad application.
Prerequisites
COMS W3157 Advanced Programming: You will be dividing into teams to build a compiler, so you need to have some idea how to keep this under control. Quick test: you need to know about Makefiles and source code control systems.
COMS W3261 Computability and Models of Computation: You will need an understanding of formal languages and grammar to build the parser and lexical analyzer. Quick test: you must know about regular expressions, context-free grammars, and NFAs.
Suggested Text
You don’t need to buy textbooks since all the materials will be covered by the lecture notes.
-
Compilers: Principles, Techniques, and Tools by Alfred V. Aho, Monica Lam, Ravi Sethi, and Jeffrey D. Ullman (Second Edition).
-
Modern Compiler Implementation in ML by Andrew W. Appel.
Grades
- 40%: Team Programming Project
- 20%: Three individual homework assignments
- 20%: Midterm Exam
- 20%: Final Exam (cumulative)
TENTATIVE Syllabus (Subject to change!)
Date | Session | Lecture | Due |
---|---|---|---|
Wed Jan 17 | 1 | Intro | |
Mon Jan 22 | 2 | Translators | |
Wed Jan 24 | 3 | Basic Elements of PL | |
Mon Jan 29 | 4 | Lambda Calculus | |
Wed Jan 31 | 5 | Programming in OCaml I | |
Mon Feb 5 | 6 | Programming in OCaml II | |
Wed Feb 7 | 7 | Scanning | |
Mon Feb 12 | 8 | NanoC Scanner | Language Proposal |
Wed Feb 14 | 9 | Parsing I | |
Mon Feb 19 | 10 | Parsing II | |
Wed Feb 21 | 11 | Parsing III | |
Mon Feb 26 | 12 | NanoC Parser | HW1 Video |
Wed Feb 28 | 13 | TA Review Session | LRM (due Mar 15) |
Mon Mar 4 | 14 | Midterm | |
Wed Mar 6 | 15 | Types and Static Semantics I | Video |
Mar 11 - 15 | Spring Break | HW2 (due Mar 15) Q1.zip | |
Mon Mar 18 | 16 | Types and Static Semantics II | Video |
Wed Mar 20 | 17 | MicroC Semantics Checker I | Video |
Mon Mar 25 | 18 | MicroC Semantics Checker II | Video |
Wed Mar 27 | 19 | IR Generation | Video |
Mon Apr 1 | 20 | Runtime Environments I | Video |
Wed Apr 3 | 21 | Runtime Environments II | Video Hello World Front-end |
Mon Apr 8 | 22 | MicroC I | Video |
Wed Apr 10 | 23 | MicroC II | Video |
Mon Apr 15 | 24 | IR Optimization I | Video |
Wed Apr 17 | 25 | IR Optimization II | Video |
Mon Apr 22 | 26 | Code Generation | HW3 Video |
Wed Apr 24 | 27 | Final Exam Review Session | Video |
Mon Apr 29 | 28 | Final Exam | Zoom |
Thu May 9 | Final Project | ||
Mon May 13 | Final Project Presentation |