CS536: Introduction to Compilers

TR 11:00 AM -- 12:15 PM

Computer Sciences 1221

compsci536-1-f09 at lists dot wisc dot edu

mailing list archive

Library Reserve Page

(Under Construction)


Instructor: mulhern

Teaching Assistant: Aaron Gember


Assignments

The extent of collaboration permitted is stated precisely in every assignment. You may not collaborate with anyone in any way not specifically permitted.

The number of the assignment is the number of the repository you will be using. The assignments are listed in the order in which they are due.

The late policy for each assignment is part of the assignment description. If you need to take advantage of the late policy you must send email to Aaron with subject heading "Extension Request" no later than 4 hours before the assignment is due. If you find that you do not need the extension, you must send a follow up email address with the subject heading "Extension Not Needed" to receive full credit for the assignment.

Ongoing

Future

Completed


Exams

There will be two in-class exams, each worth 10/100, and a final exam worth 15/100.

The final exam will consist of responses to three exam questions. Exam questions will be posted from time to time during the course of the semester; you may choose the three that most interest you. You may work on the exam questions with a partner. If you consult any resources other than those listed for the class you must cite them in your work. I will schedule a meeting in November with each exam question group to discuss the rough drafts of responses to at least two questions. You may hand in your completed responses directly to me at any time up to and including the scheduled final exam time. As with all other group work it is essential that every member of the group contributes substantially to the final result; you will be required to sign a statement indicating that this is the case.

I will be meeting with all groups to discuss rough drafts for two question responses the week of November 16 through 20. The drafts must be handed to me by email or in person by Thursday November 12 at midnight. Each rough draft is worth 1 point of your total grade. As with final drafts I will not accept handwritten copies. In the case where the question is an implementation project you must set up a Subversion repository for your project and you must make sure that I am able to check out from your repository by Thursday November 12th.

Questions

  1. The ANTLR debugger
  2. Optimizations in javac
  3. Parser Variations
  4. LL(k) Grammars
  5. Enhancing a Random AST Generator with Semantic Information
  6. Table Driven LL(*) Parsing
  7. Any Other Scanner/Parser Generator
  8. Changing the JVM Instruction Set
  9. The Middle End: Optimizations
  10. Static Analysis to Limit the Number of Locals
  11. Implementing Dynamic Scoping
  12. Allowing All Non-cyclic Forward References Between Fields
  13. Allow Constant Names in simpleJ: Implementation Project
  14. Show DBL is not LL(*)
  15. Omit Parentheses around BinaryOp Expressions where Unnecessary: Implementation Project
  16. Compile All Field Definitions to Nullary Methods : Implementation Project
  17. Force a StackOverflowError during execution of a Java class with no main method
  18. Efficiency: Compiler vs. Interpreter
  19. Perl Style Interpreter: Implementation Project
  20. Make Logic Operators Short-circuiting: Implementation Project
  21. Parsing the Simple Untyped Lambda Calculus: Implementation Project
  22. Removing Unreachable Code: Implementation Project

Exam dates

  1. The first midterm will be held on 2009 October 13 from 11:00AM to 12:30PM.
  2. The second midterm will be held on 2009 November 24 from 11:00AM to 12:30PM.
  3. The final will be held on 2009 December 17 from 10:05AM to 12:05PM.

Slides

I will be making the slides I use in class available after the lectures.

Completed Material

  • Introduction
  • Overview
  • Context Free Languages
  • More Context Free Languages
  • Visitor Pattern
  • Symbol Tables
  • Pushdown Automata
  • Topdown Parsers
  • Introduction to ANTLR
  • Pitfalls and Particulars of ANTLR
  • The Front End with ANTLR
  • Introduction to Jasmin
  • Introduction to FIRST sets
  • Introduction to FOLLOW sets
  • Practical Scanning
  • Visitor Pattern Revisited
  • Symbol Tables Revisited
  • Code Generation
  • Adding Attributes
  • Field Declarations and Forward References
  • LR Parsing
  • Interpreting SimpleJ
  • Introduction to Lambda-Calculi
  • Operand Stack Limit
  • Future Material


    References

    We will be making use of these references throughout the semester. Others will be posted as appropriate.


    Statistics


    Grade distribution for: a0 a1 a2 a3 a4 a6 a8 e1