next up previous
Next: Textbook Up: Computer Science 344 Algorithms Previous: Computer Science 344 Algorithms

Subject Matter

This is a course for anybody who's ever complained about a computer being slow. When faced with a computer program that takes unacceptably long to solve the problem at hand, one option is to buy faster, more expensive computer hardware. But this option has its limits: perhaps your money will run out, or perhaps you'll upgrade to the fastest computer on the market and still be unsatisfied. Often a better option is to find a more efficient approach to the problem -- to re-think the algorithm so that it makes better use of the hardware. A $2,000 personal computer running a good algorithm can often outperform a $2,000,000 supercomputer running a bad (although still correct) algorithm.

In this course we'll learn how to measure the efficiency of an algorithm, independent of language, operating system, or hardware. We'll survey a variety of techniques for designing efficient algorithms. (Many of these techniques will help you program correctly even when you're not worried about efficiency.) We'll even learn how to prove that a given algorithm is ``as good as it can get,'' in the sense that no algorithm, no matter how clever, will ever be better than this one.

Dr. Stephen Bloch
Mon Jan 13 13:18:12 EST 1997