This course is a survey of the most effective algorithms currently in use for a wide variety of problems and their usage in program design. Characteristics and performance of algorithms are studied. Advanced object oriented programming techniques are emphasized. (Spring)