Description

Instructor:
Michelle Strout
Office: 342 CS Building
Office Hours: Wed 4-5pm
Email: mstrout@cs.colostate.edu
GTA:
Ramadan Abdunabi
Office: 120 computer lab
Office Hours: Monday: 11-12, Tuesday: 2-4, Thursday: 10-11
Email: cs453@cs.colostate.edu
Lecture Time and Place:
12:30-1:45, TR, BSB 107
Recitations:
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.

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, dictionaries, 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, which are 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, which is covered in CS70 (Computer Organization) at CSU.

Class Communication

  • Web Page: http://www.cs.colostate.edu/~cs453
  • Email: cs453@cs.colostate.edu
  • Announcements: Web Page
  • Discussions: RamCT Forum
  • Recommended Textbook

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

    The above book might be helpful, and suggested readings from this book will be posted on the schedule. There will also be required non-book reading assignments posted on the schedule page of this web site. Students are responsible for doing the required 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 will be graded RamCT quizzes on the material in the reading assignments.

    Student Responsibilities

  • Read the announcements on the course webpage and RamCT daily.
  • Complete the reading assignments listed on the Schedule link on the course webpage.
  • Complete the homework and programming assignments listed on the Schedule link on the course webpage and submit them as specified on time.
  • Attend lectures and the weekly recitation for which you are registered and participate in both.
  • Distance students are expected to watch each class meeting and recitation in a timely fashion (within a couple of days of posting) and will need to participate in questions on the RamCT forums.
  • Grading

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

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

    Semester grades are determined by the weighted sum of points earned in each of these areas. A curve may be used for the midterm and final, but ONLY if these have averages less than 80. 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 each of the following parts of the course: homework (programming assignments, homework assignments and reading quizzes) and the in class work (midterm, and final). For example, a 100% in the homework grades combined with a 49% midterm and final will NOT result in a passing grade.

    The homework assignments and reading quizzes will be done individually, and grades assigned on an individual basis. Starting with PA2, it will be possible and strongly encouraged to do the programming assignments in programming pairs. Programming pairs will be voluntary, and each pair will have to submit some extra information about how the work was shared.

    The lowest quiz score will be dropped. There will be approximately 6 or 7 quizzes over the course of the semester. Quizzes will be announced on the web page at least 72 hours before they are due.

    Late and Makeup Policy

    Midterm and Final: The midterm and final must be done individually. If you have a family or medical emergency that prevents you from attending a the midterm or the final, let the instructor know as soon as possible and be able to provide documentation such as a doctors note.

    Recitation: Information covered in the recitations will be needed for doing well on the programming assignments. Additionally any material covered in recitation may be on the midterm and/or final. PA0, which is done in the first two recitations, will be graded and be included in the programming assignment grade. PA0 is 10 points and the other 6 programming assignments are 100 points each.

    Homework assignments and Programming Assignments: There will be 4 written/typed homework assignments that need to be submitted as pdfs using checkin. Scanning in written assignments is possible.

    There will be 6 programming assignments and a PA0. Many of the programming assignments can use a Meggy Jr device to run programs, HOWEVER you do NOT have to get a Meggy Jr device for this class. There is a simulator for Meggy AVR assembly for grading purposes. If you are a distance student, you can buy a Meggy Jr kit if you like soldering and think it would be fun to have the device itself. Students on campus can check out an assembled Meggy Jr.

    Unless otherwise specified, programming assignments and homeworks are to be submitted using the checkin program and quizzes are to be submitted electronically using RamCT. Specifics will be included in each assignment. Always check the schedule page for due dates.

    Late homework and programming assignments submitted within 48 hours of the time required will receive a 10% late penalty per day. Electronic submission is closed 48 hours after assignments are due. Late submissions on quizzes will not be accepted.

    Students not having submitted programming assignments, homeworks, or quizzes receive an automatic zero on the assignment.

    Important Dates

    Make sure to bring a picture ID to the midterm and the final.
    In class midtermTuesday, March 12
    Final Exam Monday, May 13th, 9:50 AM to 11:50 AM

    The in-class midterm and the final exam will be held in the same classroom as regular lectures. While no change to the midterm dates is anticipated, the instructor reserves the right to change these dates with a weeks notice.

    Class Participation

    All students taking this course are expected to participate actively. This includes asking and responding to questions either in class and/or on the RamCT discussion board.

    Students are also expected to read the announcements/news on the main course web page, postings to the RamCT discussion board, and the schedule page EVERY DAY for any updates.

    Slide sets are available on the class progress web page, however lectures will present material that is not covered anywhere else.

    Professional Conduct

    Exams and homework assignments will be done individually and grades assigned on an individual basis. Further, students not already familiar with the CSU Honor Pledge should review this clear and simple pledge and always adhere to it.

    All students are expected to conduct themselves professionally. We (the instructors and GTAs) assume you know the policies in the student information sheet for the department. The course will adhere to the Academic Integrity Policy of the Colorado State University General Catalog and the Student Conduct Code, which states that "As a student at Colorado State University, I recognize my active role in building a Campus of Character. This includes my commitment to honesty, integrity, and responsibility within the campus community. As such, I will refrain from acts of academic misconduct." In CS 453, you can talk with other students about the homeworks, but you CANNOT copy answers from each other. One good rule of thumb is to NOT take notes while talking with other students in the class. Just discuss the issues and then go work on your own homework. You should be able to explain your own work to a TA or the instructor at any time.

    Additionally, we consider you to be computing professionals. You should be familiar with the code of conduct for the primary professional society, ACM. You can read the ACM Code of Conduct. There is also a code of conduct for the Computer Science Department.

    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 linux labs (130, 215, 325) are professional environments and therefore professional behavior is expected in the labs 24 hours a day.
    • Meggy devices will be checked out upon request. You will be responsible for turning this equipment back in at the end of the semester in working order.
    • 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 turn it off and put it away.
    • All exams are to be done with only the aid of a single, 8.5x11 study sheet. Laptops and all other electronic devices must be shut and put away during exams and in class quizzes. Online quizzes can be done with any notes.