A continuation of Computer Science 111 with an emphasis on data structures, data abstraction, algorithm design, the analytical and experimental evaluation of algorithm performance, and object-oriented design and implementation techniques. Topics include stacks, queues, deques, lists, strings, trees and graphs, dictionaries, recursion, searching and sorting algorithms, and an introduction to program verification. One laboratory per week. Prerequisite: Computer Science 111 or permission of the instructor. Distribution Requirements: QR, SP.