Studies data abstractions (e.g., stacks, queues, lists, trees, graphs) and their representation techniques (e.g., linking, arrays). Introduces concepts used in algorithm design and analysis including criteria for selecting data structures to fit their applications.