Lectures: Wednesday, 14:00-15:30, S6 Online via Zoom (Petr Tůma)
Labs: Friday, 9:00-10:30, SU2 Offline via Mailing List (every two weeks) (Petr Tůma)
Page in SIS: NSWI131
Grading: Credit and exam
Mailing list: nswi131@d3s.mff.cuni.cz

Distance Teaching Information

To limit the spread of the corona virus, the course is currently strictly restricted to distance teaching. Please subscribe to the course mailing list to receive detailed information about lectures and labs.

  • Lectures take place online using the Zoom conference system, using the standard course schedule. Individual preparation before class is required.

  • Labs take place offline with assignments distributed using the course mailing list, using the existing assignment deadlines schedule.

About

Are efficient algorithms enough for writing fast code ? And if not, what else ?

The speed of a program is as important as its function. However, unlike function, speed is the result of often surprising interactions across the entire system stack. This course helps understand what influences program speed and the speed should be measured, evaluated and presented. Apart from general guidelines, the course will visit many system details relevant to performance and introduce tools that help in software performance evaluation.

Prerequisites

There are no formal prerequisites. However, you should be familiar with very basic concepts from probability and statistics, operating systems, computer architecture and compiler principles. If you have passed the Operating Systems (NSWI004) and Computer Architecture (NSWI143) courses, you are fine. If you have missed these, you should be at least a little interested in the system aspects of computers and programs and be willing to study the statistical methods we use along with the R system.

The course aims at Master program students, but the students of Bachelor program are also welcome. If you like the topic, you will be probably fine.

Topics

From the following list, each point will be usually covered in one or two lectures:

  1. Motivation. Why bother when things are easy ?
  2. How to Measure I - Basics. Clocks. Timers.
  3. How to Measure II - Hardware Performance Counters.
  4. How to Measure III - Profiling. Management Interfaces. Instrumentation.
  5. What to Measure - Metrics. Desired Properties. Benchmark Workloads.
  6. How to Process Data - Aggregate Statistics. Hypotheses. Pitfalls.
  7. How to Visualize Data - Plots. Plots. More Plots.
  8. When to Not Measure - Modeling. Simulation.
  9. Taking a Step Back - Methodology.

Grading

For the exam, you should first prepare and execute a performance evaluation experiment of your choice. During the exam, you will explain your design and results, demonstrating use of the various methods and systems presented in the lectures.