Introduces data structures and analysis. Investigates abstract data types, recursion, algorithms for searching and sorting, and basic algorithm analysis. Covers abstract data types (ADTs)including arrays, linked lists, stacks, queues, priority queues, trees, and hash tables. Demonstrates ADT operations such as insert, remove, and find. Examines the trade-offs associated with ADT choices for a given application and the trade-offs associated with array-based implementations compared to linked implementations. Offers students an opportunity to apply core concepts by implementing their own data structures and developing applications that use them.