Attending class is mandatory. All students are responsible for the material covered in class. The projects and the final exam are directly related to the material discussed in class.
There will be a number of projects (4-5) in the course, which are the primary contributors toward your grade. Please see the percentage distribution in the Grading section.
All the projects are sub-projects of one main project: To develop a compiler for a subset of C language that generates a MIPS-32 assembly.
For testing, we will use the SPIM simulator to simulate the generated code.
Students are encouraged to discuss course materials. However, no collaboration is allowed on projects. Specifically you may discuss projects verbally, but must write up or work on the computer alone. One way to avoid accidental plagiarism is to ensure that you are never looking at anyone else’s code while you are writing your own.
In addition, any discussion should be documented. An example might be including the following in your README file: “Thanks to John Hugg for showing me how to initialize the linked list.” Another important example is citing a source. For example, “I used the Wikipedia page on the Poisson distribution to learn more about generating random arrival times.”
While computers enable easy copying and collaboration both with other students and materials from the Internet, it is possible to use these same computers to detect plagiarism and collaboration. The course staff reserves the right to use any available computational tools, or to write new tools, to search for infractions.
There will be only one exam at the end of the semester. The exam would be held during the regular class time, in the usual classroom.
We reserve the right to make changes to the above distribution. Rest assured, such changes would be minor and help represent a fair distributions of grades. All students would be notified of such a change.