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.
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.
I will be making the slides I use in class available after the lectures.
We will be making use of these references throughout the semester. Others will be posted as appropriate.
This textbook is not yet in print. I will be distributing draft versions of the chapters in class by permission of the publisher.
Textbook chapter annotations.
Terence Parr is the originator of ANTLR. In this class he uses ANTLR extensively. The links, "Meet my little friends, ANTLR and StringTemplate" and "LL Parsing and recursive descent design patterns" are excellent introductions to ANTLR.
Terence Parr's book on ANTLR. Reserve copies available at Wendt.
Wincent Colaiuta's detailed discussion of lexing in ANTLR 3.0
Expanded JFLAP manual. Reserve copies available at Wendt.
We will be using ANTLR to build our compiler front-end.
We will be using the Jasmin instruction set as our target language.
We will be using the JFLAP tool during the sections on Context Free Grammars and Regular Languages.
Online notes from the Spring 2008 version of this course. The notes are available as slides in PDF format.
Herein is contained a complete description of the Java Virtual Machine Instruction Set.
You will be using the Subversion revison control system to manage all your projects.
We will distribute Makefiles via Subversion for most of your assignments. You will generally not need to modify them. If you do need to modify a Makefile make sure to hand it in along with your other required files so that we can compile and test your code.
JGRASP is a Java based development environment. One of its strengths is its ability to generate nice class hierarchy diagrams from source code. You might find this useful in exploring the ASTnode class hierarchy.
