Students learn to combine their programming skills (ability to design efficient algorithms) and HW knowledge (utilization
of all available features of a particular processor and memory architecture). Students learn the basics of code tuning and
optimization.

The aim of the module is to develop an ability to write efficient and practically usable programs by linking knowledge of
HW and SW, which is often taught separately. The module teaches how to combine knowledge of both fields to create an efficient
program for a given machine (for instance, in asymptotic complexity analysis, multiplicative constants are disregarded as
uninteresting, while in real world they are relevant). The students learn how to get maximum performance from a computer and
how to recognize that the maximum has been reached.