Efficient Programs (185.190 VU, 194.189 PR)

Curricula

The VU is a mandatory elective course in the Curricula "Data Science", "Visual Computing", and "Software Engineering". It is an elective course in the curriculum "Computational Science and Engineering".

The PR is a mandatory elective course in the Curriculum "Software Engineering". In that curriculum the VU and the PR together form the module "Efficient Programs".

If you want to perform the PR, my recommendation is to perform it in the same semester as the VU. The material from the VU will be fresh on your mind, and the PR helps to avoid forgetting it. You will also have an easier time finding other students.

Übergangsbestimmungen (transitional regulations) for the curriculum "Software Engineering": If you have successfully completed the VU in 2024W or earlier, that satisfies the requirements for the module "Efficient programs", but will only give you 3ECTS (see point 7 of Übergangsbestimmungen). I do not recommend taking the PR in this case; you already have learned what the PR is intended to teach, and the "studienrechtliches Organ" may decide that completing the old VU is equivalent to completing the PR and that you cannot use both of them for the same curriculum (see point 4 of Übergangsbestimmungen).

Time

Registration in TISS: VU, PR.

Lecture time: Mon, 16:15-18:00, starting on 2026-10-05, EI 2 (Old EI, Gusshausstrasse 25, 2nd floor). The VU lectures will happen until early December.

Afterwards the presentations of the PR will happen at the same time of the week at the same location. Attendance is required for these presentations.

TUWEL

There will be a TUWEL course that you can reach through the TISS page. All the participants of the VU will be automatically insribed to the TUWEL course.

Videos

Lectures from this semester will be available online. However, you will miss the option of asking questions.

There is also older material there, in German from the 2020W and 2021W semesters. Note that the lecture changes over time, so if you follow only the old videos, you will miss some of the current content. The old videos may still be useful if you have an easier time with German.

Learning outcomes

After successful completion of the course, students are able to determine whether a program is sufficiently efficient, to find inefficient parts, and to make them more efficient.

Contents

Is efficiency needed? Kinds of efficiency. The effect of specification on efficiency. Design for efficiency. The role of efficient algorithms (constant factors, logarithmic factors). Hardware characteristics (cache, block sizes, registers, bandwidth, latency). Microoptimizations. Tools.

Grading

For the VU you have to first perform a relatively easy (and low-weight, but you have to pass) exam that you can perform remotely at your leisure. If you pass this exam, you can participate in the other exams at the following dates:
  2026-11-04 10:00-14:00
  2026-11-20  9:00-13:00
  2026-12-04  9:00-13:00
  2026-12-18  9:00-13:00
Each exam takes 1h for students, and there will be a registration for choosing the hour for each exam. The best three of your results for the these exams are used for your grade.

These exams are taken in a lab without internet access. Use of your smartphone or laptop is not allowed, either. You can use the documentation installed on the lab computer. In order to prepare yourself for the exam, there will be exercises where you have to work on the same topics before each exam.

For the remote exam and the VU exercises, and also for the PR you will get an account on g0.complang.tuwien.ac.at; the accounts are generated on 2026-10-14. Register ASAP to get your account soon.

The rest of this section is only relevant for the PR:

A group of 3-5 students optimizes a program and presents the result. The grade is based on the presentation. The presentation should point out which optimization steps worked how well, compare this to your expectations, and ideally also have an explanation of why an optimization step worked better or worse than expected.

While algorithmic optimizations are not the topic of this course, they are allowed. One way to deal with that is to write the code resulting from an algorithmic optimization in a straightforward way, and then performing additional non-algorithmic optization steps that you can evaluate and present.

You can optimize a program of your choice.

Results Directory

If you want to publish your PR work (not graded), it is probably best to do that on platforms like Sourcehut or Github.

It would be nice if you also create a short page with a link to your work or a directory with your work in /nfs/unsafe/httpd/ftp/pub/anton/lvas/effizienz-abgaben/2026w/ (on the g0). This directory can be seen here in the WWW.

Results from earlier years

Literature

Lecturer

Anton Ertl