Course Program

The course aims to give knowledge about the principal structure of a compiler and about the basic theories and methods used to implement compilers. You will construct a small compiler from text to machine code as part of the assignments.

Course responsible: Prof. Görel Hedin

Formal course plan: https://kurser.lth.se/kursplaner/17_18%20eng/EDAN65.html

Prerequisites

The course assumes:

Formally, the requirement is EDAA01 (Programming, Second course).

Literature

We will use the following book by Appel as the main course literature. Note, however, that we will not cover the whole book, and there are important parts of the course that are not covered by Appel's book, and where we instead provide articles. Lecture slides, quizzes, exercises and assignments are also part of the course literature, and will be made available on the course web.

Course forum

We will use Piazza as a Q&A forum for the course. Use this forum to

We encourage students to answer questions from other students. The forum will be monitored by course staff. You can be anonymous both in posting questions and answers.

To access the forum you need to:

Lectures

There are 14 lectures, 2 hours each. You confirm your registration at the first lecture.

Quizzes

There will be quizzes associated with some of the lectures. After each lecture, review the slides, then do the quiz for the lecture. You can do the quizzes as many times as you like, they will not affect your grade. You find the quizzes in a separate system call Moodle.

To access the quizzes in Moodle you need to:

Exercises

There are exercises for several of the lectures, and some of them include solutions. For those with solutions, try hard at solving them without looking at the solutions first. That way you will learn much more. You do not hand in the exercises, and they do not affect your grade, but they are important to do in order to understand the course content and pass the exam.

Assignments and lab sessions

There are six mandatory assignments. There are weekly 2-hour lab sessions (starting in week 2) where you can get help, and where you get your assignments approved. There are no written reports, instead you should be able to show working code, explain how it works, and show answers to questions in the assignment descriptions. Note that the assignments are fairly heavy, and you need to do the major part of the work before going to the lab session. The expected effort varies quite a lot between different assignments, and we give some estimates for each of them. There will be a catch-up lab session in week 8.

Signing up for lab sessions

You do the labs in pairs. You can find a partner at the first lecture, or by using the Piazza forum. You sign up for lab sessions during the first week. There are three different occasions to choose from. Make sure you and your partner sign up for the same occasion (you sign up individually). To sign up for lab sessions:

If you would like to switch sessions, make sure there is an empty slot (or someone willing to switch with you), and email Görel, and I will do the switch.

Working with the assignments/labs

Getting help. If you get stuck and need help between lab sessions, please use the forum. You are also encouraged to help others by answering their questions on the forum. However, you are not allowed to post solutions to the assignments on the forum or anywhere else.

Use a git repository. If you would like to use a git repository for your solutions, make sure to make it private, since you are not allowed to share your solutions with other course participants. For example, the hosting service bitbucket supports free private git repositories.

Working with your partner. In working together with your partner, it is important that you both contribute to all parts of the solution. You should use pair programming and switch very frequently who is at the keyboard. It is very important that you both get hands-on experience of doing all of the different kinds of programming, and that you both fully understand all of the aspects of the solution you create. You should both be able to individually explain all parts of the solution.

Cooperation vs plagiarism. Naturally, you may not copy the solution from another pair, or give your solutions to others, but you are free to discuss the assignments with other pairs in general terms. For more details on cooperation versus plagiarism, see the department rules.

Assignment supervisors:

Exam

To be allowed to write the exam you need to have completed all the programming lab assignments.

As for all other LTH written exams, you need to sign up for the exam in advance. (Same information in Swedish.)

The regular examination is held on Wednesday, October 25, 14:00-19:00, MA:10. The retake exam will be TBA.

To obtain a final grade you must have passed the written examination and completed the programming lab assignments. The grade is based on the written exam only.

Continued studies and work

The course EDAN70, Project in Computer Science, offers in-depth compiler projects in study period 2, 2017.

Master thesis compiler projects are available both at the CS department and in industry. Some recent examples:

Compiler construction is general knowledge that is useful in any advanced software development as well as in computer science research. Here are some examples of companies offering compiler-oriented master thesis projects, internships, and jobs:

You can get in contact with local companies at the TLTH Arkad fair, Nov 15-16, 2017.