Examination

The examination in this course consists of two parts: a project and an oral exam. In order to pass the course you must complete the mandatory parts of the projects and pass the oral exam. For a higher grade there are several extensions available to the project which you can do. See the project description for details. The oral exam does not affect the grade.

Things which are considered when grading the project:

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 three parts with separate submission dates:

  1. Front end. The front end does lexing, parsing and type checking and builds a suitable intermediate representation. 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 April 19, 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 Josef, explaining the reason. This email must be sent before the deadline.

  2. Back end for the LLVM.

    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 May 10, 23:59.

  3. Language extensions and/or back end generating native x86 code.

    The deadline for this submission is May 24, 23:59.

All parts are submitted using the Fire system.

Oral exam

In the exam week 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.