Software abstractions via elementary data structures and their implementation; encapsulation and modularity; class and interface definitions; object instantiation; recursion; elementary abstract data types, including sequences, stacks, queues, and trees; implementation using linked structures and arrays; vectors and strings; memory models; automatic vs. dynamic memory management. [Note: Lab is not scheduled and students are expected to find time in open hours to complete their work. [Offered: W] Prereq: CS 137