Course Information
- Available
- *The delivery and distribution of the certificate are subject to the policies and arrangements of the course provider.
Course Overview
Recursion, Backtracking, Dynamic Programming, Graphs, Data Structures, Sorting and Substring Search Algorithms
This course is for those who are interested in computer science and want to implement the algorithms and given data structures in C++ from scratch. 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: Recursion
theory behind recursion (recursive function calls)
stack memory and heap memory
recursion and stack memory of the OS
recursive problems such as the Towers of Hanoi problem
Chapter 2: Backtracking
what is backtracking
how to solve problems with backtracking
N-queens problem
coloring problem
knight's tour
Chapter 3: Dynamic Programming
overlapping subproblems and dynamic programming
what is "memoization" and "tabulation"?
Fibonacci numbers
knapsack problem
Chapter 4: Data Structures
data structures and abstract data types (ADTs)
arrays
linked lists
stacks
queues
binary search trees
priority queues (heaps)
associative arrays (hash tables)
Chapter 5: Graphs
directed and undirected graphs
graph traversal: breadth-first search and depth-first search
shortest path algorithms
Dijkstra's algorithm
Bellman-Ford algorithm
Chapter 6: Substring Search Algorithms
the most relevant substring search algorithms
naive substring search
Knuth-Morris-Pratt (KMP) substring search algorithm
Rabin-Karp algorithm
Z algorithm (linear pattern matching)
Chapter 7: Sorting
stable sorting and adaptive sorting
comparison based and non-comparison based sorting algorithms
string sorting
bubble sort
selection sort and insertion sort
quicksort
merge sort
counting sort and radix sort
These are the topics we are going to consider on a one by one basis. After every topic there is a Q&A section where you can test your knowledge on the given topics. Thanks for joining my course, let's get started!
Course Content
- 23 section(s)
- 151 lecture(s)
- Section 1 Introduction
- Section 2 ### RECURSION ###
- Section 3 ### SEARCH ALGORITHMS ###
- Section 4 ### BACKTRACKING ###
- Section 5 ### DYNAMIC PROGRAMMING ###
- Section 6 ### DATA STRUCTURES ###
- Section 7 Data Structures - Arrays
- Section 8 Data Structures - Linked Lists
- Section 9 Data Structures - Stacks
- Section 10 Data Structures - Queues
- Section 11 Data Structures - Trees
- Section 12 Priority Queues (Heaps)
- Section 13 B-Trees
- Section 14 Associative Arrays (HashTables)
- Section 15 ### GRAPH ALGORITHMS ###
- Section 16 Graph Algorithms - Breadth-First Search (BFS)
- Section 17 Graph Algorithms - Depth-First Search (DFS)
- Section 18 Graph Algorithms - Dijkstra's Shortest Path Algorithm
- Section 19 Graph Algorithms - Bellman-Ford Algorithm
- Section 20 ### SUBSTRING SEARCH ALGORITHMS ###
- Section 21 ### SORTING ALGORITHMS ###
- Section 22 Algorhyme FREE Algorithms Visualizer App
- Section 23 DOWNLOADS (Course Materials)
What You’ll Learn
- understand recursion and stack memory
- understand backtracking
- understand dynamic programming
- understand the fundamental data structures
- understand arrays and linked lists
- understand stacks and queues abstract data types
- understand tree data structures (binary search trees and heaps)
- understand hashing and hash-based data structures such as hash tables
- understand graph algorithms
- understand breadth-first search and depth-first search
- understand shortest path problem (Dijkstra's and Bellman-Ford algorithm)
- understand substring search algorithms (Rabin-Karp, Knuth-Morris-Pratt and Z algorithms)
- understand sorting algorithms
Skills covered in this course
Reviews
-
VVinutha Ck
I it very informative and easy to understand course.
-
SShikhar Singh
Just Wow! Great energy.
-
DDaniel Orozco
I really like the programming examples!!!
-
EEvgeniya
Good course with detailed and understandible explanation of algorithms. Just recommend to add sections with repetiotion of material or make quizes more complicated to better memorization