COMS 4115: Policy & FAQ


Students should have adequate knowledge of:

  • C/C++ (required)

  • Computer Organization/Architecture (Memory Layout, Understanding dereferencing, etc.) (recommended)

  • Theory of Computation (recommended)

If you have taken the following courses, the class might be helpful:

  • COMS W3157 Advanced Programming 

    • How to work on a large software system

    • Makefiles, version control, test suites 

    • Testing will be as important as coding

  • COMS W3261 Computer Science Theory 

    • Regular languages and expressions 

    • Context-free grammars 

    • Finite automata (NFAs and DFAs)


Note that, these requirements are not strictly enforced. Students should judge their expertise by themselves based on their background, interest, and content of the course. You can take a look at the previous course here.


Homeworks will be a mix of written and programming assignments.

Programming Assignments: You will have around 6 programming assignments to implement different phases of compilers.

A large part of the assignment will be built on top of LLVM/Clang infrastructure.  You will use Github Classroom to submit your assignments.  Programming assignments will have 40% of the total credit.

Written Assignments: There will be written assignments on every topic that we will discuss in the class. We will use Gradescope for submitting and grading the class assignments. Written assignments will have 10% of the total credit.

Q: Where can I get the Gradescope signup code?

A: Gradescope signup code is available on the course’s Piazza discussion board.

Q: Can I submit a handwritten assignment?

A: The written assignments are preferred to be typed as a Word or PDF document, with all mathematical formulas, drawings, etc.

Q: What programming language(s) can I use for programming assignments?`

A: C++, as LLVM/Clang is written in C++.

Q: What is the policy on late submissions?

A: There will be no extension unless you produce a medical certificate or permission from relevant school authorities. Without such evidence, the instructor or TAs will not reply to such emails.


Q: I need clarification on a specific homework question, what do I do?

A: You should use the class’s Piazza discussion board to ask your question so that everyone in the class can benefit from the answer. Due to the overwhelming amount of emails received by the course staff, individual emails asking clarification on homework problems will not be answered. Note that you cannot post in Piazza anonymously.

In Class Particiaptions

Students are expected to attend each class. The instructor will ask in-class questions that you are expected to answer through PollEverywhere (

Q: Will lecture recordings (and associated PollEverywhere) be available?

A: We will record the lecture and try our best to share the recordings with students. PollEverywhere questions will be available, but not the poll itself as it is mainly for class interactions.

Columbia University

New York City, NY 10027, USA