Examination

Project

The main part of the course is a project, where you implement a complete compiler for a simple imperative language called Javalette. The project is done in groups of one or two students; we recommend that you work in pairs.

The project is described in the project instruction. The project is divided into two parts with separate submission dates:

  1. Front end and JVM back end. The front end does lexing, parsing and type checking and builds a suitable intermediate representation and the back end generates code for the Java virtual machine. Your compiler must accept and generate correct code for all programs in the good directory and reject all programs in the bad directory. Your submission must be prepared according to appendix A in the project description and pass the automatic tester.

    Front end issues are part of the syllabus for the prerequisite course Programming language technology. These things are not taught in this course. You are expected to be able to implement the lexer, parser and typechecker for Javalette using previous knowledge during the first week of this course.

    The deadline for the first submission is Monday April 25, 23.59. The deadline is sharp; the submission system will not accept late submissions. Of course, if you are ill or have another good reason, you may get an extended deadline, but you must then explicitly ask for an extension in an email to Björn, explaining the reason. This email must be sent before the deadline.

    We know that this is in the middle of the Easter break. You may, of course, submit before the break; we believe this to be feasible. The deadline is set to allow those of you who want to finish during the break to do so!

  2. Back end for the LLVM and, optionally, source language extensions and/or back end generating native x86 code.

    Again, your compiler must reject all bad programs and be able to run all good programs. There are also test programs for the various extensions.

    The deadline for this second submission is Thursday, May 19, 23.59.

Both parts are submitted using the Fire system.

Oral exam

In the exam week, May 23--27, there will be brief individual oral exams; schedules for these will be decided the preceding week. The objective of the exam is to test the student's understanding of his/her project.