1 Outcomes
2 Prerequisites
3 Names, Times, Locations
3.1 Instructor
3.2 Lecture & Lab
3.3 Web Page
4 Computing Environment
5 Readings
6 Communication
7 Assignments/ Milestones
7.1 Grading Methods and Expectations
8 Attendance Requirements
9 Final Project Submission
10 Final Paper
11 Teams
12 Interacting with the Handin Server
13 Cheating
14 Exams
15 Grades
16 Schedule/ Homeworks
17 Acknowledgments
Version: 4.1.4.3

CSC 431, Winter 2009

Schedule/Homeworks

This is a compilers class. In this class, you will build a compiler.

The benefits of building a compiler are manyfold; here are two important ones. First, you get a much better understanding of how to translate higher level languages into assembly language. Second, you get to build and maintain a ball of code that’s somewhat larger than you handle in many other courses (between 2K and 10K lines of code, depending on your language of implementation).

As a result, this course lives at the intersection of Programming Languages, Architecture, and Software Engineering. With luck, you’ll learn something about each of these.

1 Outcomes

At the end of this course, you should be able to

2 Prerequisites

Students taking this course must be able to design and implement small programs (~ 1 KLOC) efficiently. Students must have a basic understanding of mathematics.

3 Names, Times, Locations

Google Calendar:

See my Cal Poly Home Page for my calendar, including times & locations of labs, lectures, and office hours. You can add it to your calendar, if that makes your life easier.

3.1 Instructor

3.2 Lecture & Lab

Section 01/02:

Section 03/04:

3.3 Web Page

This is the course web page, its link is http://www.csc.calpoly.edu/~clements/csc431-wi09/.

4 Computing Environment

You may complete your assignments in this course using any language or environment that you like, as long as I can build and run your code on one of the department’s servers. In particular, along with any code you submit you must also include a Makefile whose default target builds the code, and a README that describes how to run the project against your tests.

5 Readings

This course uses a textbook. I’m sorry to report that it’s your classic made-from-dead-trees/costs-lots-of-money kind of textbook. The textbook is by Keith Cooper and Linda Torczon, and it’s called Engineering a Compiler.

6 Communication

There is a google group, csc431-wi09. You will need to join this group. You can request this by visiting the url

http://groups.google.com/group/csc431-wi09

I will use this group to tell you about important changes and updates to the assignments. However, it will also be a forum for you to help each other. As long as you’re not posting code, I strongly encourage you to ask questions and to respond to questions on the group. For this reason, I also require you to sign up in individual e-mail mode, and not in digest mode. Finally, you need to make sure that your postings are professional and civil. Imagine that your boss is reading them (I am).

7 Assignments/Milestones

The work in this class will consist principally of one quarter-long development project (hint: it’ll be a compiler). The first milestone will be a small programming assignment, to get the ball rolling. You will submit it electronically. Subsequent milestones will consist of in-lab demonstrations and/or public code and design reviews.

Unless otherwise specified, all assignments are due at 11:00 PM.

7.1 Grading Methods and Expectations

Boilerplate:

I will grade submitted code by running test suites of my own devising and by running your test suites and by reading your code.

I will grade your demonstrations and code and design reviews based on the success of the demonstrated code and upon the delivery of the presentation.

Naturally, all grades contain an element of subjectivity.

8 Attendance Requirements

Boilerplate:

I do not formally state attendance requirements.

9 Final Project Submission

You must submit your final project at the date specified by the schedule. As stated above, along with any code you submit you must also include a Makefile whose default target builds the code, and a README that describes how to run the project against your tests.

10 Final Paper

Each group will submit a paper detailing the design and implementation of their compiler project. This paper must describe the data structures used, the solution architecture, and the algorithms implemented. It should also include a table showing each file in your solution, how many lines it is, and what its function is.

You may

11 Teams

This class allows teams of size two. You are not required to work with a partner, but I strongly encourage it. Since your work through the quarter will all be on a single project, you will be working with the same partner for the duration of the class.

12 Interacting with the Handin Server

N.B.: This is tentative.

You will be handing in your work in this class using a specialized handin program that communicates with a handin server running remotely. From past experience, there are several things that may not be obvious about your interactions with this server.

13 Cheating

In the programming assignments, you may not copy another team’s code (including test cases and pseudo-code). You may not share code with other teams in the class. That is, you may not allow another team to see the code you write for the class, deliberately or through obvious negligence.

Any code you submit that is attributable to another source must be clearly identified as such. In general, you will not receive credit for code that your team did not write.

I will use an automated tool to compare student submissions and identify cheating.

Students believed to be cheating–that is, both parties involved in the transfer of code–will receive a failing grade in the class.

14 Exams

There will be a final exam in the class, at the place and time chosen by the registrar. It will be closed-book, and closed-note. No electronic devices, including cell phones or mp3 players, will be permitted during the exams.

Make-up or early exams will not be given except in the most extreme situations. If you must miss an exam due to extreme illness, etc., contact the instructor (by phone or by e-mail) or leave a message with the Department of Computer Science office (805-756-2824) before the exam. Be sure to leave both the reason for missing the exam and some way to reach you.

15 Grades

Grades will be determined by performance on programming projects, the exams, and class interaction. A small fraction of the grade is determined by the instructor’s whim.

Your grade in this class is subject to a ceiling, based on how well your compiler performs. Specifically, your grade will be no better than the letter grade on a straight scale corresponding to the percentage of the benchmarks for which your compiler generates correct code.

For example, if your compiler generates correct code for only 85% of the benchmarks, then your grade in the course will be no better than a B.

Subject to this ceiling, the breakdown of the grade is as follows:

16 Schedule/Homeworks

Did you miss the link at the top of the page?

17 Acknowledgments

Many thanks to Aaron Keen for course materials, including much of the text on this page.