/MIT-Algorithms-6.006

This repository includes all my code implementations in algorithms and data structures from MIT's introduction to algorithms course on MIT OCW

Primary LanguageC++

Introduction to Algorithms 6.006

This repository will include all my code implementations in algorithms and data structures from MIT's introduction to algorithms course on MIT Open Course Ware.

Course's Content:

Unit 1: Introduction

  • Lecture 1 – Algorithmic Thinking, Peak Finding
  • Lecture 2 – Models of Computation, Python Cost Model, Document Distance

Unit 2: Sorting and Trees

  • Lecture 3 – Insertion Sort, Merge Sort
  • Lecture 4 – Heaps and Heap Sort
  • Lecture 5 – Binary Search Trees, BST Sort
  • Lecture 6 – AVL Trees, AVL Sort
  • Lecture 7 – Counting Sort, Radix Sort, Lower Bounds for Sorting and Searching

Unit 3: Hashing

  • Lecture 8 – Hashing with Chaining
  • Lecture 9 – Table Doubling, Karp-Rabin
  • Lecture 10 – Open Addressing, Cryptographic Hashing

Unit 4: Numerics

  • Lecture 11 – Integer Arithmetic, Karatsuba Multiplication
  • Lecture 12 – Square Roots, Newton's Method

Unit 5: Graphs

  • Lecture 13 – Breadth-First Search (BFS)
  • Lecture 14 – Depth-First Search (DFS), Topological Sorting

Unit 6: Shortest Paths

  • Lecture 15 – Single-Source Shortest Paths Problem
  • Lecture 16 – Dijkstra
  • Lecture 17 – Bellman-Ford
  • Lecture 18 – Speeding up Dijkstra

Unit 7: Dynamic Programming

  • Lecture 19 – Memoization, Subproblems, Guessing, Bottom-up; Fibonacci, Shortest Paths
  • Lecture 20 – Parent Pointers; Text Justification, Perfect-Information Blackjack
  • Lecture 21 – String Subproblems, Pseudopolynomial Time; Parenthesization, Edit Distance, Knapsack
  • Lecture 22 – Two Kinds of Guessing; Piano/Guitar Fingering, Tetris Training, Super Mario Bros.

Unit 8: Advanced Topics

  • Lecture 23 – Computational Complexity
  • Lecture 24 – Algorithms Research Topics