Fenwick trees, Caches, Splay Trees, Prefix Trees (Tries), Substring-Search Algorithms and Travelling Salesman Problem

This course is for those who are interested in computer science and want to implement the algorithms and given data structures in Python. In every chapter you will learn about the theory of a given data structure or algorithm and then you will implement them from scratch.

What you’ll learn

- Have a good grasp of algorithmic thinking.
- Be able to develop your own algorithms.
- Be able to detect and correct inefficient code snippets.
- Understand Fenwick trees.
- Understand caches (LRU caches and Splay Trees).
- Understand tries and ternary search trees.
- Understand substring search algorithms (Rabin-Karp method, KMP algorithm and Z algorithm).
- Understand the Hamiltonian cycle problem (and travelling salesman problem).
- Understand Eulerian cycle problem.

Course Content

- Introduction –> 1 lecture • 2min.
- Fenwick Trees (Binary Indexed Trees) –> 5 lectures • 39min.
- LRU Caches –> 5 lectures • 33min.
- Splay Tree Data Structure –> 6 lectures • 41min.
- B-Trees –> 6 lectures • 43min.
- Trie Data Structures (Prefix Trees) –> 11 lectures • 1hr 15min.
- Interview Questions – IP Routing with Tries –> 2 lectures • 15min.
- Ternary Search Trees –> 6 lectures • 42min.
- Interview Questions – Boggle Game –> 4 lectures • 29min.
- Substring Search Algorithms –> 12 lectures • 2hr 15min.
- Topological Ordering –> 6 lectures • 51min.
- Cycle Detection –> 2 lectures • 17min.
- Strongly Connected Components (Tarjan’s Algorithm) –> 4 lectures • 37min.
- Hamiltonian Cycles – Travelling Salesman Problem –> 5 lectures • 49min.
- Eulerian Cycles – Chinese Postman Problem –> 2 lectures • 11min.
- Algorhyme FREE Algorithms Visualizer App –> 2 lectures • 2min.
- Course Materials (DOWNLOADS) –> 1 lecture • 1min.

Requirements

- Python basics.
- Some theoretical background (big O notation ).

This course is for those who are interested in computer science and want to implement the **algorithms** and given **data structures** in **Python**. In every chapter you will learn about the theory of a given data structure or algorithm and then you will implement them from scratch.

**Chapter 1: Binary Indexed Trees** (Fenwick Trees)

- theory behind the binary indexed tree or Fenwick tree data structure
- how to use this data structure in computer vision and artificial intelligence
- implementation in Python

**Chapter 2: LRU Caches **

- what are caches and why are they so important
- how to use doubly linked lists to implement caches
- theory behind LRU caches
- implementation in Python

**Chapter 3: Splay Trees**

- what are splay trees
- how to achieve caches with splay trees

**Chapter 4: B-Trees**

- external memory and internal memory (RAM)
- data structures for the external memory
- trees with multiple children and multiple keys
- what are B-tree data structures?

**Chapter 5: Prefix Trees (Tries)**

- what are tries or prefix trees
- real world applications of tries
- autocomplete feature of tries
- sorting with tries
- IP routing

**Chapter 6: Ternary Search Trees**

- what are ternary search trees
- boggle game with tries

**Chapter 7: Substring Search Algorithms**

- what are substring search algorithms and why are they important in real world softwares
- brute-force substring search algorithm
- hashing and Rabin-Karp method
- Knuth-Morris-Pratt substring search algorithm
- Z substring search algorithm (Z algorithm)
- implementations in Python

**Chapter 8: Topological Ordering**

- what is topological ordering (topological sort)?
- topological ordering implementation with depth-first search

**Chapter 9: Cycle Detection**

- how to detect cycles in graphs?

**Chapter 10: Strongly Connected Components (Tarjan’s Algorithm)**

- what are strongly connected components?
- Tarjan’s algorithm with depth-first search

**Chapter 11: Hamiltonian cycles (Travelling Salesman Problem)**

- Hamiltonian cycles in graphs
- what is the travelling salesman problem?
- how to use backtracking to solve the problem
- meta-heuristic approaches to boost algorithms

**Chapter 12: Eulerian Cycles (Chinese Postman Problem)**

- Eulerian cycles in graphs
- what is the chinese postman problem?

Thanks for joining my course, let’s get started!