A study of common data and program structures together with associated algorithms. Topics include interfaces, and introduction of the concept of date abstraction and information hiding, design patterns, arrays, stacks, queues, lists, trees, heaps, hash tables, recursion, binary search, and tree traversals. Experience with both use and implementation of these structures and algorithms using a modern programming language. Discussion of tradeoffs involving performance and software maintainability.

Pre-Reqs:

CS200 Problem Solving and Programming