Description

CS 453 teaches students how to implement interpreters and 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, 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.

 
Instructor:
Wim Bohm
Office: 344 CS Building
Office Hours in 344: Mon 1-2pm
Email: bohm@cs.colostate.edu
GTA:
Andy Stone
Email: aistone@gmail.com
Lecture Time and Place:
12:30-1:45, Tuesday and Thursday, Forestry 107
Recitation Time and Place:
9:00-9:50 am, Friday, CSB Room 215

Prerequisites

In order to understand the material in this course, you will need to have a good working knowledge of data structures such as linked lists, trees, symbol tables, and dynamically allocated structures. You will need to know how to implement these data structures in Java, C, and C++. To successfully complete this course, you should be familiar with material related to the above topics covered in CS200 (Algorithms and Data Structures), CS253 (Problem Solving with C++), and CS314 (Software Development Methods). You will also need to have a good understanding of the memory model and the concept of calling conventions as covered in CS270 (Computer Organization).

Textbook

Modern Compiler Implementation in Java (Second Edition) by Andrew Appel, Cambridge, 2002.

The progress page of this web site contains links to each weeks reading. Students are responsible for doing the assigned reading prior to the lecture in which the material is to be covered. Reading assignments are announced in class. Students in doubt about reading assignments are encouraged to ask for clarification in lecture. There are in-class quizzes.

Grading

Here are the formally graded elements of the course and associated weighting:

Activity Weight
Programming Assignments 40 %
Homework Assignments 10 %
Quizzes 10 %
Midterm 20 %
Final Exam 20 %

Semester grades are determined by the weighted sum of points earned in each of these areas. A compression curve is used for the midterm and final individually. All other grades in the course are not curved. The grading scale is as follows: >= 90 is an A, >= 88 is an A-, >=86 is a B+, >=80 is a B, >=78 is a B-, >=76 is a C+, >=70 is a C, >=60 is a D, and <60 is an F.

To pass this course, you must maintain at least a 50% average in the assignment grade (programming + homework assignments) and the test grade (quizzes + midterm + final). For example, a 100% in the assignment grade combined with a 49% test grade will NOT result in a passing grade.

The lowest homework and quiz scores will be dropped.

Exams, homework assignments, and quizzes will be done individually and grades assigned on an individual basis.

PA0 from the recitation and PA1 will be done individually and then students will be placed into programming pairs for later assignments. Partners will be selected by the instructor based primarily on similar grades for PA1 and additionally based on student preferences.

Late and Makeup Policy

Midterm and Finals: Make-up exams are only given for extraordinary circumstances (e.g., illness, family emergency). Students must consult with the instructor as soon as possible, preferably before the start of the exam. Course examination dates are listed in the syllabus; be aware of them and plan accordingly.

Projects: Unless otherwise specified, programming assignments are to be submitted electronically using checkin. Specifics will be included in each assignment. Always check the assignment page for due dates. Late assignments submitted within 48 hours of the time required will receive a 10% late penalty. Electronic submission is closed 48 hours after assignments are due; students not having submitted programs receive an automatic zero on the assignment.

Important Dates

In class midtermDate TBD (Probably week 7)
Final Exam May 8, 2012 (6:20 - 8:20 PM) In Forestry 107

Any in-class midterms and the final exam will be held in the same classroom as regular lectures.

Class and Recitation Participation

All students taking this course are expected to participate actively. This includes asking and responding to questions. The material covered in the recitations will not be covered in lecture and will be on the midterm and final. During some of the recitations, you will need to show the TA a working piece of your current programming assignment. Such checkpoints will be part of the programming assignment grade.

Students are also expected to read the announcements/news on the main course web page, postings to the mailing list, and the progress page every day for any updates. Sign up for the mailing

Professional Conduct

All students are expected to conduct themselves professionally. We (the instructors and GTAs) assume you are familiar with the policies in the student information sheet for the department. Additionally, you are computing professionals, albeit perhaps just starting. You should be familiar with the code of conduct for the primary professional society, ACM. You can read the ACM Code of Conduct HERE.

We work to maintain an environment supportive of learning in the classroom and laboratory. Towards that end, we require that you be courteous to and respectful of your fellow participants (i.e., classmates, instructors, GTAs and any tutors). In particular:

  • The CS 130 linux lab is a professional environment and therefore professional behavior is expected in the lab 24 hours a day.
  • Meggy devices will be checked out to groups upon request. You will be responsible for this equipment.
  • In the labs and in class, please turn off the ring on your cell phone. If you are expecting an emergency call, sit near the door and slide out discretely to take it.
  • In class use of electronic devices in general, and laptops specifically, is permitted as a courtesy so that you may better participate and learn. If at any time the instructor judges that an electronic device is becoming a distraction the student may be asked to to turn it off and put it away.
  • All exams and quizzes are to be done without the aid of notes of any kind. Laptops and all other electronic devices must be shut and put away during exams and quizzes.