Advanced Compiler Hacking

Overview & Rubric

This is a project-based course designed to help you become a better programmer and to understand compilers better by working on a project with LLVM.

Your grade is based on two factors: your project and your codewalk(s). Your project grade is decided at the end of the quarter in a discussion with you and the instructors.

Your codewalk grade is completely independent of your project grade. It will be based on how well you engage with your classmates during your presentation of your code. Being defensive about the code earns a low grade. Discussing strategies and starting on the implementation (during your codewalk) in a way that engages the other students earns a high grade. You may be asked (or you may ask) for more than one codewalk, and your code walk may span more than one meeting of the class.

You may work on your own or in groups. Groups are expected to do pair-programming (i.e., never work separately on the project). Pair-programming projects are expected to be more ambitious than singles and that will be factored into the project half of the grading.


MeetingMW 11:00-12:20pm, Tech M164

Useful LinksShared Memory Consistency Models: A Tutorial
Nikos: LLVM passees
Nikos: FunctionInfo.cpp
Nikos: LLVM intro
Some LLVM example programs
Brainfuck
Brainfuck on Wikipedia
LLVM: Architecture Overview
LLVM: Language Reference
LLVM: Building the compiler
LLVM: Writing a pass
LLVM: GEP
LLVM Docs Main Page

Syllabus
DateExercise
(finish before class)
Codewalker
1/5noneRobby
1/7noneRobby
1/12noneRobby
1/14noneRobby
1/19build LLVM (follow the getting started guide)Nikos
1/26noneZach Smith and Andrew Kahn
1/28noneNikos
2/2noneNikos
2/4noneNikos
2/9noneNikos
2/11noneKyle Hale and Maciej Swiech
2/16noneGeorgios Tziantzioulis and Ali Murat Gok
2/18noneChao Yan
2/23noneJeannie Tran
2/25noneConor Hetland and Jonathan Ford
3/2noneYuanbo Fan
3/4nonefinal project presentations
3/9nonefinal project presentations
3/11nonefinal project presentations

InstructorsNikos Hardavellas
Robby Findler