Skip to main content
Skip header

Methods of Efficient Programming

Language of instruction čeština
Code 460-4174
Abbreviation MEP
Course title Methods of Efficient Programming
Coordinating department Department of Computer Science
Course coordinator Ing. Petr Olivka, Ph.D.

Summary

The course will introduce students to the properties of modern computers in detail and teach them how to make optimal use of computer hardware, from CPUs and computer memory subsystems to good parallel program design.

The aim of the course is to familiarize students with the technical aspects of programming modern multi-core SMP processors. Code optimization options will be presented and students will be introduced to CPU computing units, both integer and floating point. Furthermore, students will be introduced to computer memory subsystems and their optimal use and influence on data organization in memory. Methods for designing applications with multiple processes and multiple threads will be explained, as well as the reasons for choosing between thread and data parallelism. Students will also explore the impact of process and CPU core affinity on computing performance.

Students of this course will be able:

- understand the impact of code optimization on computing performance,
- know the basic properties of CPU computing units,
- optimally organize program data to make proper use of the computer's memory system,
- determine a suitable design for a parallel application and make good decisions between processes and threads,
- appropriately assign processes to CPU cores.

Literature

[1] Jim Ledin, 2020, Modern Computer Architecture and Organization: Learn x86, ARM, and RISC-V architectures and the design of smartphones, PCs, and cloud servers, Packt Publishing, ISBN-13: 978-1838984397 
[2] Jim Ledin,2022, Modern Computer Architecture and Organization: Learn x86, ARM, and RISC-V architectures and the design of smartphones, PCs, and cloud servers, 2nd Edition, Packt Publishing, ISBN-13, 978-1803238234
[3] Denis Bakhvalov, 2024, Performance Analysis and Tuning on Modern CPUs: Learn to write fast software like a pro, Independently published, ISBN-13: 979-8342846448 
[4] Comer, D. ,2024, Essentials of Computer Architecture (3rd ed.). Chapman and Hall/CRC. https://doi.org/10.1201/9781003410140

Advised literature

[1] Intel, 2025, Intel® 64 and IA-32 Architectures Software Developer’s Manual,https://cdrdv2.intel.com/v1/dl/getContent/671200
[2] Stevens, W. Richard, Rago, Stephen A., 2013, Advanced Programming in the UNIX Environment, 3rd Ed., Addison-Wesley Professional, ISBN-13: 978-0321637734