EECS 2011 3.00 Fundamentals of Data Structures This course discusses the fundamental data structures commonly used in the design of algorithms. At the end of this course, students will know the classical data structures, and master the use of abstraction, specification and program construction using modules. Furthermore, students will be able to apply these skills effectively in the design and implementation of algorithms. Topics covered may include the following. . Review of primitive data types and abstract data type . arrays, stacks, queues and lists . Searching and sorting; a mixture of review and new algorithms . Priority queues . Trees: threaded, balanced (AVL-, 2-3-, and/or B-trees), tries . Graphs: representations; transitive closure; graph traversals; spanning trees; minimum path; flow problems Learning Outcomes: - Instantiate a range of standard abstract data types (ADT) as data structures - Implement these data structures and associated operations and check that they satisfy the properties of the ADT - Apply best practice software engineering principles in the design of new data structures - Demonstrate the ability to reason about data structures using contracts, assertions, and invariants - Analyze the asymptotic run times of standard operations for a broad range of common data structures - Select the most appropriate data structures for novel applications