MIT 6.006: Introduction to Algorithms

The essential algorithms course from MIT, covering the data structures and algorithms every programmer needs to know.

About This Course

MIT 6.006 introduces students to the mathematical modeling of computational problems, as well as common algorithms and data structures used to solve these problems. It emphasizes the relationship between algorithms and programming, and the role of data structures in algorithm design.

What You Will Learn

  • Algorithmic Thinking: How to model problems and reason about efficiency
  • Sorting: Insertion sort, merge sort, heap sort, counting sort, radix sort
  • Hashing: Hash tables, hash functions, collision resolution
  • Trees: Binary search trees, AVL trees, augmented data structures
  • Graph Algorithms: BFS, DFS, Dijkstra's, Bellman-Ford
  • Dynamic Programming: Optimal substructure, memoization, bottom-up approaches
  • Complexity Analysis: Big-O, Big-Theta, Big-Omega notation

Prerequisites

Basic programming experience (MIT 6.0001 or equivalent) and discrete mathematics.

Course content belongs to MIT OpenCourseWare. Licensed under Creative Commons BY-NC-SA.