News

Project Discussion Schedule Announced

Written on 17.02.25 by Joachim Meyer

Hi all,

you should now have an Issue in your c4 project in the Gitlab with the date and time of your project discussion, during the first week of March.
Please make sure that you are at the room in time, but do not enter before you are called in.
At least one group member should have the project… Read more

Hi all,

you should now have an Issue in your c4 project in the Gitlab with the date and time of your project discussion, during the first week of March.
Please make sure that you are at the room in time, but do not enter before you are called in.
At least one group member should have the project source code and a working build readily available on a laptop.
You do not need to prepare slides or the like.

Please make sure that the group.txt file in your project is up to date and includes exactly all group members who intend to pass the course with this project implementation.

With the project deadline on Friday, late in the evening, be aware that the last daily test runs that you can react to will happen in the night from Thursday to Friday, so be careful what you push.

Best,
the CC Team

Date Poll: Competition Presentation

Written on 14.02.25 by Joachim Meyer

Hi all,

as announced earlier, we will have a competition for the best compile- and run-time for your (sufficiently correct) compilers!

A project assignment was just released that gives some more details about what needs to be done to participate in the competition.
Note, these requirements have… Read more

Hi all,

as announced earlier, we will have a competition for the best compile- and run-time for your (sufficiently correct) compilers!

A project assignment was just released that gives some more details about what needs to be done to participate in the competition.
Note, these requirements have to be met until the hard deadline of the project next week.

We will have a meeting, after the deadline, to present the competition results to you. Please fill in the respective Date Poll in the material section by next Thursday (20.02).

Main Exam Results Available - Inspection: 19.02. 13:00

Written on 11.02.25 (last change on 12.02.25) by Joachim Meyer

Hi everyone,

today's exam results are now available.

The inspection for this exam will be next Wednesday, 19 Feb 25, 13:00-14:00 in E1.3 4.01

Last reminder: if you haven't filled out the form for the CC Project Discussions, you can still do so until the 14 Feb 25.
The project deadline will… Read more

Hi everyone,

today's exam results are now available.

The inspection for this exam will be next Wednesday, 19 Feb 25, 13:00-14:00 in E1.3 4.01

Last reminder: if you haven't filled out the form for the CC Project Discussions, you can still do so until the 14 Feb 25.
The project deadline will be on 21 Feb 25.

Exam Relevant Material

Written on 06.02.25 by Sebastian Hack

Just a brief clarification: The material with a lecture number greater or equal 23 is not relevant for the exam.

No lecture today. Final lecture on Thursday

Written on 04.02.25 by Joachim Meyer

Sorry for the short notice, there will be no lecture today given that we're missing the ability to speak right now.

See you for the final lecture on Thursday.

Final (replacement) Tutorial

Written on 04.02.25 by Joachim Meyer

Hi everyone,

since one of the tutorials was skipped yesterday, without prior notice, we are offering an online replacement tutorial tonight, 04 Feb 2025, 19:00 s.t.! (link below)
This is a good chance to get some exam preparation if you could not attend the tutorial(s) otherwise.
The tutorial… Read more

Hi everyone,

since one of the tutorials was skipped yesterday, without prior notice, we are offering an online replacement tutorial tonight, 04 Feb 2025, 19:00 s.t.! (link below)
This is a good chance to get some exam preparation if you could not attend the tutorial(s) otherwise.
The tutorial presentation is also available in the Materials section now.

Link to online tutorial:

https://teams.microsoft.com/l/meetup-join/19%3ameeting_NDE3YTVmYTctMjMzNy00YjI5LWIyNDUtMmFjMjgyMjY2YTNk%40thread.v2/0?context=%7b%22Tid%22%3a%2267610027-1ac3-49b6-8641-ccd83ce1b01f%22%2c%22Oid%22%3a%22f131464d-c926-4a69-8fd9-a2025fbe002f%22%7d

 

First Exam Information

Written on 03.02.25 by Joachim Meyer

On Tuesday next week, 11 Feb 2025, the first exam will take place in lecture hall 002, in E1 3. The exam starts at 09:00 sharp, please be at the lecture hall at least 15 minutes prior to that. You will have two hours for the exam. No cheat sheets or tools other than writing utensils are allowed.… Read more

On Tuesday next week, 11 Feb 2025, the first exam will take place in lecture hall 002, in E1 3. The exam starts at 09:00 sharp, please be at the lecture hall at least 15 minutes prior to that. You will have two hours for the exam. No cheat sheets or tools other than writing utensils are allowed. Electronic devices will have to stay turned off in your bags at the sides of the lecture hall.

If you want to participate in the exam, make sure that you have registered in the LSF or that you have sent a mail to Joachim Meyer if you cannot register for the exam in the LSF.

Remember to fill out the time scheduling survey for the project discussions linked on the Materials page by Friday, 14 Feb 2025, if you would like to have your project graded.

There will be one more Office Hour this Wednesday, 05 Feb 2025 13:00-14:30.
Bring your project-related questions.

Guest Lecture by Michel Steuwer (TU Berlin)

Written on 28.01.25 by Sebastian Hack

Hi all,

Michel Steuwer from TU Berlin is visiting today and he will give a guest lecture with the title: "How to design the next 700 optimizing compilers".

Abstract:

Massively parallel hardware combined with carefully optimized software has enabled the deep learning revolution. To deliver the… Read more

Hi all,

Michel Steuwer from TU Berlin is visiting today and he will give a guest lecture with the title: "How to design the next 700 optimizing compilers".

Abstract:

Massively parallel hardware combined with carefully optimized software has enabled the deep learning revolution. To deliver the efficiency and performance demanded by the next generations of AI applications a zoo of highly specialized hardware devices is developed. Writing software for these devices is highly complex and only the largest companies are able to make massive investments in such short-lived software that currently has to be rewritten and re-optimized for each new generation of hardware devices.
 
Current automatic optimizing compilers that turn high-level programs into low-level code often disappoint to deliver satisfying performance. They disappoint by failing to exploit the increasingly specialized hardware features, but they equally disappoint by failing to perform crucial high-level optimizations in many important, but less mainstream, application domains.
 
In this talk, I will present our approach for designing the next generation of optimizing compilers. These compilers systematically optimizing domain-specific applications for a diverse set of specialized hardware. They support a wide range of optimization use-cases ranging from using automatic and AI-driven design space exploration techniques to precise control of optimizations by performance engineers, and gradual combinations of automation and control. Key to our design is that we embrace extensibility and composability of both computations and optimizations. Computations are represented by a pattern-based intermediate representation. Fundamental building blocks are flexible generic patterns. This intermediate representation is easily extensible with domain- and hardware-specific patterns. Optimizations are composed of simple rewrite-rules either in a purposely build strategy language that allows to precise control of optimization strategies, or in a semi-automatic technique using equality saturation. The compiler is easily extensible with domain- and hardware-specific optimization strategies and experts are allowed to control the optimization process to various degrees.
 
I aim to demonstrate that this generic and flexible design achieves high-performance comparable to existing domain-specific compilers on existing massively parallel hardware and show exciting future research directions that opens up from our approach.

Action Required: Exam Registration, Project Discussion Scheduling

Written on 09.01.25 by Joachim Meyer

tl;dr:

  • first exam: register now! 11 Feb 2025, 09:00-11:00 in LH 002, building E1 3.
  • fill in the poll linked on the Materials page to schedule a project presentation for your group by 14 Feb 2025
  • deadline for the project is the 21 Feb 2025
  • office hours: 15 Jan 2025 and 05 Feb 2025, each… Read more

tl;dr:

  • first exam: register now! 11 Feb 2025, 09:00-11:00 in LH 002, building E1 3.
  • fill in the poll linked on the Materials page to schedule a project presentation for your group by 14 Feb 2025
  • deadline for the project is the 21 Feb 2025
  • office hours: 15 Jan 2025 and 05 Feb 2025, each 13:00-14:30

Hi all,

the exam registration is now open in LSF. The first exam will take place on 11 Feb 2025, 9-11 in E1.3 LH 002.
You can register until one week before the exam date. Register now, so you don't forget!
If you cannot register in LSF and want to get a Schein, please register by writing an E-Mail to Joachim Meyer.

The project discussions will take place from Wednesday, 05 Mar 2025, until Friday, 07 Mar 2025, in person in room 4.01, E1.3.
Please enter your group's preferences for timeslots on these days in the poll linked on the Materials page in the CMS until no later than Friday, 14 Feb 2025.
Only one person should enter the preferences per group (under the group's name), please agree on them beforehand.
Select as many time slots as possible where all group members are available.
Your meeting will take place in a 30-minute period within one of the selected time slots.
We will announce the exact times for each group once we have assigned them after 14 Feb 2025.

To pass the project and thus the course, students must participate in their group's project discussion.
At least one group member should have the project source code and a working build available on a laptop.

As a reminder: the hard deadline for the project is the 21 Feb 2025.
Anything that is changed after this deadline will not be considered.

There will be two more office hours to discuss questions regarding the project.: 15 Jan and 5 Feb, each 13:00-14:30.

Best,
the CC Team

Course Evaluation

Written on 09.01.25 (last change on 09.01.25) by Sebastian Hack

Dear all,

we'd be very happy if you could fill out the course evaluation forms (one for the lecture, one for the tutorial). Any constructive criticism is very welcome and has helped us in the past to improve the course. Your opinion matters! You can find the links in the Material section of the… Read more

Dear all,

we'd be very happy if you could fill out the course evaluation forms (one for the lecture, one for the tutorial). Any constructive criticism is very welcome and has helped us in the past to improve the course. Your opinion matters! You can find the links in the Material section of the CMS.

 

 

Next Lecture Thu Jan 9

Written on 06.01.25 by Sebastian Hack

A happy new year to everyone. Tomorrow (Jan 7) there is no lecture. The next lecture is on Thu, Jan 9.

Office Hour Tomorrow (Wednesday) - Happy Holidays

Written on 17.12.24 by Joachim Meyer

Hi everyone!

The last office hour of the year will be tomorrow, Wednesday 18.12. 13:00-14:30.
Use the chance to discuss the project and get unstuck on missing failing tests!

For all those, who can't wait to make their compilers also generate code - the LLVM CodeGen project assignment will be… Read more

Hi everyone!

The last office hour of the year will be tomorrow, Wednesday 18.12. 13:00-14:30.
Use the chance to discuss the project and get unstuck on missing failing tests!

For all those, who can't wait to make their compilers also generate code - the LLVM CodeGen project assignment will be released this Thursday - the perfect excuse to take a break from family dinners ;-)
While we will release a new exercise sheet as well, this will only be discussed on the 13.01.

We wish you all a great holiday season, a festive and merry Christmas, for those that celebrate it, and the best possible start in the new year!
Don't forget to take a break and join the compiler fun refreshed next year.

- Your Compiler Construction Team

Lecture cancelled 12 Dec 24

Written on 11.12.24 (last change on 11.12.24) by Sebastian Hack

Dear all, I have to cancel tomorrow's lecture. We'll meet again next Tuesday for more code generation. This also means, there won't be a new exercise sheet tomorrow. I'm sorry for the inconvenience. Cheers, Sebastian

Upcoming Office Hour, Project Assignment & Mini Test

Written on 25.11.24 (last change on 25.11.24) by Joachim Meyer

Hi everyone,

we will host another Office Hour this Wednesday, 27.11. 13-14:30 to help with questions regarding the project thus far.
The office hour will be in E1.3 4.01 again.
This again is a good time to pick up your Mini Tests, if you haven't, yet.
As a heads-up: we will have a final office… Read more

Hi everyone,

we will host another Office Hour this Wednesday, 27.11. 13-14:30 to help with questions regarding the project thus far.
The office hour will be in E1.3 4.01 again.
This again is a good time to pick up your Mini Tests, if you haven't, yet.
As a heads-up: we will have a final office hour for this year on 18.12.!

The next project assignment will go live on Thursday, 28.11.

On Monday, 02.12., we will have another Mini Test in the tutorials.

Have a good week!

Office Hour on 6.11. 13:00-15:00

Written on 05.11.24 (last change on 05.11.24) by Joachim Meyer

We will offer an office hour tomorrow, 6.11., 13:00-15:00 in E1.3 4.01. This is a good place to come if you have questions regarding the project - particularly if there are still open questions about the lexer!

If you couldn't pick up your mini-tests yesterday, this will also be a good place to pick them up.

Minitest in Tutorials on 28.10.

Written on 25.10.24 by Joachim Meyer

On Monday Oct 28, we will offer to do a Minitest in the Tutorials - you will get 20min to work through a few exercises, which we will mark until the week after.
These are not admittance requirements, but good ways to gauge where you are standing with regard to the lecture contents.

Also, exercise… Read more

On Monday Oct 28, we will offer to do a Minitest in the Tutorials - you will get 20min to work through a few exercises, which we will mark until the week after.
These are not admittance requirements, but good ways to gauge where you are standing with regard to the lecture contents.

Also, exercise sheet 2 is available.

Lecture cancelled 22 Oct 24

Written on 22.10.24 by Sebastian Hack

Dear all,

I am sick and have to cancel today's lecture. Please watch the corresponding video from the previous iteration "Context-Free Grammars and Pushdown Automata" instead. It is contained in a YT playlist that is linked in the material section.

All the best,

Sebastian Hack

Tutorial assignments

Written on 18.10.24 by Joachim Meyer

We just assigned the tutorial slots for everyone, as the first session will be on Monday, 21.10. already:

  • 10 c.t. and 14 c.t. in E1.1 1.06
  • 16 c.t. in E1.3 1.07

Similar to the exercise sheets, the tutorials are voluntary.
In the first session, you will get a chance to find project group… Read more

We just assigned the tutorial slots for everyone, as the first session will be on Monday, 21.10. already:

  • 10 c.t. and 14 c.t. in E1.1 1.06
  • 16 c.t. in E1.3 1.07

Similar to the exercise sheets, the tutorials are voluntary.
In the first session, you will get a chance to find project group members, we will review some organizational questions, and some parts of the first topic to get you started with the exercise sheets.

If you have not provided your preferences yet and you were assigned an unsuitable tutorial, please let your tutor know and you will be re-assigned.

For late registrations, we will do another round of assignments on Monday morning.

First Exercise Sheet and Project Assignment Available

Written on 17.10.24 by Joachim Meyer

You can now find the first exercise sheet, which will be discussed in the tutorials on 28.10., and the first project assignment on the Materials page of the CMS.

First Lecture & Tutorial Preferences

Written on 15.10.24 (last change on 15.10.24) by Joachim Meyer

Hello everyone,

we're glad you chose to hear Compiler Construction (CC) this year.

Today, we're kicking the lecture off at 14:15 in lecture hall 001 (E 1.3).
We will review the course's organization, including the two points below, and then dive into the topic.

NOTE: We had to change the… Read more

Hello everyone,

we're glad you chose to hear Compiler Construction (CC) this year.

Today, we're kicking the lecture off at 14:15 in lecture hall 001 (E 1.3).
We will review the course's organization, including the two points below, and then dive into the topic.

NOTE: We had to change the tutorial slots (and added another one), therefore please re-do your tutorial preference selection until Sunday, 20 Oct.
If you are not yet registered for the course, but want to attend, please register until Sunday as well.

Finally, to register for the project: please follow the steps at How to Attend.

See you in class!

Show all

Compiler Construction

The course treats compiler construction for imperative programming languages. This includes lexical, syntactical, and semantic analysis as well as static program analysis, optimization, and code generation. This course provides all necessary theoretical knowledge required to implement a compiler from scratch, which forms the practical part of the lecture.

 

Syllabus

  • Lexing and Parsing (LL, LR)
  • Semantic Analysis, Type Checking
  • Foundations of Program Analysis by Abstract Interpretation
  • Program Optimizations and their Analyses
  • SSA
  • LLVM
  • Instruction Selection
  • Scheduling
  • Register Allocation
  • Polyhedral Compilation
  • DSLs

 

Lecture Dates

  • The lectures will be recorded and made available online.
  • Time and Place:
    • Tuesday 14-16 (c.t.) in Lecture Hall 001, Building E1 3
    • Thursday 12-14 (c.t.) in Lecture Hall 001, Building E1 3
  • First Meeting: Tuesday 2024-10-15
  • c.t. = cum tempore = an old tradition of some European universities.
    Here, it means that the actual time is the announced time +15 minutes

 

Modus Operandi

There will be voluntary exercise sheets that are discussed in tutorials.

To get a course certificate, students must pass the final exam and the project. If you pass both, the exam and the project, the final grades for the course will be computed as the (equally weighted) arithmetic mean between your exam grade and your project grade, rounded towards your exam grade.

The practical project is to be implemented in C++ by groups of 2-3 students. The grade will depend on how many tests your compiler passes, how much the individual students contributed to the project, and the demonstrated understanding of the project in the oral presentation. In the end of the lecture period, we will host a competition for the student compiler implementations. The top performing groups of the competition will earn a 0.3 (or 0.4) bonus to their total course grades.

Privacy Policy | Legal Notice
If you encounter technical problems, please contact the administrators.