Advanced Programming begins Tuesday, August 28, at 10am in LOW 3035. The main objective of this course is to develop intellectual tools that allow the programmer to attain a high degree of confidence that his or her programs have the important properties of correctness, efficiency, and generality. The course will focus on an approach called generic programming, whose techniques permit the definition of algorithms and data structures at an abstract level, in effect accomplishing many related programming tasks simultaneously. Methods of structuring a library of generic software components for maximum usability will be studied and practiced using the C++ language. An important tenet of generic programming is that generality should be achieved without losing efficiency, and the course will consider performance testing and tuning techniques that aid in achieving highly efficient generic programs. Throughout the course there will be emphasis on the importance of program correctness, with attention both to testing and debugging techniques and to methods of rigorous mathematical specification and proof. |