- Complete Git & GitHub Course
- Introduction to Programming
-
- Types of languages
-
- Memory management
-
- Flow of the program
-
- Flowcharts
-
- Pseudocode
-
- Introduction to Java
-
- Introduction
-
- How it works
-
- Setup Installation
-
- Input and Output in Java
-
- Conditionals & Loops in Java
-
- if else
-
- loops
-
- Switch statements
-
- Data types
-
- Coding best practices
-
- Functions
-
- Introduction
-
- Scoping in Java
-
- Shadowing
-
- Variable Length Arguments
-
- Overloading
-
- Pattern questions
- Arrays
-
- Introduction
-
- Memory management
-
- Input and Output
-
- ArrayList Introduction
-
- Sorting
-
- Insertion Sort
-
- Selection Sort
-
- Bubble Sort
-
- Cyclic Sort (Merge sort etc after recursion)
- Searching
-
- Linear Search
-
- Binary Search
-
- Modified Binary Search
-
- Binary Search Interview questions
-
- Binary Search on 2D Arrays
-
-
- Strings
- Introduction
- How Strings work
- Comparison of methods
- Operations in Strings
- StringBuilder in java
- Maths for DSA
-
- Introduction
-
- Complete Bitwise Operators
-
- Prime numbers
-
- HCF / LCM
-
- Sieve of Eratosthenes
-
- Newton's Square Root Method
-
- Number Theory
-
- Euclidean algorithm
-
- Space and Time Complexity Analysis
-
- Introduction
-
- Comparion of various cases
-
- Solving Linear Recurrence Relations
-
- Solving Divide and Conquer Recurrence Relations
-
- Big-O, Big-Omega, Big-Theta Notations
-
- Get equation of any relation easily - best and easiest approach
-
- Complexity discussion of all the problems we do
-
- Space Complexity
-
- Memory Allocation of various languages
-
- NP Completeness and Hardness
-
- Recursion
-
- Introduction
-
- Why recursion?
-
- Flow of recursive programs - stacks
-
- Convert recursion to iteration
-
- Tree building of function calls
-
- Tail recursion
-
- Sorting:
-
- Merge Sort
-
- Quick Sort
-
- Sorting:
-
- Backtracking
-
- Sudoku Solver
-
- N-Queens
-
- N-Knights
-
- Maze problems
-
- Backtracking
-
- Recursion String Problems
-
- Recursion Array Problems
-
- Recursion Pattern Problems
-
- Subset Questions
-
- Recursion - Permutations, Dice Throws etc Questions
-
- Object Oriented Programming
-
- Introduction
-
- Classes & its instances
-
- this keyword in Java
-
- Properties
-
- Inheritance
-
- Abstraction
-
- Polymorphism
-
- Encapsulation
-
- Properties
-
- Overloading & Overriding
-
- Static & Non-Static
-
- Access Control
-
- Interfaces
-
- Abstract Classes
-
- Singleton Class
-
- final, finalize, finally
-
- Exception Handling
-
- Linked List
-
- Introduction
-
- Singly and Doubly Linked List
-
- Circular Linked List
-
- Fast and slow pointer
-
- Cycle Detection
-
- Reversing of LinekdList
-
- Linked List Interview questions
-
- Stacks & Queues
-
- Introduction
-
- Interview problems
-
- Push efficient
-
- Pop efficient
-
- Queue using Stack and Vice versa
-
- Circular Queue
-
- Dynamic Programming
-
- Introduction
-
- Recursion + Recursion DP + Iteration + Iteration Space Optimized
-
- Complexity Analysis
-
- 0/1 Knapsack
-
- Subset Questions
-
- DP on Grids
-
- LC Questions on Above topics
-
- Unbounded Knapsack
-
- Subseq questions
-
- String DP
-
- Trees
-
- Introduction
-
- Binary Trees
-
- Recursive Preorder, Inorder, Postorder Traversals
-
- Iterative Preorder, Inorder, Postorder Traversals
-
- LC Questions
-
- DFS
-
- BFS
-
- Morris Traversal
O(1) Space
- Morris Traversal
-
- Binary Search Trees
-
- LC Questions
-
- AVL Trees
-
- Segment Tree
-
- Fenwick Tree / Binary Indexed Tree
-
- Heaps
-
- Introduction
-
- Theory
-
- Priority Queue
-
- Two Heaps Method
-
- k-way merge
-
- top k elements
-
- interval problems
-
- Hashmaps
-
- Introduction
-
- Theory - how it works
-
- Comparisons of various forms
-
- Limitations and how to solve
-
- Map using LinkedList
-
- Map using Hash
-
- Chaining
-
- Probing
-
- Huffman-Encoder
-
- Tries
-
- Introduction
-
- Theory - how it works
-
- Applications
-
- Insert and Search
-
- GFG articles and Questions
-
- Interview Questions
-
- Graphs
-
- Introduction
-
- BFS
-
- DFS
-
- Working with graph components
-
- Bipartite Graph
-
- LC Questions
-
- Minimum Spanning Trees
-
- Kruskal Algorithm
-
- Prims Algorithm
-
- Dijkstra’s shortest path algorithm
-
- Topological Sort
-
- Kahn's Algorithm
-
- Bellman ford
-
- A* pathfinding Algorithm
-
- Greedy Algorithms
-
- Introduction
-
- Applications
-
- LC,GFG Questions
-
- Interview Questions
-
- Fast IO
- File handling
- Bitwise + DP
- Extended Euclidean algorithm
- Modulo Multiplicative Inverse
- Linear Diophantine Equations
- Matrix Exponentiation
- Mathematical Expectation
- Catalan Numbers
- Fermat’s Theorem
- Wilson's Theorem
- Euler's Theorem
- Lucas Theorem
- Chinese Remainder Theorem
- Euler Totient
- NP-Completeness
- Multithreading
- Fenwick Tree / Binary Indexed Tree
- Square Root Decomposition
-
Subscribe to the YouTube channel
-
Assignments (solutions can be found on LeetCode)