Guidelines on Reports
Some assignments require a report.pdf
document.
The document will be evaluated based on both writing and technical
content. Good writing often reflects good thinking. Be clear, thorough,
and concise.
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.
Work
Describe what each group member did.
Thoughts
- 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?