Logo ČVUT
CZECH TECHNICAL UNIVERSITY IN PRAGUE
STUDY PLANS
2024/2025

Effective Software

Login to KOS for course enrollment Display time-table
Code Completion Credits Range Language
BE4M36ESW Z,ZK 6 2P+2C English
Relations:
It is not possible to register for the course BE4M36ESW if the student is concurrently registered for or has already completed the course B4M36ESW (mutually exclusive courses).
During a review of study plans, the course B4M36ESW can be substituted for the course BE4M36ESW.
It is not possible to register for the course BE4M36ESW if the student is concurrently registered for or has previously completed the course B4M36ESW (mutually exclusive courses).
Course guarantor:
David Šišlák
Lecturer:
Michal Sojka, David Šišlák
Tutor:
Marek Cuchý, Joel Matějka, Michal Sojka, David Šišlák, Jiří Vlasák
Supervisor:
Department of Computer Science
Synopsis:

Within the course of Efficient software you will get familiar with the area of software and algorithm optimization under limited resources. The course is focused on the efficient usage of modern hardware architectures - multi-core and multi-processor systems with shared memory. Students will practically implmenet and use presented techniques in C and Java. Main topics are: code optimization, effective data structures and processor cache usage, data structures in multi-threaded applications and implementation of efficient network servers.

Requirements:

background knowledge in area of Computer architecture, C and Java programming languages

Syllabus of lectures:

1. Introduction, modern computer architecture, C compilers.

2. Bentley's rules, C compiler, profiling.

3. Benchmarking, measurements, metrics, statistics, WCET, timestamping.

4. Scalable synchronization – from mutexes to RCU (read-copy-update), transactional memory, scalable API.

5. Memory access – efficient programming with caches, dynamic memory allocation (malloc, NUMA, ...)

6. Serialization of data structures – JSON, XML, protobufs, AVRO, cap'n'proto, mmap/shared memory.

7. Program run – virtual machine, byte-code, Java compiler, JIT compiler, relation to machine code, byte-code analysis, dissasembly of Java byte-code, optimization in compilers, program performance analysis, profiling.

8. Data concurrency in JVM – multi-threaded access to data, locks monitoring, atomic operations, lock-less/block-free data structures, non-blocking algorithms (queue, stack, set, dictionary), data races, synchronization.

9. Efficient servers, C10K, non-blocking I/O, efficient networking, threads.

10. JVM – Memory analysis (dynamic/static), data structures, collections for performance.

11. JVM – Object allocation, bloom filters, references, effective caching.

12. Virtualization (IOMMU, SR-IOV, PCI pass-through, virtio, …).

13. Memory Management in JVM – Memory Layout, Garbage Collectors.

Syllabus of tutorials:
Study Objective:
Study materials:

[1] MIT: Performance-engineering-of-software-systems

[2] Oaks, S.: Java Performance: 2nd Edition. O'Reilly, USA 2020.

[3] Jones, R., Hosking, A., Moss, E.: The Garbage Collection Handbook - The Art of Automatic Memory Management. CRC Press, USA 2012.

[4] Herlihy, M., Shavit, N.: The Art of Multiprocessor Programming. Morgan Kaufman, 2008.

[5] Fog, A.: The microarchitecture of Intel, AMD and VIA CPU, 2016.

[6] Drepper U.: What every programmer should know about memory, 2007

[7] Jain, R.: The Art of Computer Systems Performance Evaluation. Wiley, New York 1991. (slides, book)

[8] Lilja, D. J.: Measuring Computer Performance: A Practitioner?s Guide. Cambridge University Press, 2000. (book web site, Supplemental Teaching Materials)

Note:
Further information:
https://esw.pages.fel.cvut.cz/
Time-table for winter semester 2024/2025:
Time-table is not available yet
Time-table for summer semester 2024/2025:
06:00–08:0008:00–10:0010:00–12:0012:00–14:0014:00–16:0016:00–18:0018:00–20:0020:00–22:0022:00–24:00
Mon
roomKN:E-301
Šišlák D.
Sojka M.

12:45–14:15
(lecture parallel1)
Karlovo nám.
roomKN:E-307

14:30–16:00
(lecture parallel1
parallel nr.102)

Karlovo nám.
Tue
Wed
Thu
Fri
The course is a part of the following study plans:
Data valid to 2025-01-22
For updated information see http://bilakniha.cvut.cz/en/predmet4878606.html