6.035 Computer Language Engineering - Fall 2006

Prerequisite: 6.170 and proficiency in Java
U (1)
4-4-4

Analyzes issues associated with the implementation of higher-level programming languages. Fundamental concepts, functions, and structures of compilers. Basic program optimization techniques. The interaction of theory and practice. Using tools in building software. Includes a multi-person project on design and implementation of a compiler written in Java that generates x86-64 executable machine code. 8 Engineering Design Points.

HKN Underground Guide evaluation

TA's Question and Answer Blog

Handouts

All projects should be submitted by 5pm on the due date. Hard copies must be turned in to 32-G735 by 5pm, and online submissions must have timestamps before 5pm.

Late penalty for projects is TBD.

Lectures & Recitations

  • [ppt, pdf] Introduction
  • [ppt, pdf] Specifying Languages with Regular Expressions and Context-Free Grammars
  • [ppt, pdf] Introduction to Shift/Reduce Parsing
  • [ppt, pdf] Scanner/Parser Project
  • [ppt, pdf] Recursive Descent Parser Construction
  • [ppt, pdf] Intermediate Formats
  • [ppt, pdf] Semantic Analysis
  • [ppt, pdf] Semantic Analysis Project
  • [ppt, pdf] Unoptimized Code Generation
  • [ppt, pdf] Unoptimized Code Generation, Cont.
  • [ppt, pdf] Unoptimized Code Generation Project
  • [ppt, pdf] Introduction to Program Analysis and Optimization
  • [ppt, pdf] Introduction to Dataflow Analysis
  • [ppt, pdf] Dataflow Optimization Project
  • [ppt, pdf] Foundations of Dataflow Analysis
  • [ppt, pdf] Introduction to Code Optimization
  • [ppt, pdf] Loop Optimizations
  • [ppt, pdf] Register Allocation
  • [ppt, pdf] Optimizer Project
  • [ppt, pdf] Parallelization
  • Tools Documentation

    Staff

    Faculty
    Saman Amarasinghe
    32-G778

    Teaching Assistant
    Michael Gordon
    32-G890

    Course Secretary
    Mary McDavitt
    32-G735
    Tel: x3-9620

    To email the entire course staff:

    Location

    Monday, Tuesday, Wednesday, and Thursday
    11:00am - 12:00noon
    32-124

    Optional Textbooks

    You should be able to find these at the Coop, Quantum Books, or Amazon.

    Modern Compiler Implementation in Java (Tiger book)
    A.W. Appel
    Cambridge University Press, 1998
    ISBN 0-52158-388-8
    A textbook tutorial on compiler implementation, including techniques for many language features

    Compilers: Principles, Techniques and Tools (Dragon book)
    Aho, Sethi and Ullman
    Addison-Wesley, 1986
    ISBN 0-20110-1947
    The classic compilers textbook, although its front-end emphasis reflects its age.

    Advanced Compiler Design and Implementation (Whale book)
    Steven Muchnick
    Morgan Kaufman Publishers, 1997
    ISBN 1-55860-320-4
    Essentially a recipe book of optimizations; very complete and suited for industrial practitioners and researchers.

    Engineering a Compiler (Ark book)
    Keith D. Cooper, Linda Torczon
    Morgan Kaufman Publishers, 2003
    ISBN 1-55860-698-X
    A modern classroom textbook, with increased emphasis on the back-end and implementation techniques.

    Optimizing Compilers for Modern Architectures
    Randy Allen and Ken Kennedy
    Morgan Kaufman Publishers, 2001
    ISBN 1-55860-286-0
    A modern textbook that focuses on optimizations including parallelization and memory hierarchy optimizations.



    Visit last year's website.