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.

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: