Subject description - BE4M36ESW
Summary of Study |
Summary of Branches |
All Subject Groups |
All Subjects |
List of Roles |
Explanatory Notes
Instructions
| BE4M36ESW | Effective Software | ||
|---|---|---|---|
| Roles: | PO, PS | Extent of teaching: | 2P+2C |
| Department: | 13136 | Language of teaching: | EN |
| Guarantors: | Šišlák D. | Completion: | Z,ZK |
| Lecturers: | Dupák J., Šišlák D. | Credits: | 6 |
| Tutors: | Dupák J., Hauser T., Maruniak L., Šišlák D. | Semester: | L |
Web page:
https://esw.pages.fel.cvut.cz/Anotation:
Students will become familiar with the issues of software and algorithm optimization under limited resources. The course focuses on the efficient use of modern hardware architectures, namely multi-core and multiprocessor shared-memory systems. Students will learn to implement the techniques presented in the lectures in C and Java. The main topics include code optimization, efficient data structures and the use of CPU cache memory, data structures in multithreaded applications, and the implementation of high-performance network servers.Course outlines:
| 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. |
Exercises outline:
Literature:
| [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) |
Requirements:
background knowledge in area of Computer architecture, C and Java programming languages Subject is included into these academic programs:| Program | Branch | Role | Recommended semester |
| MEOI6_2018 | Software Engineering | PO | 2 |
| MEOI6_2026 | Software Engineering | PS | 2 |
| MEOI4_2018 | Computer Engineering | PO | 2 |
| MEOI4_2026 | Computer Engineering | PS | 2 |
| Page updated 21.7.2026 17:50:38, semester: L/2028-9, L/2027-8, L/2026-7, L/2029-30, Z/2028-9, L/2025-6, Z/2027-8, Z/2026-7, Send comments about the content to the Administrators of the Academic Programs | Proposal and Realization: I. Halaška (K336), J. Novák (K336) |