Guidelines on Reports
Some assignments require a
The document will be evaluated based on both writing and technical
content. Good writing often reflects good thinking. Be clear, thorough,
Use good judgment about what will be useful to the course staff while
grading your assignment: incomplete and excessive documentation will
both be penalized.
Use letter-sized pages, a 10–12 point font, and reasonable margins and line spacing.
Reports submitted after the assignment deadline will not be marked and will receive a mark of zero. If you cannot finish the assignment by the deadline, submit what you have by the deadline, and explain any unfinished parts in your report.
A report typically contains the following components.
- Title (e.g., "Assignments 2–4: Static Checking")
- The names and WatIAM usernames of all group members
- The names of anyone with whom you have discussed the assignments
- Detailed instructions on how to build your compiler
Design and Implementation
This part should be the focus of your report. Things to consider:
- Organization of your program
- Design patterns, special data structures and algorithms, libraries
- Trade-offs you made between conflicting design goals (e.g., code simplicity vs. performance)
- Challenges you ran into and how you addressed them
- Any other noteworthy aspects of your design and implementation
Your job is to enable someone unfamiliar with your program to understand it (without looking at the source code) and to convince the course staff that you have thought carefully about the construction of your compiler.
Testing and Known issues
Describe your test cases and the result of testing. Detail any known issues of your compiler. Your compiler will be evaluated on secret Marmoset tests (to be run after the deadline of the final assignment), so you want to achieve good coverage of the input space and of your code in your own tests.
Describe what each group member did.
- How much time did you spend on the assignment? What did you like or dislike about the assignment? What would you change about it?
- What aspects of your chosen programming language did you find helpful in writing the compiler? What aspects caused annoyance?
- Any other thoughts?