Algorithms and Data Structures SESSION 00
Brian Jo
Syllabus for Algorithms and Data Structures
Syllabus for the class
SYLLABUS
  1. Algorithmic Thinking & Complexity
  2. Data Structures: Organizing Information
  3. Searching & Sorting
  4. Trees, Heaps & Priority Queues
  5. Graphs & Networks
  6. Algorithmic Problem Solving

How algorithms work, how we compare them, and why efficiency matters

What is an algorithm, breaking problems into precise steps, algorithm design and pseudocode, correctness and edge cases, measuring runtime and memory usage, Big-O notation, constant vs. linear vs. quadratic vs. logarithmic growth, computational tradeoffs

How computers organize and access collections of data

Arrays and dynamic arrays, linked lists, stacks and queues, LIFO and FIFO behavior, choosing the right data structure, time complexity of common operations, memory vs. speed tradeoffs, real-world applications of data structures

Algorithms for finding, ordering, and organizing data

Linear search and binary search, prerequisites for efficient searching, selection sort, insertion sort, merge sort, quicksort, comparing algorithmic efficiency, divide-and-conquer thinking, stable vs. unstable sorting, choosing an algorithm for a particular problem

Hierarchical data structures and efficient priority-based algorithms

Tree terminology and representations, binary trees, binary search trees, tree traversal, recursion, balanced vs. unbalanced trees, heaps, priority queues, heap operations, and applications such as scheduling and finding the highest-priority item

Modeling relationships, networks, paths, and connections

Graphs and networks, vertices and edges, directed vs. undirected graphs, weighted graphs, adjacency lists and matrices, breadth-first search, depth-first search, connected components, shortest-path problems, and applications including maps, social networks, and communication systems

Putting algorithms and data structures together to solve problems

Problem decomposition, choosing appropriate data structures, recursion, greedy algorithms, dynamic programming concepts, backtracking, algorithmic tradeoffs, recognizing common problem patterns, testing and debugging algorithms, and a final algorithm design challenge
END OF SESSION 00