Performance is an essential aspect of many software systems, and it is important for programmers to understand performance issues. However, most undergraduate curricula do not explicitly cover performance issues-performance monitoring and profiling tools, performance improvement techniques, and case studies-in their curricula. This paper describes how we address this topic as part of a third-year programming course. We focus on tools and techniques for monitoring and improving performance, as well as the interaction between clean program design and performance tuning.
MOTIVATIONPerformance is an essential aspect of many software systems, and it is vitally important for programmers to understand performance issues: when it matters and when it doesn't; how to systematically identify performance bottlenecks and improve program performance; and how program design interacts with and affects performance tuning. Despite this, the issue of performance and performance tuning-including tools, techniques, and case studies-is not explicitly addressed, as a topic in its own right, in most curricula. Very often, the closest students come to encountering this £