This course is about data structures, algorithms and graphs. We are going to implement the problems in Python programming language.I highly recommend typing out these data structures and algorithms several times on your own in order to get a good grasp of it.
So what are you going to learn in this course?
Section 1:
Section 2 - Arrays:
Section 3 - Linked Lists:
Section 4 - Stacks and Queues:
stacks and queues
stack memory and heap memory
how the stack memory works exactly?
stacks and queues related interview questions
Section 5 - Binary Search Trees:
what are binary search trees
practical applications of binary search trees
problems with binary trees
Section 6 - Balanced Binary Trees (AVL Trees and Red-Black Trees):
Section 7 - Priority Queues and Heaps:
Section 8 - Hashing and Dictionaries:
Section 9 - Graph Traversal:
Section 10 - Shortest Path problems (Dijkstra's and Bellman-Ford Algorithms):
Section 11 - Spanning Trees (Kruskal's and Prim's Approaches):
Section 12 - 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
Section 13 - 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
Section 14 - Sorting Algorithms
sorting algorithms
bubble sort, selection sort and insertion sort
quicksort and merge sort
non-comparison based sorting algorithms
counting sort and radix sort
Section 15 - Algorithms Analysis
how to measure the running time of algorithms
running time analysis with big O (ordo), big Ω (omega) and big θ (theta) notations
complexity classes
polynomial (P)and non-deterministic polynomial (NP)algorithms
O(1), O(logN), O(N) and several other running time complexities
In the first part of the course we are going to learn about basic data structures such as linked lists, stacks, queues, binary search trees,heaps and some advanced ones such as AVL trees and red-black trees.. The second part will be about graph algorithms such as spanning trees, shortest path algorithms and graph traversing. We will try to optimize each data structure as much as possible.
In each chapter I am going to talk about the theoretical background of each algorithm or data structure, then we are going to write the code step by step inPython.
Most of the advanced algorithms relies heavily on these topics so it is definitely worth understanding the basics. These principles can be used in several fields: in investment banking, artificial intelligence or electronic trading algorithms on the stock market. Research institutes use Python as a programming language in the main: there are a lot of library available for the public from machine learning to complex networks.
Thanks for joining the course, let's get started!