Introduction
  • Introduction
  • Complexity theory basics
Graph Theory Overview
  • Graph theory overview
  • Adjacency matrix and adjacency list
  • Adjacency matrix and adjacency list implementation
  • Applications of graphs
  • Graph Algorithms Overview Quiz
Breadth-First Search (BFS)
  • Breadth-first search introduction
  • Breadth-first search implementation
  • BFS Quiz
Course Challenge #1 - WebCrawler
  • Breadth-first search - WebCrawler (core of search engines)
  • Breadth-first search - WebCrawler implementation
Depth-First Search (DFS)
  • Depth-first search introduction
  • DFS implementation I - with stack
  • DFS implementation II - with recursion
  • Depth-first search and stack memory visualisation
  • Memory management: BFS vs DFS
  • Graph Traversal Quiz
Course Challenge #2- Maze Escape
  • Maze problem introduction
  • Course challenge #1 - maze escape
  • Maze solving algorithm implementation
Topological Ordering
  • What us topological ordering?
  • Topological ordering implementation I
  • Topological ordering implementation II
  • Finding the shortest path with topological ordering
  • Topological ordering shortest path implementation I
  • Topological ordering shortest path implementation II
  • Dynamic programming with topological sort
  • Topological Ordering Quiz
Cycle Detection
  • Cycle detection introduction
  • Cycle detection implementation I
  • Cycle detection implementation II
  • Cycle Detection Quiz
Shortest Path Methods - Dijkstra's Algorithm
  • What is the shortest path problem?
  • Dijkstra algorithm visualization
  • Dijkstra algorithm implementation I
  • Dijkstra algorithm implementation II
  • Dijktsra's algorithm with adjacency matrix representation
  • Shortest path algorithms applications
  • Dijkstra's Algorithm Quiz
Course Challenge #3 - Longest Path
  • The critical path method (CPM) and longest paths
  • Course challenge #3 - DAG shortest path
  • Longest path implementation
Shortest Path Methods - Bellman-Ford Algorithm
  • What is the Bellman-Ford algorithm?
  • Bellman-Ford algorithm visualisation
  • Bellman-Ford algorithm implementation I
  • Bellman-Ford algorithm implementation II
  • Greedy algorithm or dynamic programming approach?
  • Bellman-Ford Algorithm Quiz
Course Challenge #4 - Arbitrage on FOREX
  • Arbitrage situations on FOREX introduction
  • Arbitrage situations on FOREX implementation
Spanning Trees - Kruskal's Algorithm
  • What is the disjoint set data structure?
  • Disjoint sets visualization
  • Kruskal's algorithm introduction
  • Kruskal algorithm implementation I
  • Kruskal algorithm implementation II - disjoint set
  • Kruskal algorithm implementation III
  • Kruskal's Algorithm Quiz
Spanning Trees - Prim's Algorithm
  • Spanning trees introduction - lazy Prim's algorithm
  • Prims lazy algorithm implementation I
  • Prims lazy algorithm implementation II - the core
  • Spanning trees introduction - eager Prim's algorithm
  • Eager Prim's algorithm implementation
  • Applications of spanning trees
  • Prim's Algorithm Quiz
Strongly Connected Components - Kosaraju's Algorithm
  • Strongly connected components introduction
  • Kosaraju algorithm introduction
  • Kosaraju implementation I - the Graph class
  • Kosaraju implementation II
  • Kosaraju algorithm implementation III - test
Strongly Connected Components - Tarjan's Algorithm
  • Tarjan algorithm introduction
  • Tarjan algorithm visualization
  • Tarjan algorithm implementation
  • Applications of strongly connected components
  • Strongly Connected Components Quiz
Maximum Flow Problem
  • Maximum flow introduction - basics
  • Maximum flow introduction - properties
  • Maximum flow introduction - cuts
  • Maximum flow introduction - residual networks
  • Maximum flow introduction - Ford-Fulkerson algorithm
  • Maximum flow introduction - example
  • Maximum flow introduction - applications
  • Maximum flow implementation I - Edge, Vertex