Syllabus - Data Structures

  1. Week 1 - Introduction
    1. Overview
    2. Objects
    3. Expressions, Operators, and Precedence
    4. Control Flow
    5. Functions
    6. Simple Input and Output
    7. Exception Handling
    8. Iterators and Generators
    9. Additional Conveniences
    10. Scopes and Namespaces
    11. Modules and the Import Statement
  2. Week 2 - Object-Oriented Programming
    1. Goals, Principles, and Patterns
    2. Software Development
    3. Class Definitions
    4. Inheritance
    5. Namespaces and Object-Orientation
    6. Shallow and Deep Copying
  3. Week 3 - Algorithm Analysis
    1. Experimental Studies
    2. The Seven Functions Used in This Book
    3. Asymptotic Analysis
    4. Simple Justification Techniques
  4. Week 4 - Recursion
    1. Analyzing Recursive Algorithms
    2. Recursion Run Amok
    3. Further Examples of Recursion
    4. Designing Recursive Algorithms
    5. Eliminating Tail Recursion
  5. Week 5 - Array-Based Sequences
    1. Sequence Types
    2. Low-Level Arrays
    3. Dynamic Arrays and Amortization
    4. Efficiency of Sequence Types
    5. Using Array-Based Sequences
    6. Multidimensional Data Sets
  6. Week 6 - Stacks, Queues, and Deques
    1. Stacks
    2. Queues
    3. Double-Ended Queues
  7. Week 7 - Linked Lists
    1. Singly Linked Lists
    2. Circularly Linked Lists
    3. Doubly Linked Lists
    4. The Positional List ADT
    5. Sorting a Positional List
    6. Case Study: Maintaining Access Frequencies
    7. Link-Based vs. Array-Based Sequences
  8. Week 8- Trees
    1. General Trees
    2. Binary Trees
    3. Implementing Trees
    4. Tree Traversal Algorithms
    5. Case Study: An Expression Tree
  9. Week 9 - The Priority Queue Abstract Data Type
    1. Implementing a Priority Queue
    2. Heaps
    3. Sorting with a Priority Queue
    4. Adaptable Priority Queues
  10. Week 10 - Maps, Hash Tables, and Skip Lists
    1. Maps and Dictionaries
    2. Hash Tables
    3. Sorted Maps
    4. Skip Lists
    5. Sets, Multisets, and Multimaps
  11. Week 11 - Search Trees
    1. Binary Search Trees
    2. Balanced Search Trees
    3. AVL Trees
    4. Splay Trees
    5. (2,4) Trees
    6. Red-Black Trees
  12. Week 12 - Sorting and Selection
    1. Why Study Sorting Algorithms?
    2. Merge-Sort
    3. Quick-Sort
    4. Studying Sorting through an Algorithmic Lens
    5. Comparing Sorting Algorithms
    6. Built-In Sorting Functions
    7. Selection
  13. Week 13 - Text Processing
    1. Abundance of Digitized Text
    2. Pattern-Matching Algorithms
    3. Dynamic Programming
    4. Text Compression and the Greedy Method
    5. Tries
  14. Week 14 - Graph Algorithms
    1. Graphs
    2. Data Structures for Graphs
    3. Graph Traversals
    4. Transitive Closure
    5. Shortest Paths
    6. Minimum Spanning Trees
  15. Week 15 - Memory Management and B-Trees
    1. Memory Management
    2. Memory Hierarchies and Caching
    3. External Searching and B-Trees
    4. External-Memory Sorting