CSCI 434T

Compiler Design

Home | Schedule and Assignments | Resources

General Information


Syllabus
IC Language Specification
IC Program Samples

Schedule

Week 1: Sept 6-13

TopicsOverview and Lexical Analysis
Reading
  • Dragon 1
  • Dragon 3.3, 3.6-3.7
  • Regular Expression Matching Can Be Simple And Fast (but is slow in Java, Perl, PHP, Python, Ruby, ...), Russ Cox, January, 2007.
  • An amusing regular expression
  • AssignmentHW 1
    Starter Code, javadoc

    Week 2: Sept 11-18

    Topics Lexical Analysis, Grammars, Top-Down Parsing
    Reading
  • Dragon 3.8, 3.9.6
  • Dragon 4.1-4.4
  • JFlex user manual and examples.
  • Assignment HW 2
    PA 1 (Due: Friday, Sept. 21)
    PA 1 Starter Code, Lab tutorial

    Week 3: Sept 18-25

    Topics Bottom-Up Parsing, Error Recovery
    Reading
  • Dragon 4.5-4.6, 4.7-4.7.3, 4.8.1-4.8.2
  • (optional) 4.8.3
  • (optional) A practical method for LR and LL syntactic error diagnosis and recovery, Burke and Fisher, 1987.
  • Assignment HW 3
    LR Automata for #8 LR Automata for #10

    Week 4: Sept 25-Oct 3

    Topics ASTs and Symbol Tables
    Reading
  • JavaCup.
  • Engineering a Compiler, Cooper and Torczon, 4.1-4.3, 5.1-5.4, 5.7.
  • Modern Compiler Implementation in Java, Appel, Ch.~4.
  • Design Patterns, Gamma et al., 331--344. (optional)
  • MultiJava: Modular Open Classes and Symmetric Multiple Dispatch for Java, Clifton et al, 2000. (Sec. 1-3)
  • Practical Predicate Dispatch, Millstein, 2004. (optional)
  • Assignment
  • HW 4
  • Starter Code for problem 1,
  • Simple TAC Definition (for problem 2),
  • RE Compiler Starter Code,
  • RE Compiler javadoc
  • Expr.mj for MultiJava
  • PA 2
  • PA 2 Starter Code
  • Week 5: Oct 3-Oct 10 (Reading Period)

    Topics Scopes, Types, Type Checking
    Reading
  • Type Systems, Luca Cardelli, 1997. Sections 1-3 (up to Table 9), and 9
  • Dragon 6.3-6.3.2,6.5 (skim)
  • Foundations of Object-Oriented Languages, Kim Bruce, 2002. Chapters 2-3 (reference)
  • Assignment HW 5 MEETINGS: Wed, Oct 10. DUE: Sun, Oct 14 (Note: #6 was moved to HW 6)

    Week 6: Oct 11-Oct 18

    Topics Object Types, Subtyping, and TAC
    Reading
  • Type Systems, Luca Cardelli, 1997. Section 6, 28--30
  • Dragon 6.2 -- 6.2.1, 7 -- 7.2
  • Appel, Chapter 14
  • Optimization of Object-Oriented Programs Using Static Class Hierarchy Analysis, Jeffrey Dean, David Grove, and Craig Chambers, 2005.
  • Language-Based Information-Flow Security, Andrei Sabelfeld and Andrew C. Myers, 2003.
  • Optimizing Dynamically-Typed Object-Oriented Languages With Polymorphic Inline Caches, Urs Holzle, Craig Chambers, David Ungar, 1991.
  • Assignment HW 6 MEETINGS: Wed, Oct 17.
    ScopeAwarePrinter.java

    Week 7: Oct 18-Oct 24

    Assignment No new HW 7...

    Week 8: Oct 24-Oct 31

    Topics TAC, Code Generation, Intro to Optimization
    Reading
  • Dragon 7 -- 7.2
  • Dragon 8 -- 8.5
  • Code Generation Materials
  • Cooper and Torczon 8.1 -- 8.4 (skip 8.4.2 and 8.4.3)
  • Assignment
  • HW 8
  • PA 3
  • Simple TAC Definition
  • Code Generation Material
  • A Bunch of little test files
  • CodeGenerator.java skeleton
  • Week 9: Oct 31-Nov 7

    Topics Introduction to Dataflow Analysis
    Reading Dragon 9 - 9.3
    Assignment HW 9

    Week 10: Nov 7-Nov 14

    Topics Dataflow Analysis Foundations
    Reading
  • Dragon 9.3 - 9.5.2
  • Dragon 9.5.3 - 9.5.5 (optional)
  • Assignment HW 10

    Week 11: Nov 15-Nov 20

    Topics More Optimization
    Reading Continue last week's reading
    Assignment
  • Wrap up HW 10, Final Project Ideas
  • Final Project
  • PA 4
  • PA 4 starter files
  • javadoc for starter files