Michelle Strout
Office: 342 CS Building
Office Hours: Wed 4-5pm
Ramadan Abdunabi
Office: 120 computer lab
Office Hours: Monday: 11-12, Tuesday: 2-4, Thursday: 10-11
Lecture Time and Place:
12:30-1:45, TR, BSB 107
Friday, 9:00am-9:50, COMSC 325
Friday, 2:00pm-2:50, COMSC 215

CS 453 teaches students how to implement compilers. Although most computer science professionals do not end up implementing a full compiler, alumni of this course are surprised by how often the skills they learn are used within industry and academic settings. The subject of compilers ties together many concepts in computer science: the theoretical concepts of regular expressions and context free grammars; the systems concept of layers including programming languages, compilers, system calls, assembly language, and architecture; the embedded systems concept of an architecture with restricted resources; and the software engineering concepts of revision control, debugging, testing, and the visitor design pattern.

Students write a compiler for a subset of Java called MeggyJava. We compile MeggyJava to the assembly language for the ATmega328p microcontroller in the Meggy Jr RGB devices.

Course topics include the following: scanning, parsing (top-down and bottom-up), abstract syntax trees, semantic analysis, code generation, and data-flow analysis.

The official final time for on campus students is 9:40-11:40am. All semester I have been announcing 9:50-11:50am. I will be in room 215 at 9:30 or earlier and people can start at 9:40 or 9:50. Everyone will get 2 hours to take the final. (Michelle 5/12/13)

All grades have been posted in RamCT except the final. There is a before final percentage as well. There are HW keys under the course information link. The +2 extra points for doing the CS department TA survey will be added in after the final. (Michelle 5/11/13)

Quiz 6 has been graded and you should be able to see what you answered and the correct answer. Additionally example finals have been posted on the schedule along with the on campus location of the final. (Michelle 5/8/13)

HW4 is posted and is due Thursday May 9th. (Michelle 4/29/13)

PA5 grades are uploaded in the course directory. You can view your grades by ~cs453/bin/grade PA5. The grades are now available in RamCT too.

Please fill out a survey about Ramadan Abdunabi (the 453 TA) at If you fill it out and then send me email saying you have done it (the department is collecting the results, not me, so I won't be able to link your survey to your email), then you will get 2 extra credit points for the class. In general, the TA survey helps guide the selection of TAs in the department for future semesters. You can't fill out a separate instance of the survey for Andy, because he was not an official TA for the course. He was just helping out. (Michelle 4/24/13)

Old News:
Quiz 6 has been posted and is due Tuesday May 7nd. (Michelle 5/2/13)
Special treat in class tomorrow (Thursday 4/25/13). Andy Stone is going to give his job talk, which overviews cool compiler research projects he has done while an undergrad and in grad school. There will also be time to ask about register allocation for expressions and go over Quiz 5. Also note NO RECITATION this Friday 4/26/13. (Michelle 4/24/13)

Office hours today are being moved from 4-5pm to 3-4pm. (Michelle 4/24/13)

Quiz 5 has been posted and is due Tuesday April 23rd. The lecture for April 23rd will be recorded Friday April 19th in room 325 in the Computer Science Building. April 23rd, Michelle is out of town. (Michelle 4/18/13)

PA6 has been posted and is due Tuesday April 30th. (Michelle 4/16/13)

The PA6 deadline has been extended to Thursday May 2nd. (Michelle 4/30/13)

Quiz 4 has been regraded due to duplicate in last question. Answers are now available. (Michelle 4/16/13)

Class for Tuesday April 16th is canceled due to weather. We can cover the planned concepts for this week on Thursday. Good luck finishing PA5! (Michelle 4/15/13)

I have just emailed you the regression testing output for your PA3 submissions. We have had an issue with grading script for PA3 that incorrectly accepts all test cases. Now, the script is fixed and we found that some of the PA3 students compilers fail on some test cases. All students will still get to keep the same grades for PA3, but you should look at the .out file attached to the emails that I have sent. This will help you fix issues from PA3 and PA4 for PA5.

PA4 grades are uploaded in the course directory. You can view your grades by ~cs453/bin/grade PA4. The grades are now available in RamCT too.

Quiz 4 has been posted and is due Sunday April 14th by 11:59pm. (Michelle 4/10/13)

There have been some minor changes to the PA4 writeup: no need to extend the type system for classes yet and the requirement for generating test cases has been clarified. Additionally, the schedule for this week has been swapped to match the suggested getting started instructions in PA4: code generation first followed by designing the symbol table. (Michelle 3/25/13)

Class today was not recorded due to a technical issue with the Echo360 equipment. We talked about the midterm and PA4. See the text notes associated with the class and see the code examples while starting to work on PA4. The midterm questions and answers have been posted to the Midterm and Final forum. (Michelle 3/14/13)

The midterm grades and your percentage for half of the class credit is in RamCT (AfterMidterm grade). You should also now be able to look at what problems you missed on the midterm. We had one RamCT issue that caused a midterm to abort, but that now has been resolved. (Michelle 3/13/13)

PA4 has been posted and is due April 2nd. (Michelle 3/12/13)

PA3 grades are uploaded in the course directory. You can view your grades by ~cs453/bin/grade PA3. The grades are now available in RamCT too.

The LR parse table in the midterm review was incorrect. A correct version has been posted. (Michelle 3/9/13)

The midterm review notes have been posted on the schedule. Start working through some of the review questions so that Thursday's review better helps you prepare for the midterm. (Michelle 3/5/13)

The midterm will be a week from today, Tuesday March 12th from 12:30-1:45 in room 315 of the Computer Science building. In class students must take the midterm in person in room 315 unless they have made previous alternative arrangements. One 8.5x11 study sheet with ANYTHING on it can be used. The midterm will be a RamCT test with questions of a form similar to Quiz 3. Online students can take the midterm anytime March 12th. Only 1 hour and 15 minutes will be provided for all students to take the test. All students will be required to indicate that they have not discussed the midterm contents with other students until March 13th. (Michelle 3/4/13)

PA2 grading is uploaded in the course directory. You can view your grades by ~cs453/bin/grade PA2. The grades are uploaded in RamCT too. (Ramadan 2/27/13)

Quiz 3 has been posted and is due Monday Feb 25th at 11:59pm. (Michelle 2/21/13)

PA1 grading is uploaded in the course directory. You can view your grades by ~cs453/bin/grade PA1 or in RamCT. (Ramadan 2/19/13)

Midterm expectations and examples have been posted. Also, see the discussion board for some information about mj.lex comments for PA2. (Michelle 2/18/13)

PA3 has been posted and is due March 5th. (Michelle 2/16/13)

The Makefile in PA2Start.tar.gz was missing the avrH.rtl.s and avrF.rtl.s files in the MJ.jar. The new tar ball includes the updated Makefile. To make the fix yourself, make sure the $(PROG).jar rule in the Makefile looks like the following:
$(PROG).jar: $(SRC_DIR)/$(PROG)Driver.class
	cd $(SRC_DIR); $(JAR) cmf $(PROG)MainClass.txt $(PROG).jar *.class */*.class avrH.rtl.s avrF.rtl.s -C $(JAVA_CUP_RUNTIME) java_cup  
	cd ..
	mv $(SRC_DIR)/$(PROG).jar .

(Michelle 2/16/13)

HW1 grades are in RamCT. Use ~cs453/bin/grade HW1 to see why any points were missed on assignment. On RamCT, you have have had 2 more points taken off if you did not name the file as specified on the assignments page. File names are important for later grading. (Ramadan 2/8/13)

The Makefile from recitation (to compile AVR-C++ programs) was out of date. It is now updated to work with the latest tools. (Andy 2/8/13)

PA2 has been posted and is due Tuesday February 19th. (Michelle 2/7/13)

HW1 is due tomorrow night at 11:59pm. Quiz 1 grades should be all fixed in RamCT now. PA0 is due Friday by 11:59pm (Either show the TA during recitation or email a tar ball to Quiz 2 has been posted and is due Sunday night February 3rd at 11:59pm. HW2 has been posted and is due February 5th at 11:59pm. Send email to or post on the discussion board if you have any questions. (Michelle 1/30/13)

There is a problem with question 7 in quiz 1. The regular expression for an integer litetral should be [0-9]+ or [0-9][0-9]* in order to ensure that a number has at-least one digit. We will give everyone full credit for this question. (Andy 1/27/13)

Dr. Strout is sick with Appendicitis, Dr. Wim Bohm will be covering lectures until she recovers. Andy Stone will be covering lecture on Thursday (1/31/13) since Dr. Bohm is out of town then. (Andy 1/27/13)

The MJ_PA#.jar files are now available in ~cs453/public/ for use in PA1. PA1 is also now officially posted. (Michelle 1/25/13)

Quiz 1 has been posted on RamCT and is due Sunday January 27th at 11:59pm. You can only submit it once. You can use any notes or reading material to help answer the questions. (Michelle 1/24/13)

Reading assignments have been posted on the schedule. Additionally, see the resources page for the tools we will be using in this class. (Michelle 1/21/13)

This class webpage will be under construction until classes start January 22nd. See the CS 453 Spring 2012 webpage if you want to know more about the kinds of projects we do in this class. Class starts January 22nd. See you then! (Michelle 1/15/13)

The picture of the Meggy Jr RGB has been used with permission from the Evil Mad Scientists Laboratories.