Performance Programming 7.5 credits
About the course
Software consumes resources such as time, memory, energy, etc. when running. Software developers need to aware of the resource usage of the systems they develop and take steps to make their systems more efficient. This requires an understanding of the underlying hardware, and, more importantly, a desire and ability to apply that knowledge when designing, implementing, and analyzing software systems. The purpose of this course is to provide students with the knowledge, abilities, and attitudes they need to become proficient developers of efficient software systems that run faster, require less memory, and consume less energy. The fundamental concepts and ideas developed during the course are illustrated and practiced using the C++ programming language. While no prior experience with C++ is assumed, students are expected to have enough experience with imperative and object-oriented programming languages (e.g., C and Java) to be able to quickly and independently learn the basics of the language using the textbook and other resources.