Compiler Construction

Compiler Construction

Belegnummer: 30.2548 Modulbeschreibung

Final Exam

The date for the final exam is Thursday, July 12, 2018, 12:30 - 14h (12:30 - 2 PM) , but please see the OBS for up-to-date and authoritative information, and to rule out errors on my part.  Remember: The OBS is always right!

"Hilfsmittel"  were discussed and decided by those in class:
One page of notes is allowed. That means one piece of paper, not larger than DIN A4.  It is not important whether the notes are hand-written or printed or photo-copied, and you can use both the front and the back sides of the page, but no extra sheets of any form are allowed (including "post-its").

Apart from that:

  • Please bring your Student-ID and a photo ID (if there is no photo on your student ID).
  • You should also bring your own pens and/or pencils and your own watch (or other form of clock, as long as it is only a clock).
  • You may bring water (etc.).
  • Mobile telephones and other electronic devices must be turned off during the exam.

The questions on the exam will be in English. Students may answer in German or in English. Grammar and spelling will not be graded as such, but illegible, incomprehensible or ambiguous answers will cost points.

Dates

The Lecture is normally Tuesdays, from 10:15 to 11:45 (every week) and Thursday in Y-Weeks from 14:15h to 15:45h.

The Lab is on Fridays from 8:30-10 AM (both X and Y weeks, check the OBS to see which weeks are relevant for you).

Warnings:

  1. Please check the dates (and room numbers) in the OBS.  Date changes will be announced first via the OBS.  Should contradictions appear between the OBS and the dates given here, remember: the OBS is always right!
  2. Prof. Moore is only responsible for the lecture this semester. Mr. Nouri Alnahawi is responsible for the lab!

Lecture Notes: Please Log In!

The lecture notes are available for students and faculty of the h_da (only).  Please log in (for example at the top of this page) and then return to this page to see the lecture notes.

Laboratory ("Praktikum")

This year, the lab is offered by Nouri Alnahawi, and not by Prof. Moore.

During the first meeting (check the OBS to see when your first meeting is) the details of the lab will be discussed, and students will be assigned to teams. Thus, anyone who is unexcused absent on this date will not be able to take part in the lab and will forfeit their "seat" ("Platz"). Further, passing the lab is a prerequisite to take the final exam, so if you do not take part in the lab, you may not take the final and will not receive a grade.

Conversely, if you did not receive a seat in the lab yet, come to the lab anyway -- you might get a seat which someone else forfeited.

Overview

The description below was written in the past and is, to the best of my knowledge, still correct -- but if Mr. Alnahawi tells you something different, his word counts!

The Laboratory is a "Notebook" lab; please bring your notebooks with you to the lab!

Students will work in 2-person teams. Assignments will be programmed in C++.The goal of the lab is to build a compiler (in C++) that compiles a subset of the programming language "Go".

 Students should please familiarize themselves with (i.e. have a first look at) the web site at http://golang.org/.  The  Specification section is particularly important. The "Tour of Go" is also recommended. While you will not program your compiler in Go, you will need still to write test input in Go for your compiler; so you will need to know enough Go to write both correct (and intentionally incorrect) Go test programs.

We will be working with the following three compiler tools:

  1. Flex 
  2. Bison
  3. The LLVM Toolkit

Flex and Bison will be used starting with Exercise 2, LLVM will be introduced in Exercise 3.  Nonetheless, it would be good to have a look at all three as soon as possible.