DSA-Bootcamp-Java
DSA-Bootcamp-Java copied to clipboard
Syllabus Progress Tracker: Checkboxes without text formatting
Complete Java + DSA Bootcamp Syllabus
NOTE
- All topics will contain problems from LeetCode Easy to Hard, explained in an easy-to-understand manner.
- Complete custom implementation of all Data Structures and Algorithms.
- Create an issue in your own forked repo and copy the code for better reference
Lectures
- [ ] 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
- [ ] Arrays
- [ ] Introduction
- [ ] Memory management
- [ ] Input and Output
- [ ] ArrayList Introduction
- Searching
- [ ] Linear Search
- [ ] Binary Search
- [ ] Modified Binary Search
- [ ] Binary Search on 2D Arrays
- Sorting
- [ ] Insertion Sort
- [ ] Selection Sort
- [ ] Bubble Sort
- [ ] Cyclic Sort
- [ ] [Sliding window]
- [ ] [Two pointers]
- [ ] [Subarray questions]
- [ ] Pattern questions
- [ ] Strings
- [ ] Introduction
- [ ] How Strings work
- [ ] Comparison of methods
- [ ] Operations in Strings
- [ ] StringBuilder in java
- [ ] Maths for DSA
- [ ] Introduction
- [ ] Complete Bitwise Operators
- [ ] Range of numbers
- [ ] Prime numbers
- [ ] Sieve of Eratosthenes
- [ ] Newton's Square Root Method
- [ ] Factors
- [ ] Modulo properties
- [ ] Number Theory
- [ ] HCF / LCM
- [ ] Euclidean algorithm
- [ ] Recursion
- [ ] Introduction
- [ ] Flow of recursive programs - stacks
- [ ] Why recursion?
- [ ] Tree building of function calls
- [ ] Tail recursion
- [ ] Sorting
- [ ] Merge Sort
- [ ] Quick Sort
- [ ] Backtracking
- [ ] N-Queens
- [ ] N-Knights
- [ ] Sudoku Solver
- [ ] Maze problems
- [ ] Recursion String Problems
- [ ] Recursion Google, Amazon Questions
- [ ] Recursion Array Problems
- [ ] Recursion Pattern Problems
- [ ] Subset Questions
- [ ] Space and Time Complexity Analysis
- [ ] Introduction
- [ ] Comparisons of various cases
- [ ] Solving Linear Recurrence Relations
- [ ] Solving Divide and Conquer Recurrence Relations
- [ ] Big-O, Big-Omega, Big-Theta Notations
- [ ] Little Notations
- [ ] Get equation of any relation easily - best and easiest approach
- [ ] Complexity discussion of all the problems we do
- [ ] Space Complexity
- [ ] NP-Completeness Introduction
- [ ] Object Oriented Programming
- [ ] Introduction
- [ ] Classes & its instances
- [ ] this keyword in Java
- [ ] Properties
- [ ] Inheritance
- [ ] Abstraction
- [ ] Polymorphism
- [ ] Encapsulation
- [ ] Overloading & Overriding
- [ ] Static & Non-Static
- [ ] Packages
- [ ] Access Control
- [ ] Interfaces
- [ ] Abstract Classes
- [ ] Annotations
- [ ] Singleton Class
- [ ] final, finalize, finally
- [ ] Object Cloning
- [ ] Object Class
- [ ] Generics
- [ ] Exception Handling
- [ ] Collections Framework
- [ ] Vector Class
- [ ] Lambda Expression
- [ ] Enums
- [ ] Linked List
- [ ] Stacks & Queues
- [ ] Introduction
- [ ] Interview problems
- [ ] Push efficient
- [ ] Pop efficient
- [ ] Queue using Stack and Vice versa
- [ ] Circular Queue
- [ ] Trees
- [ ] Introduction
- [ ] Binary Trees
- [ ] Binary Search Trees
- [ ] DFS
- [ ] BFS
- [ ] AVL Trees
- [ ] Segment Tree
- [ ] Heaps
- [ ] Introduction
- [ ] Theory
- [ ] Priority Queue
- [ ] Heapsort
- [ ] Two Heaps Method
- [ ] k-way merge
- [ ] Top k elements
- [ ] Interval problems
- [ ] HashMap
- [ ] Introduction
- [ ] Theory - how it works
- [ ] Comparisons of various forms
- [ ] Limitations and how to solve
- [ ] Map using LinkedList
- [ ] Map using Hash
- [ ] Count Sort
- [ ] Radix Sort
- [ ] Chaining
- [ ] Probing
- [ ] Huffman-Encoder
- [ ] Subarray Questions: Sliding window, Two Pointer, Kadane's Algorithm
- [ ] Graphs
- [ ] Introduction
- [ ] BFS
- [ ] DFS
- [ ] Working with graph components
- [ ] Minimum Spanning Trees
- [ ] Kruskal Algorithm
- [ ] Prims Algorithm
- [ ] Dijkstra’s shortest path algorithm
- [ ] Topological Sort
- [ ] Bellman ford
- [ ] A* pathfinding Algorithm
- [ ] Dynamic Programming
- [ ] Introduction
- [ ] Recursion + Recursion DP + Iteration + Iteration Space Optimized
- [ ] Complexity Analysis
- [ ] 0/1 Knapsack
- [ ] Subset Questions
- [ ] Unbounded Knapsack
- [ ] Subsequence questions
- [ ] String DP
- [ ] Greedy Algorithms
- [ ] Tries
Advanced concepts apart from interviews
- [ ] 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
Syllabus Tracker :
[ ] Introduction to Programming
- [ ] Types of languages
- [ ] Memory management
- [ ] Flowcharts
- [ ] Pseudocode
[ ] Introduction
[ ] How it works
[ ] Conditionals & Loops in Java
- [ ] if-else
- [ ] loops
- [ ] Switch statements
[ ] Data-types
[ ] Functions
- [ ] Introduction
- [ ] Scoping in Java
- [ ] Shadowing
- [ ] Variable Length Arguments
- [ ] Overloading
[ ] Arrays
[ ] Introduction
[ ] Input and Output
Searching
- [ ] Linear Search
- [ ] Binary Search
- [ ] Modified Binary Search
- [ ] Binary Search on 2D Arrays
Sorting
- [ ] Insertion Sort
- [ ] Selection Sort
- [ ] Bubble Sort
- [ ] Cyclic Sort
[ ] [Sliding window]
[ ] [Two pointers]
[ ] [Subarray questions]
[ ] Strings
- [ ] Introduction
- [ ] How Strings work
- [ ] Comparison of methods
- [ ] Operations in Strings
- [ ] StringBuilder in java
[ ] Maths for DSA
- [ ] Introduction
- [ ] Complete Bitwise Operators
- [ ] Range of numbers
- [ ] Prime numbers
- [ ] Sieve of Eratosthenes
- [ ] Newton's Square Root Method
- [ ] Factors
- [ ] Modulo properties
- [ ] Number Theory
- [ ] HCF / LCM
- [ ] Euclidean algorithm
[ ] Recursion
[ ] Introduction
[ ] Why recursion?
[ ] Tail recursion
[ ] Sorting
- [ ] Merge Sort
- [ ] Quick Sort
[ ] Backtracking
- [ ] N-Queens
- [ ] N-Knights
- [ ] Sudoku Solver
- [ ] Maze problems
[ ] Subset Questions
[ ] Space and Time Complexity Analysis
- [ ] Introduction
- [ ] Comparisons of various cases
- [ ] Solving Linear Recurrence Relations
- [ ] Solving Divide and Conquer Recurrence Relations
- [ ] Big-O, Big-Omega, Big-Theta Notations
- [ ] Little Notations
- [ ] Get equation of any relation easily - best and easiest approach
- [ ] Complexity discussion of all the problems we do
- [ ] Space Complexity
- [ ] NP-Completeness Introduction
[ ] Object Oriented Programming
[ ] Introduction
[ ] Properties
- [ ] Inheritance
- [ ] Abstraction
- [ ] Polymorphism
- [ ] Encapsulation
[ ] Packages
[ ] Access Control
[ ] Interfaces
[ ] Abstract Classes
[ ] Annotations
[ ] Singleton Class
[ ] Object Cloning
[ ] Object Class
[ ] Generics
[ ] Vector Class
[ ] Enums
[ ] Linked List
[ ] Stacks & Queues
- [ ] Introduction
- [ ] Interview problems
- [ ] Push efficient
- [ ] Pop efficient
- [ ] Queue using Stack and Vice versa
- [ ] Circular Queue
[ ] Trees
- [ ] Introduction
- [ ] Binary Trees
- [ ] Binary Search Trees
- [ ] DFS
- [ ] BFS
- [ ] AVL Trees
- [ ] Segment Tree
[ ] Heaps
- [ ] Introduction
- [ ] Theory
- [ ] Priority Queue
- [ ] Heapsort
- [ ] Two Heaps Method
- [ ] k-way merge
- [ ] Top k elements
- [ ] Interval problems
[ ] HashMap
- [ ] Introduction
- [ ] Theory - how it works
- [ ] Comparisons of various forms
- [ ] Limitations and how to solve
- [ ] Map using LinkedList
- [ ] Map using Hash
- [ ] Count Sort
- [ ] Radix Sort
- [ ] Chaining
- [ ] Probing
- [ ] Huffman-Encoder
[ ] Subarray Questions: Sliding window, Two Pointer, Kadane's Algorithm
[ ] Graphs
- [ ] Introduction
- [ ] BFS
- [ ] DFS
- [ ] Working with graph components
- [ ] Minimum Spanning Trees
- [ ] Kruskal Algorithm
- [ ] Prims Algorithm
- [ ] Dijkstra’s shortest path algorithm
- [ ] Topological Sort
- [ ] Bellman ford
- [ ] A* pathfinding Algorithm
[ ] Dynamic Programming
- [ ] Introduction
- [ ] Recursion + Recursion DP + Iteration + Iteration Space Optimized
- [ ] Complexity Analysis
- [ ] 0/1 Knapsack
- [ ] Subset Questions
- [ ] Unbounded Knapsack
- [ ] Subsequence questions
- [ ] String DP
[ ] Greedy Algorithms
[ ] Tries
Advanced concepts apart from interviews
- [ ] 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
Complete Java + DSA Bootcamp Syllabus
NOTE
- All topics will contain problems from LeetCode Easy to Hard, explained in an easy-to-understand manner.
- Complete custom implementation of all Data Structures and Algorithms.
- Create an issue in your own forked repo and copy the code for better reference
Lectures
[x] 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* [ ] Arrays
[ ] Introduction* [ ] Memory management* [ ] Input and Output* [ ] ArrayList Introduction* Searching
[ ] Linear Search* [ ] Binary Search* [ ] Modified Binary Search* [ ] Binary Search on 2D Arrays* Sorting
[ ] Insertion Sort* [ ] Selection Sort* [ ] Bubble Sort* [ ] Cyclic Sort[ ] [Sliding window][ ] [Two pointers][ ] [Subarray questions][ ] Pattern questions* [ ] Strings
[ ] Introduction* [ ] How Strings work* [ ] Comparison of methods* [ ] Operations in Strings* [ ] StringBuilder in java* [ ] Maths for DSA
[ ] Introduction* [ ] Complete Bitwise Operators* [ ] Range of numbers* [ ] Prime numbers* [ ] Sieve of Eratosthenes* [ ] Newton's Square Root Method* [ ] Factors* [ ] Modulo properties* [ ] Number Theory* [ ] HCF / LCM* [ ] Euclidean algorithm* [ ] Recursion
[ ] Introduction* [ ] Flow of recursive programs - stacks* [ ] Why recursion?* [ ] Tree building of function calls* [ ] Tail recursion* [ ] Sorting
[ ] Merge Sort* [ ] Quick Sort* [ ] Backtracking
[ ] N-Queens* [ ] N-Knights* [ ] Sudoku Solver* [ ] Maze problems* [ ] Recursion String Problems* [ ] Recursion Google, Amazon Questions* [ ] Recursion Array Problems* [ ] Recursion Pattern Problems* [ ] Subset Questions* [ ] Space and Time Complexity Analysis
[ ] Introduction* [ ] Comparisons of various cases* [ ] Solving Linear Recurrence Relations* [ ] Solving Divide and Conquer Recurrence Relations* [ ] Big-O, Big-Omega, Big-Theta Notations* [ ] Little Notations* [ ] Get equation of any relation easily - best and easiest approach* [ ] Complexity discussion of all the problems we do* [ ] Space Complexity* [ ] NP-Completeness Introduction* [ ] Object Oriented Programming
[ ] Introduction* [ ] Classes & its instances* [ ] this keyword in Java* [ ] Properties
- [ ] Inheritance* [ ] Abstraction* [ ] Polymorphism* [ ] Encapsulation* [ ] Overloading & Overriding* [ ] Static & Non-Static* [ ] Packages* [ ] Access Control* [ ] Interfaces* [ ] Abstract Classes* [ ] Annotations* [ ] Singleton Class* [ ] final, finalize, finally* [ ] Object Cloning* [ ] Object Class* [ ] Generics* [ ] Exception Handling* [ ] Collections Framework* [ ] Vector Class* [ ] Lambda Expression* [ ] Enums* [ ] Linked List
[ ] Introduction* [ ] Singly + Doubly + Circular LinkedList* [ ] Fast and slow pointer* [ ] Cycle Detection* [ ] Reversal of LinkedList* [ ] Linked List + Recursion* [ ] Stacks & Queues
[ ] Introduction* [ ] Interview problems* [ ] Push efficient* [ ] Pop efficient* [ ] Queue using Stack and Vice versa* [ ] Circular Queue* [ ] Trees
[ ] Introduction* [ ] Binary Trees* [ ] Binary Search Trees* [ ] DFS* [ ] BFS* [ ] AVL Trees* [ ] Segment Tree* [ ] Heaps
[ ] Introduction* [ ] Theory* [ ] Priority Queue* [ ] Heapsort* [ ] Two Heaps Method* [ ] k-way merge* [ ] Top k elements* [ ] Interval problems* [ ] HashMap
[ ] Introduction* [ ] Theory - how it works* [ ] Comparisons of various forms* [ ] Limitations and how to solve* [ ] Map using LinkedList* [ ] Map using Hash* [ ] Count Sort* [ ] Radix Sort* [ ] Chaining* [ ] Probing* [ ] Huffman-Encoder[ ] Subarray Questions: Sliding window, Two Pointer, Kadane's Algorithm* [ ] Graphs
[ ] Introduction* [ ] BFS* [ ] DFS* [ ] Working with graph components* [ ] Minimum Spanning Trees* [ ] Kruskal Algorithm* [ ] Prims Algorithm* [ ] Dijkstra’s shortest path algorithm* [ ] Topological Sort* [ ] Bellman ford* [ ] A* pathfinding Algorithm* [ ] Dynamic Programming
[ ] Introduction* [ ] Recursion + Recursion DP + Iteration + Iteration Space Optimized* [ ] Complexity Analysis* [ ] 0/1 Knapsack* [ ] Subset Questions* [ ] Unbounded Knapsack* [ ] Subsequence questions* [ ] String DP[ ] Greedy Algorithms[ ] Tries
Advanced concepts apart from interviews
- [ ] 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
Complete Java + DSA Bootcamp Syllabus
NOTE
- All topics will contain problems from LeetCode Easy to Hard, explained in an easy-to-understand manner.
- Complete custom implementation of all Data Structures and Algorithms.
- Create an issue in your own forked repo and copy the code for better reference
Lectures
[ ] 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* [ ] Arrays
[ ] Introduction* [ ] Memory management* [ ] Input and Output* [ ] ArrayList Introduction* Searching
[ ] Linear Search* [ ] Binary Search* [ ] Modified Binary Search* [ ] Binary Search on 2D Arrays* Sorting
[ ] Insertion Sort* [ ] Selection Sort* [ ] Bubble Sort* [ ] Cyclic Sort[ ] [Sliding window][ ] [Two pointers][ ] [Subarray questions][ ] Pattern questions* [ ] Strings
[ ] Introduction* [ ] How Strings work* [ ] Comparison of methods* [ ] Operations in Strings* [ ] StringBuilder in java* [ ] Maths for DSA
[ ] Introduction* [ ] Complete Bitwise Operators* [ ] Range of numbers* [ ] Prime numbers* [ ] Sieve of Eratosthenes* [ ] Newton's Square Root Method* [ ] Factors* [ ] Modulo properties* [ ] Number Theory* [ ] HCF / LCM* [ ] Euclidean algorithm* [ ] Recursion
[ ] Introduction* [ ] Flow of recursive programs - stacks* [ ] Why recursion?* [ ] Tree building of function calls* [ ] Tail recursion* [ ] Sorting
[ ] Merge Sort* [ ] Quick Sort* [ ] Backtracking
[ ] N-Queens* [ ] N-Knights* [ ] Sudoku Solver* [ ] Maze problems* [ ] Recursion String Problems* [ ] Recursion Google, Amazon Questions* [ ] Recursion Array Problems* [ ] Recursion Pattern Problems* [ ] Subset Questions* [ ] Space and Time Complexity Analysis
[ ] Introduction* [ ] Comparisons of various cases* [ ] Solving Linear Recurrence Relations* [ ] Solving Divide and Conquer Recurrence Relations* [ ] Big-O, Big-Omega, Big-Theta Notations* [ ] Little Notations* [ ] Get equation of any relation easily - best and easiest approach* [ ] Complexity discussion of all the problems we do* [ ] Space Complexity* [ ] NP-Completeness Introduction* [ ] Object Oriented Programming
[ ] Introduction* [ ] Classes & its instances* [ ] this keyword in Java* [ ] Properties
- [ ] Inheritance* [ ] Abstraction* [ ] Polymorphism* [ ] Encapsulation* [ ] Overloading & Overriding* [ ] Static & Non-Static* [ ] Packages* [ ] Access Control* [ ] Interfaces* [ ] Abstract Classes* [ ] Annotations* [ ] Singleton Class* [ ] final, finalize, finally* [ ] Object Cloning* [ ] Object Class* [ ] Generics* [ ] Exception Handling* [ ] Collections Framework* [ ] Vector Class* [ ] Lambda Expression* [ ] Enums* [ ] Linked List
[ ] Introduction* [ ] Singly + Doubly + Circular LinkedList* [ ] Fast and slow pointer* [ ] Cycle Detection* [ ] Reversal of LinkedList* [ ] Linked List + Recursion* [ ] Stacks & Queues
[ ] Introduction* [ ] Interview problems* [ ] Push efficient* [ ] Pop efficient* [ ] Queue using Stack and Vice versa* [ ] Circular Queue* [ ] Trees
[ ] Introduction* [ ] Binary Trees* [ ] Binary Search Trees* [ ] DFS* [ ] BFS* [ ] AVL Trees* [ ] Segment Tree* [ ] Heaps
[ ] Introduction* [ ] Theory* [ ] Priority Queue* [ ] Heapsort* [ ] Two Heaps Method* [ ] k-way merge* [ ] Top k elements* [ ] Interval problems* [ ] HashMap
[ ] Introduction* [ ] Theory - how it works* [ ] Comparisons of various forms* [ ] Limitations and how to solve* [ ] Map using LinkedList* [ ] Map using Hash* [ ] Count Sort* [ ] Radix Sort* [ ] Chaining* [ ] Probing* [ ] Huffman-Encoder[ ] Subarray Questions: Sliding window, Two Pointer, Kadane's Algorithm* [ ] Graphs
[ ] Introduction* [ ] BFS* [ ] DFS* [ ] Working with graph components* [ ] Minimum Spanning Trees* [ ] Kruskal Algorithm* [ ] Prims Algorithm* [ ] Dijkstra’s shortest path algorithm* [ ] Topological Sort* [ ] Bellman ford* [ ] A* pathfinding Algorithm* [ ] Dynamic Programming
[ ] Introduction* [ ] Recursion + Recursion DP + Iteration + Iteration Space Optimized* [ ] Complexity Analysis* [ ] 0/1 Knapsack* [ ] Subset Questions* [ ] Unbounded Knapsack* [ ] Subsequence questions* [ ] String DP[ ] Greedy Algorithms[ ] Tries
Advanced concepts apart from interviews
- [ ] 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
Complete Java + DSA Bootcamp Syllabus
NOTE
- All topics will contain problems from LeetCode Easy to Hard, explained in an easy-to-understand manner.
- Complete custom implementation of all Data Structures and Algorithms.
- Create an issue in your own forked repo and copy the code for better reference
Lectures
[ ] 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* [ ] Arrays
[ ] Introduction* [ ] Memory management* [ ] Input and Output* [ ] ArrayList Introduction* Searching
[ ] Linear Search* [ ] Binary Search* [ ] Modified Binary Search* [ ] Binary Search on 2D Arrays* Sorting
[ ] Insertion Sort* [ ] Selection Sort* [ ] Bubble Sort* [ ] Cyclic Sort[ ] [Sliding window][ ] [Two pointers][ ] [Subarray questions][ ] Pattern questions* [ ] Strings
[ ] Introduction* [ ] How Strings work* [ ] Comparison of methods* [ ] Operations in Strings* [ ] StringBuilder in java* [ ] Maths for DSA
[ ] Introduction* [ ] Complete Bitwise Operators* [ ] Range of numbers* [ ] Prime numbers* [ ] Sieve of Eratosthenes* [ ] Newton's Square Root Method* [ ] Factors* [ ] Modulo properties* [ ] Number Theory* [ ] HCF / LCM* [ ] Euclidean algorithm* [ ] Recursion
[ ] Introduction* [ ] Flow of recursive programs - stacks* [ ] Why recursion?* [ ] Tree building of function calls* [ ] Tail recursion* [ ] Sorting
[ ] Merge Sort* [ ] Quick Sort* [ ] Backtracking
[ ] N-Queens* [ ] N-Knights* [ ] Sudoku Solver* [ ] Maze problems* [ ] Recursion String Problems* [ ] Recursion Google, Amazon Questions* [ ] Recursion Array Problems* [ ] Recursion Pattern Problems* [ ] Subset Questions* [ ] Space and Time Complexity Analysis
[ ] Introduction* [ ] Comparisons of various cases* [ ] Solving Linear Recurrence Relations* [ ] Solving Divide and Conquer Recurrence Relations* [ ] Big-O, Big-Omega, Big-Theta Notations* [ ] Little Notations* [ ] Get equation of any relation easily - best and easiest approach* [ ] Complexity discussion of all the problems we do* [ ] Space Complexity* [ ] NP-Completeness Introduction* [ ] Object Oriented Programming
[ ] Introduction* [ ] Classes & its instances* [ ] this keyword in Java* [ ] Properties
- [ ] Inheritance* [ ] Abstraction* [ ] Polymorphism* [ ] Encapsulation* [ ] Overloading & Overriding* [ ] Static & Non-Static* [ ] Packages* [ ] Access Control* [ ] Interfaces* [ ] Abstract Classes* [ ] Annotations* [ ] Singleton Class* [ ] final, finalize, finally* [ ] Object Cloning* [ ] Object Class* [ ] Generics* [ ] Exception Handling* [ ] Collections Framework* [ ] Vector Class* [ ] Lambda Expression* [ ] Enums* [ ] Linked List
[ ] Introduction* [ ] Singly + Doubly + Circular LinkedList* [ ] Fast and slow pointer* [ ] Cycle Detection* [ ] Reversal of LinkedList* [ ] Linked List + Recursion* [ ] Stacks & Queues
[ ] Introduction* [ ] Interview problems* [ ] Push efficient* [ ] Pop efficient* [ ] Queue using Stack and Vice versa* [ ] Circular Queue* [ ] Trees
[ ] Introduction* [ ] Binary Trees* [ ] Binary Search Trees* [ ] DFS* [ ] BFS* [ ] AVL Trees* [ ] Segment Tree* [ ] Heaps
[ ] Introduction* [ ] Theory* [ ] Priority Queue* [ ] Heapsort* [ ] Two Heaps Method* [ ] k-way merge* [ ] Top k elements* [ ] Interval problems* [ ] HashMap
[ ] Introduction* [ ] Theory - how it works* [ ] Comparisons of various forms* [ ] Limitations and how to solve* [ ] Map using LinkedList* [ ] Map using Hash* [ ] Count Sort* [ ] Radix Sort* [ ] Chaining* [ ] Probing* [ ] Huffman-Encoder[ ] Subarray Questions: Sliding window, Two Pointer, Kadane's Algorithm* [ ] Graphs
[ ] Introduction* [ ] BFS* [ ] DFS* [ ] Working with graph components* [ ] Minimum Spanning Trees* [ ] Kruskal Algorithm* [ ] Prims Algorithm* [ ] Dijkstra’s shortest path algorithm* [ ] Topological Sort* [ ] Bellman ford* [ ] A* pathfinding Algorithm* [ ] Dynamic Programming
[ ] Introduction* [ ] Recursion + Recursion DP + Iteration + Iteration Space Optimized* [ ] Complexity Analysis* [ ] 0/1 Knapsack* [ ] Subset Questions* [ ] Unbounded Knapsack* [ ] Subsequence questions* [ ] String DP[ ] Greedy Algorithms[ ] Tries
Advanced concepts apart from interviews
- [ ] 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