Effective Software
Code | Completion | Credits | Range | Language |
---|---|---|---|---|
B4M36ESW | Z,ZK | 6 | 2P+2C | Czech |
- Relations:
- During a review of study plans, the course A4M35OSP can be substituted for the course B4M36ESW.
- It is not possible to register for the course B4M36ESW if the student is concurrently registered for or has already completed the course A4M35OSP (mutually exclusive courses).
- It is not possible to register for the course B4M36ESW if the student is concurrently registered for or has already completed the course BE4M36ESW (mutually exclusive courses).
- It is not possible to register for the course B4M36ESW if the student is concurrently registered for or has previously completed the course BE4M36ESW (mutually exclusive courses).
- The requirement for course B4M36ESW can be fulfilled by substitution with the course BE4M36ESW.
- Course guarantor:
- Lecturer:
- Tutor:
- 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, compiler, profiling
2. Virtual machine, byte-code, (de-)compilers, disassembler, profiling
3. Benchmarking, measurements, statistics
4. Scalable synchronization
5. Data races, synchronization, atomic operations, non-blocking algorithms
6. Non-blocking I/O, C10K, efficient networking
7. Data structure serialization
8. Memory, caches, allocators
9. JVM - Memory analysis, data structures, collections for performance
10. JVM - Object allocation, bloom filters, references, effective caching
11. Memory Management in JVM - Memory Layout, Garbage Collectors
12. Virtualization (IOMMU, SR-IOV, PCI pass-through, virtio, .)
13. C program compilation and execution
- 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://cw.fel.cvut.cz/wiki/courses/b4m36esw/start
- No time-table has been prepared for this course
- The course is a part of the following study plans:
-
- Open Informatics - Computer Engineering (compulsory course of the specialization)
- Open Informatics - Software Engineering (compulsory course of the specialization)