Instructor:
Michelle Strout
Office: 244 CS Building
Office Hours: Tuesday 9-10am, Friday 3-4pm
Email: mstrout@cs.colostate.edu
GTA:
Kushagra Tiwary
Office: 120 CS Building
Office Hours: Tuesday 3-4pm, Friday 12-1pm
Lecture Time and Place:
10:00-10:50am, Mon, Wed, Fri, COMSC Room 425
Recitation 1 Time and Place:
9:00-9:50am, Friday, COMSC Room 215
Recitation 2 Time and Place:
2:00-2:50pm, Monday, COMSC Room 225

CS 453 teaches students how to implement programming languages with a compiler. 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, and testing.

Students write a compiler for a subset of Java called MeggyJava. Starting this year, we will be writing the compiler in Haskell so as to learn a new programming paradigm and some programming constructs such as pattern matching that significantly ease the development of compilers (or translators generally). 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.

News:
Quiz 6 has been posted. It is due Friday 5/8/15. (Michelle 5/5/15)

CHANGE in Final time!! We are changing the final to be Thursday May 14th 9:40am to 11:40am. Apparently the CS 430 final is Wednesday night and doesn't conflict (website typo). If you need to take the final Thursday May 14th 7:30 to 9:30, please let me know via email. (Michelle 5/4/15)

HW4 has been posted. (Michelle 4/28/15)

PA5 has been posted. HW4 has been pushed back some and will be posted soon. (Michelle 4/20/15)

Old News:
NO CLASS Wednesday April 22nd. Recitation this Friday and Monday will replace material we were going to cover. (Michelle 4/20/15)

Quiz 5 is due Wednesday April 22nd. It is posted on Canvas. (Michelle 4/16/15)

Quiz 4 is due Friday April 10th. It is posted on Canvas. (Michelle 4/7/15)

Quiz 3 is due Wednesday April 8th. It is posted on Canvas. (Michelle 4/4/15)

HW3 has been edited. There was a typo that affects the answer. The grammar should have (stm->ID EQ SEMI) and (sl -> epsilon | stm sl). (Michelle 4/1/15)

April 1st, class is canceled today due to illness. (This is not an April fool's joke. (Michelle 4/1/15)

HW3 (there was no HW2), PA4, and Quiz 2 have been posted. Quiz 2 has been posted on Canvas and is due Wednesday night April 1st (no kidding it really is). Read the LR Parser wikipedia entry at to help answer the questions. (Michelle 3/29/15)

regress.sh has been updated to match expected usage of your mjc executables. Given an input file name foo on the command line, your mjc should generate an output file named foo.s. (Michelle 3/22/15)

You need to upload your PA3 demo video to PA3 demo videos page. One upload per group will suffice. (Kush 3/13/15)

No class on Friday March 13. Extra office hour instead. (Michelle 3/11/15)

PA3 has been posted. (Michelle 3/2/15)

The midterm review has now been posted. (Michelle 2/28/15, 6:30am)

We are ahead on class material. Tomorrow's class is going to be a help session for PA2b. Unfortunately none of the labs are open. Bring your laptop or printouts or just questions. (Michelle 2/24/15)

PA2b has been posted. (Michelle 2/18/15)

PA2a has been posted. (Michelle 2/9/15)

HW1 has been posted. (Michelle 2/3/15)

Notes from the last two lectures have been posted on the progress page. (Michelle 1/26/15)

Initial website has been posted. See the Resources tab for some information about Haskell. We will be writing the compiler in Haskell this semester. (Michelle 12/26/14)

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