Logo ČVUT
CZECH TECHNICAL UNIVERSITY IN PRAGUE
STUDY PLANS
2019/2020

Effective Software

Login to KOS for course enrollment Display time-table
Code Completion Credits Range Language
B4M36ESW Z,ZK 6 2P+2C Czech
The course cannot be taken simultaneously with:
Open-source programming (A4M35OSP)
Effective Software (BE4M36ESW)
The course is a substitute for:
Open-source programming (A4M35OSP)
Lecturer:
David Šišlák (guarantor), Michal Sojka
Tutor:
David Šišlák (guarantor), Marek Cuchý, Joel Matějka, Michal Sojka
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: The Definitive Guide. O'Reilly, USA 2014.

[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
Time-table for winter semester 2019/2020:
Time-table is not available yet
Time-table for summer semester 2019/2020:
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.
Šrámkova posluchárna K9
roomKN:E-310
Cuchý M.
Matějka J.

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

Karlovo nám.
Lab K310 Linux
roomKN:E-310
Cuchý M.
Matějka J.

16:15–17:45
(lecture parallel1
parallel nr.102)

Karlovo nám.
Lab K310 Linux
Tue
Fri
Thu
Fri
The course is a part of the following study plans:
Data valid to 2020-05-26
For updated information see http://bilakniha.cvut.cz/en/predmet4701906.html