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 – a working frontend and LLVM code generator, as well as at least one language extension – 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 more information about each extension.

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. Frontend. The front end does lexing, parsing and type checking and builds a suitable intermediate representation. Your compiler must accept all programs in the good directory and reject all programs in the bad directory, provided by the testsuite. Your submission must be prepared according to ‘submission’ section 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 Sunday, April 8 at 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 Alex, explaining the reason. This email must be sent before the deadline.
  2. Backend for 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 Sunday, May 6 at 23:59.
  3. Language extensions and/or back end generating native x86 code. The deadline for this submission is Sunday, May 20 at 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.

The exam is approximately 15 minutes per student. For the first five minutes we ask that you present an overview of the compiler and the problems that you solved as you implemented it. After the presentation there will be a few further questions concerning your compiler. If you did your project in a group of two, please try to book two adjacent time slots. Note also that you must be familiar with the whole project; it is not an acceptable answer that “my partner did that; I was instead responsible for …”.

You can only take the exam if you submitted your project on time, i.e. before the deadline. Be sure to follow the submission instructions given in the project description. A good way to check your submission is to copy your tar ball to a fresh directory and run the test script. If this does not work, you are sure to get an immediate rejection.

The oral exam can take place even if your project was rejected for you to make some minor corrections. However, if we could not test your compiler at all, the oral exam will be postponed.

Closer to the time of the exam week, there will be a link here to a doodle where you can pick a time for your oral exam.

Menu