What you will learn
You will learn what is algorithm and what is their usefulness. You will learn about basic and advance algorithms as well as useful number theory, geometry and data data structure concepts that is used in conjunction with various algorithm problems. You will also learn about algorithm problem solving in programming contest websites and how to improve in these platforms.
Introduction to Algorithm
In this section we will learn what is algorithm and why it is useful. We will also learn about time & space complexity, control structure etc.
In this section we will check sorting algorithms in detail and we will go through Bubble Sort, Selection Sort, Insertion Sort, Counting Sort, Merge Sort, Quick Sort, Heap Sort
We will about various search techniques such as Linear search, Binary search, Ternary search and we will see where we can apply then to solve algorithm problems.
Basic Number Theory
In conjunction to algorithms, we most of the time need to apply the concepts of number theory so solve our problem efficiently. Here will learn about some of such number theories such as: Prime number and Sieve, Prime Factorization, Number of divisors and Sum of divisors, GCD, LCM, Modulo arithmetic, Big Mod, Euler Phi etc.
Important Basic Data Structures and STL
In this section we will learn about Link List, Stack, Queue, Deque, Graph, Tree, Hash table, Segment-tree, Histogram problem, STL etc and learn their application.
We will see some important graph algorithms such as : BFS, DFS, Shortest Path algorithms, MST and practice these on example.
Basic recursion and dynamic programming
In this lesson we will learn about Factorial and Fibonacci series with recursion, Permutation and combinations, Coin Change DP, LIS and LCS
Here we will learn some greedy algorithms such as: a. Introduction to different greedy algorithms, Activity Selection Problem, Interval Partitioning Problem with examples.
We will also check some basic geometry concepts that we might need such as : Line, Triangle, Circle