Catalog Description: This course assumes a significant amount of prior programming experience in C++ and deals with using and implementing software components in the construction of programs. Topics to be covered include classes and advanced object-based programming techniques, dynamically allocated data structures (including linked lists, stacks, queues, trees, heaps, and graphs), simple analysis of the algorithms that operate on those data structures, and templates (the STL). Prereq: 15-112 or equivalent experience in C++.