LecturesThis page contains the order of topics contained in lectures, listed as a sequence of modules. Please note that modules may vary considerably in length and difficulty; please see the schedule for details on timing. Please see the resources page for additional relevant material, including a document outlining coverage of the material by the (optional) textbook. Module 1: IntroductionTopics: User and provider viewpoints, planning and coding stages, models, modularity and data hiding, abstract data types, implementations, recipes Module 2: ADTs and pseudocode analysisTopics: Choosing and modifying ADTs, compound and static data, ADT Multiset, types of ADTS, pseudocode, analysis, order notation Module 3: Data structuresTopics: Memory, basic data structures, Python modules for data structures, ADT Set, types of data, bit vector Module 4: Group B ADTsTopics: ADT Stack, ADT Queue, linked data structures, ADT Indexed Sequence, ADT Ranking, ADT Grid Module 5: TreesTopics: Tree terminology, decision trees, ADT Binary Tree, ADT Ordered Tree, ADT Unordered Tree, implementations, tree traversals Module 6: GraphsTopics: Graph terminology, ADT Undirected Graph, ADT Directed Graph, implementations, breadth-first search, depth-first search Module 7: DictionariesTopics: ADT Dictionary, searching, sorting, binary search tree, AVL tree, (2, 3) tree Module 8: Priority queuesTopics: ADT Priority Queue, heap, heapsort Module 9: ImprovementsTopics: Comparison-based algorithms, decision-tree lower bound, average versus expected, interpolation search, search in a static array, self-organizing heuristics, hashing, bucket sort, radix sort Module 10: ExtensionsTopics: Skip list, graph problems, ADT Disjoint Set, ADT Range, quadtree, k-d tree, strings and tries, other criteria and analysis, memory hierarchy and B-tree |