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. 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).
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.
• 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.
• The programming language that you would like to use, and whether or not it is already available in the linux.student.cs environment. If you installed it yourself, include detailed instructions on how you did so.