6.035 | Spring 2010 | Undergraduate

Computer Language Engineering


Course Meeting Times

Lectures: up to 4 sessions / week, 1 hour / session

Course Description

This course analyzes issues associated with the implementation of higher-level programming languages. Topics covered include: fundamental concepts, functions, and structures of compilers, the interaction of theory and practice, and using tools in building software. The course includes a multi-person project on compiler design and implementation.


6.170 and proficiency in Java


There are no required texts. Optional references:

Appel, Andrew. Modern Compiler Implementations in Java (Tiger Book). 2nd ed. New York, NY: Cambridge University Press, 2002. ISBN: 9780521820608.

Muchnick, Steven. Advanced Compiler Design and Implementation (Whale Book). San Francisco, CA: Morgan Kaufmann, 1997. ISBN: 9781558603202.


The calendar below includes lectures (L), recitations (R), projects (P), and quizzes (Q).

SA = Prof. Saman Amarasinghe

MR = Prof. Martin Rinard

1   L1: Course administration, information and overview (SA)

L2: Regular expressions, language specification by formal grammars (MR)

P1: Scanner/parser project assigned

R1: Project information session
2 L3: Bottom-up parsing (MR) L4: Top-down parsing (MR) L5: Intermediate representations (MR) L6: Semantic analysis (SA)

P1: Scanner/parser project due

P2: Semantic checker project assigned

R2: Project information session  

P2: Semantic checker project due

P3: Code generator project assigned

L7: Unoptimized code generation (MR) R3: Project information session L8: Unoptimized code generation (MR)
6 Q1: In-class quiz   P3: Code generator project design due  

P3: Code generator project due

P4: Data-flow analysis project assigned

L9: Introduction to program analysis (MR) R4: Project information session
9 L10: Data-flow analysis (MR) L11: Data-flow optimizations (MR) L12: Foundations of data-flow analysis (MR)

P4: Data-flow analysis project due

P5: Optimizer project assigned

10 Q2: In-class quiz L13: Introduction to code optimization (SA) L14: Instruction scheduling (SA) R5: Project information session
11 L15: Instruction optimization (SA) L16: Register allocation (SA) L17: Parallelization (SA)

L18: Loop optimization (SA)

P5: Optimizer project design due

13 L19: Putting it all together (SA) L20: Discussion of research topics in compilers (SA/MR) P5: Optimizer project checkpoint due  
14 Q3: In-class quiz      
15     P5: Optimizer project due L21: Compiler derby (SA)

Course Info

Learning Resource Types
Exams with Solutions
Lecture Notes