CS520: Analysis of Algorithms
The course is about learning and practicing principles for organizing your thinking when solving programming problems, and not about memorizing details and facts. The particular problems we will study are selected primarily because they are good illustrations of general techniques; they are not the primary focus of the class. You must practice ways of establishing that an algorithm is correct and analyzing its time bound. Getting good at these skills will allow you to come up with efficient algorithms of your own, by figuring out what steps are needed in the pseudocode or program code to get the proof of correctness to go through, or to reduce the running time.