Assignment 0: Choosing a Group and a Language
The overall project for the course is to write a compiler from Joos 1W
a fairly large subset of Java, to
i386 assembly language (the Netwide
Assembler dialect). The project will be done in groups of
three or four. The project will be broken up into several assignments
with fixed due dates. The assignments must be submitted to the
Marmoset on-line
submission and testing system.
The project may be done in any programming language of your choice,
as long as it can be practically installed in the linux.student.cs
environment. If your language of choice cannot be installed,
you may have to choose an alternative language.
One of the goals of the course is for you to understand how compilers
and compiler-generation tools work, rather than relying on them as
mysterious black boxes. Therefore, your compiler must use only code that
you wrote or that is provided to you by the instructor.
Your compiler may use machine-generated code, as long as the code that
generated it was written by you or by the instructor.
You may use the standard library that comes as part of the programming
language that you choose to use. If you have any doubts about which code
you may or may not use, please ask the instructor for clarification.
Each group should use Git for version control.
You are required to use the University's GitLab Enterprise Edition.
- It is already configured with your WatIAM (Quest) userid, so you can
begin using it just by logging in and adding your group members to your
project (after they have also logged in for the first time).
- Your data is stored at the University of Waterloo in compliance with its
privacy policy.
Do not post any of your code to any publicly readable repositories.
For all assignments other than this one, your submission must include a
log file (a1.log
, a2.log
, ...) containing your group’s commit
history. The log file must be automatically generated by git log
;
modifying the log file in any way will be considered a violation of
academic integrity. If you feel significant clarification is needed,
instead briefly mention it in your report submission. For example, if
you employ pair programming for elements of the assignment (not a bad
idea!), you may wish to clarify this in your report, as only one member
would appear on the commit history for that work.
For assignment 0, complete the following tasks:
- Choose a group of three or four. Group sizes smaller than three are discouraged and require instructor approval.
- Agree on an implementation language, and determine whether it is
already available on the
linux.student.cs
environment or if it is
easy for you to install yourself.
- Complete the online form, indicating your group members and your
chosen language. The link to the form is available on Piazza. Only one group member should submit the form for the group.