# 0 to FAANG 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** ## Lectures * Introduction to Programming <input type="checkbox" checked disabled> * Introduction to Java <input type="checkbox" checked disabled> * How it works * Flowcharts & Pseudocode * Flow of the program * Setup Installation * Input and Output in Java * Data-types * Coding best practices * Arrays <input type="checkbox" checked disabled> * Introduction * Memory management * Input and Output * ArrayList Introduction * Sorting * Insertion Sort * Selection Sort * Bubble Sort * Count Sort * Radix Sort * Searching <input type="checkbox" checked> * Linear Search * Binary Search * Modified Binary Search * Sliding window * Two Pointer * Subarray Questions * Strings * How Strings work * Comparison of methods * Operations in Strings * StringBuilder in java * Maths for DSA * Complete Bitwise Operators * Prime numbers * HCF / LCM * Sieve of Eratosthenes * Newton's Square Root Method * Number Theory * Euclidean algorithm * Advanced Concepts for CP (later in course) * Bitwice + DP * Extended Euclidean algorithm * Modulo Properties * Modulo Multiplicative Inverse * Linear Diophantine Equations * Fremat's Theorem * Wilson's Theorem * Lucas Theorem * Chinese Remainder Theorem * Functions * Solving the above math problems in code * Scoping in Java * Shadowing * Variable Length Arguments * (more content in OOP such as overloading etc) * Space and Time Complexity Analysis * 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 * O 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 * Cyclic Sort * Backtracking * Sudoku Solver * N-Queens * N-Knights * Maze problems * Recursion String Problems * Recursion Array Problems * Recursion Pattern Problems * Subset Questions * Object Oriented Programming * Introduction * Classes & its instances * this keyword in Java * Properties * Inheritance * Abstraction * Polymorphism * Encapsulation * Overloading & Overriding * Static & Non-Static * Access Control * Interfaces * Abstract Classes * Singleton Class * final, finalize, finally * Stacks * Queues * Linked List * Introduction * Fast and slow pointer * Cycle Detection * Single and Doubly LinkedList * Reversal of LinkedList * Dynamic Programming * Many interview patterns here such as 0/1 knapsack * Binary Trees * DFS * BFS * AVL Trees * Segment Tree * Square Root Decomposition * Heaps & Priority Queue * Two Heaps Method * Many interview patterns * k-way merge * top k elements * much more * Hashmaps * Introduction * Theory - how it works * Comparisons of various forms * Limitations and how to solve * Map using LinkedList * Map using Has * Chaining * Probing * Tries * Graphs * Introduction * BFS * DFS * Working with graph components * Minimum Spanning Trees * Kruskal Algorithm * Prims Algorithm * Dijkstra's shortest path algorithm * Topological Sort