6.035 Computer Language Engineering - Fall 2007

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.

TA's Question and Answer Blog

Handouts

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

Late penalty for projects is TBD.

Lectures & Recitations


  • [ppt, pdf] Introduction
  • [ppt, pdf] Regular and Context-Free Languages
  • [ppt, pdf] Top-Down Parsing
  • [ppt, pdf] Scanner/Parser Project
  • [ppt, pdf] Bottom-Up Parsing
  • [ppt, pdf] Names, Scopes and Bindings
  • [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] Dataflow Optimization Project
  • [ppt, pdf] Introduction to Code Optimization
  • [ppt, pdf] Loop Optimizations
  • [ppt, pdf] Optimizer Project
  • [ppt, pdf] Register Allocation
  • [ppt, pdf] Parallelization
  • [ppt, pdf] Parallelization (continued)
  • [ppt, pdf] Memory Optimization
  • Tools Documentation

    Staff

    Faculty
    Saman Amarasinghe
    32-G778


    Chen Ding
    32-G780

    Teaching Assistant
    Michal Karczmarek
    32-G888

    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, Lam, Sethi and Ullman
    Addison-Wesley, 2006
    ISBN 0321486811
    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.

    Programming Languages Pragmatics
    Michael L. Scott
    Morgan Kaufmann Publishers, 2005
    ISBN 0126339511



    Visit last year's website.