Justin M. LaPre

CSCI 4975/6975: A Compiler Case Study: LLVM

Fall 2017

Dr. Justin M. LaPre
Department of Computer Science
Rensselaer Polytechnic Institute
110 8th Street Troy, New York 12180
Course web site: http://piazza.com/rpi/fall2017/csci49756975
Office Hours: after class or by appointment.
Class Time and Location: Monday and Thursday 12 p.m. to 1:50 p.m., Sage 2704

Like the Constitution, this syllabus should be considered a "living document" in that it is subject to change. You will be notified of any changes made.

Course Description

This topics course will be compiler-oriented with a focus on the LLVM compiler in particular. LLVM is a state-of-the-art compiler that enjoys both academic interest as well as widespread industry adoption. It is a large codebase written using modern C++ techniques and design patterns; students are expected to not only read but learn from existing code. Seminal compiler/LLVM-specific papers may be assigned and critiqued. As many of you have not taken a compiler course yet, we will cover some preliminary theory. Additional topics will include compiler backend issues such as control flow graphs, intermediate representation (IR), and compiler optimizations. Assignments will include writing various LLVM passes as well as a significant final project.

Prerequisite Undergraduate level CSCI 2300 Minimum Grade of D and Undergraduate level CSCI 2500 Minimum Grade of D.

Textbook

Engineering a Compiler, by Cooper and Torczon. Amazon link.

Optional Textbooks

Getting Started with LLVM Core Libraries, by Lopes and Auler. Amazon link.

Compilers: Principles, Techniques, and Tools, by Aho, Lam, Ullman, and Sethi. Amazon link.

Schedule of Topics

Schedule of Homework and NO CLASS days

Grading and Other Class Policies

Attendance Policy: As this is a seminar, attendance at lectures is strongly encouraged. You are responsible for all announcements made in lecture (e.g., any change in due dates) as well as any material posted on the course web page.

Late Assignments Policy: Three late days are permitted for assignments. They will be consumed in whole day increments. In other words, if you are one hour late, that will count as one day. 25 hours late will count as two days, etc. Once these are exhausted, late assignments will not be graded.

Grade Disputes: Grade disputes must be made within 10 days. After 10 days has elapsed, the grade on record will stand.

Academic Integrity

While I strongly encourage you to form study groups and work together in learning this material, the course project, homeworks and programming assignments are to be done individually unless otherwise noted by the assignment/project specification. What this means is that you should do whatever is necessary to ensure your work remains your work. If during in the grading process, it is determined that students shared or duplicated work, those students will automatically score a zero for the offense and a report will be sent to the Dean of Students Office which could result in additional disciplinary action. For a second offense, the student or students involved will fail this course. Additionally, undergraduates offenders cannot mentor in the future. In the event a graduate student is caught cheating, that student will fail.

Learning Outcomes

By the end of this course, you will: