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. May serve as the laboratory course in the Natural Science Division’s distribution requirement. One laboratory per week. Prerequisite: Computer Science 111 or permission of the instructor.