This course teaches how the various layers of a computer system interact and affect the resulting performance. It performs two cuts down the system stack: one about the 'state' and the other about the 'behavior' of a system. The discussion of 'state' investigates memory usage of applications, leak detection, garbage collection, virtual memory management, and cache performance. The discussion of 'behavior' investigates call graphs, dynamic class loading, shared libraries and dynamic linking, control flow graphs, exception handling, compiler optimizations, and branch prediction. The course uses Java virtual machines and their internal operation as a running example and teaches basic static and dynamic program analysis techniques. It includes a series of programming assignments in which students implement various program analyses.
This course uses Informa as a learning platform.
Check the "Software Performance" course site, with course themes, topics, skills, labs, readings, and more at https://informa2.inf.usi.ch/courses