COMS 4115: Programming Language & Translators, Fall 2024
Description
This class will discuss the principles of design and implementation of compilers. In particular, we will learn about different phases of a compiler including lexical analysis, syntactic and semantic analysis, including type checking, code generation, and optimization. We will also study basic program analysis techniques required to perform compiler optimization.
​
​​
Lecture Details
Instructor: Baishakhi Ray
Class Schedule: Tuesday and Thursday 11:40 am-12:55 pm
Location: CSB 451
Office Hours: Tuesday 10:30am - 11:30am (CEPSR 604)
​
Q&A Forum: Ed Discussion
Trivia: FAQ
​
Teaching Assistants.
​​
-
Shivam Chaturvedi Office Hours: Wednesdays, 12PM - 1PM
-
Tony Yu Office Hours: Thursdays, 7:30pm - 8:30pm
-
Yongyi Wang Office Hours: Fridays: 3PM - 4PM
Submission Links
-
Written Assignments: gradescope (Entry Code will be posted in Coursework)
-
Programming Assignments: GitHub classroom (Details will be posted in Coursework)
​​
Grading
-
Project: 50%
-
Written Assignments: 10%
-
Midterm: 20%
-
Final: 20%
-
Extra Credit: 10%
​
Tentative Schedule
​​
-
Week 1: Tuesday, September 3rd: Trivia Thursday, September 5th: Intro to Compiler
-
Week 2: Tuesday, September 10th: Lexical Analysis Thursday, September 12th: Lexical Analysis (cont..)
-
Week 3: Tuesday, September 17th: Lexical Analysis (cont..) Thursday, September 19th: Syntactic Analysis
-
Week 4: Tuesday, September 24th: Syntactic Analysis (cont..) Thursday, September 26th: Syntactic Analysis (cont..)
-
Week 5: Tuesday, October 1st: Syntactic Analysis (cont..) Thursday, October 3rd: Syntactic Analysis (cont..)
-
Week 6: Tuesday, October 8th: Syntactic Analysis (cont..) Thursday, October 10th: Semantic Analysis
-
Week 7: Tuesday, October 15th: Midterm Review Thursday, October 17th: Control-Flow Analysis
-
Week 8: Tuesday, October 22nd: Midterm Thursday, October 24th: Control-Flow Analysis (cont..)
-
Week 9: Tuesday, October 29th: Data-Flow Analysis Thursday, October 31st: Runtime Environment
-
Week 10: Tuesday, November 5th: No class (Election Day) Thursday, November 7th: Code Generation
-
Week 11: Tuesday, November 12th: Code Generation Thursday, November 14th: Optimization
-
Week 12: Tuesday, November 19th: Optimization Thursday, November 21rd: No class (Thanksgiving)
-
Week 13: Tuesday, November 26th: Register Allocation Thursday, November 28th: Register Allocation
-
Week 14: Tuesday, December 3rd: Final Review. Thursday, December 5th: Final
​​
​
​
​
​
​
​
​
​
Additional Reading Materials:
-
Compilers: Principles, Techniques, and Tools
By Alfred V. Aho, Monica S. Lam, Ravi Sethi, and Jeffrey D. Ullman.
2nd Edition, Addison-Wesley, 2006
-
Research Papers
Distributed by the instructor
Policies:
-
Late submissions: No late assignments will be accepted.
​​
-
Academic rules of conduct: Students are expected to adhere to the Academic Honesty policy of the Computer Science Department, this policy can be found in full here.
​​
-
Violations: Violation of any portion of these policies will result in a penalty to be assessed at the instructor's discretion. This may include receiving a zero grade for the assignment in question and a failing grade for the whole course, even for the first infraction.
​​
-
In order to receive disability-related academic accommodations for this course, students must first be registered with their school Disability Services (DS) office. Detailed information is available online for both the Columbia and Barnard registration processes. Refer to the appropriate website for information regarding deadlines, disability documentation requirements, and drop-in hours (Columbia)/intake session (Barnard). Students registered with the Columbia DS office can refer to the Master TARF section of the DS Testing Accommodations page for more information regarding disability-related academic accommodations for this course.