About the Course

This course is an introduction to compiler construction. Students will write an interpreter for a small subset of the SVG (Scalable Vector Graphics) and a full compiler for a subset of Java called MiniJava. Course topics will include the following: scanning, parsing (top-down and bottom-up), abstract syntax trees, semantic analysis, and code generation.


May 5, 2010: Quiz 7 has been posted and is due May 8th at 10pm.

May 4, 2010: Posted notes for today's class and example finals on schedule page.

May 2, 2010: Posted notes about other language features on schedule.

April 22, 2010: Posted a new version of the 21 notes called 21-arrays-n-classes-take2.txt. See corresponding google groups email. We also posted a new MJFullStart.tgz file. See corresponding google groups email to see what changed.

April 22, 2010: Updated extra credit due date on assignments page.

April 21, 2010: HW6 and PA7 have been posted on the assignments page. Notes for tomorrow's class have been posted on the schedule.

April 19, 2010: Indicated you should use Java precedence for PA6.

April 15, 2010: The ambiguous grammar examples for JavaCUP have been posted on the schedule.

April 12, 2010: Notes for tomorrow have been posted on the schedule.

April 8, 2010: Time for final has been fixed. Quiz 5 has been posted and is due by April 14th at 10pm. Quiz 6 will be due around 4/29, and Quiz 7 will be due around 5/7.

April 8, 2010: Fixed some typos in 17 and 18 text notes.

April 7, 2010: Notes for tomorrow have been posted.

April 7, 2010: Clarifications about the Makefile and a TAR file to submit have been sent to the mailing list and put on the PA5 writeup.

April 5, 2010: Notes for tomorrow have been posted. Minor edits have been made to the 17 notes. We will discuss them in class tomorrow.

April 2, 2010: Extra credit has been clarified on the assignments page.

April 1, 2010: Notes for today's class have been posted.

March 29, 2010: PA5 now requires that you include a Makefile in your jar. We should be able to build your code. Also, HW4 grades have been posted on RamCT.

March 29, 2010: Details about HW5 have been posted, and HW5 is due Thursday before class.

March 24, 2010: Notes for tomorrow have been posted.

March 24, 2010: PA5 has been posted.

March 22, 2010: The notes for tomorrow have been posted. HW4 is now due Friday before recitation.

March 9, 2010: The Midterm review notes have been posted.

March 9, 2010: There is no exercise 2.4.6 in the book. There is an exercise 2.4.1.

March 8, 2010: Edited PA4 to make it clear that you need to generate a jar file named PA4_groupname.jar.

March 4, 2010: Quiz 4 has been posted on RamCT and is due Monday night by 10pm.

March 1, 2010: The notes for this week have been posted.

March 1, 2010: HW4 and PA4 have been posted on the assignments page.

February 23, 2010: Old midterms have been posted to the schedule.

February 22, 2010: Notes for this week have been posted to the schedule.

February 19, 2010: The HW3 deadline has been moved to Wednesday the 24th at 11:59pm since we still need to cover the visitor design pattern in class.

February 18, 2010: The java-cup-11a-runtime.jar file is now in the MJExprStart.tar file. You will need java-cup-11a-runtime.jar in your project so that Eclipse can compile and run the ExprEvalDriver.java. If you are placing it in an existing project, use the

Project-->Properties-->Java Build Path --> Libraries--> Add Library 
to add the java-cup-11a-runtime.jar to your build.

February 16, 2010: The quiz 3 deadline has been modified. Quiz 3 is now due Friday the 19th at 10pm. Notes for Thursday the 18th have been posted on the schedule.

February 16, 2010: Notes for Today have been posted.

February 15, 2010:

February 10, 2010: Updated syllabus with Michelle's new office and lab hours. Put some suggested exercises on the schedule.

February 9, 2010: Fixed offset typo in slide 13 of 06-MIPS-Patt-stackframe.ppt. Fixed typo in match() method in Panic mode using heuristic (1) notes (04-predictive-parsers.txt). The following code in the predictive parser with panic mode error recovery is actually correct:

    case ID:
    case EOF:// the 2 characters in the FIRST(StmList EOF)
	    try { StmList(); match(EOF); } catch { panic_S(); } break;
As noted in the comment, both ID and EOF are in the FIRST set for the right-hand side StmList EOF since StmList is nullable.

February 8, 2010: Posted notes for tomorrow. Also changed the due date for PA4 so it does not conflict with the midterm. Note that this weeks recitation will be on MIPS and MARS again.

February 6, 2010: The version of CountDown.s and CountDown.java you turn in for PA2 should call the countdown() method with the actual parameter value 7. The PA2 writeup has been updated.

February 1, 2010: There was a slight typo in the error messages specified in the PA1 writeup that has now been changed.

    [LINE,POS] Expecting token TOKENTAG and got < OTHERTOKENTAG >.
should now be
    [LINE,POS] Expecting token TOKENTAG got < OTHERTOKENTAG >.
Not grammically correct, but a quick fix.

February 1, 2010: Notes for this week have been posted.

January 29, 2010: HW2 and PA2 have been posted on the assignments page. People have been asking lots of great questions about PA1. We are answering them on the mailing list.

January 25, 2010:

January 25, 2010: Show the un-minimized version of the DFA for HW1. For a lexer, it is going to matter whether we end up in the final state 3 or 4. State 3 indicates the keyword "if", and state 4 indicates an identifier with any combination of i's and/or f's.

January 22, 2010: Subversion links are on external links page.

January 20, 2010:

January 19, 2010: Today's slides have been posted on the schedule. The example code has been sent to the mailing list. Make sure to accept the mailing list invitation as soon as you get it (google feels the need to approve the list). You can also just go to http://groups.google.com/group/cs453-spring-2010 and request to become a member.

January 12, 2010: HW1 and PA1 have been posted.

January 6, 2010: The course website has been posted! Send me email at mstrout@cs.colostate.edu if you have any questions.

Michelle Strout
Last modified: May 5, 2010