SYLLABUS
SYLLABUS
• 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
• Pattern questions
• Strings
– Introduction
– How Strings work
– Comparison of methods
– Operations in Strings
– StringBuilder in Java
1
– StringBuffer
• 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
– BigInteger & BigDecimal
• 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
2
– 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
– Push efficient
– Pop efficient
– Queue using Stack and vice versa
– Circular Queue
– Interview problems
• File handling
• Trees
– Introduction
∗ Binary Trees
∗ Binary Search Trees
– Interview questions
∗ DFS
∗ BFS
3
– AVL Trees
– Segment Tree
– Fenwick Tree / Binary Indexed 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
4
• Greedy Algorithms
• Tries