Programming
Data Structures and Algorithms (DSA) Mastery
This 4-month comprehensive course dives deep into Data Structures and Algorithms (DSA), focusing on problem-solving techniques, algorithm optimization, and tackling complex coding challenges. The course offers extensive hands-on projects, preparing students for real-world coding interviews and competitive programming in tech giants.
What you will learn
- Array Fundamentals
- Linked Lists
- Stack and Queue Operations
- Trees (Binary, BST, AVL, Red-Black Tree)
- Graph Algorithms (BFS, DFS, Dijkstra, Bellman-Ford)
- Sorting & Searching Algorithms
- Dynamic Programming
- Greedy Algorithms
- Backtracking Techniques
- Advanced Algorithm Design and Analysis
- Coding Challenges and Problem-Solving Strategies
Corporate training outcomes
- Completion certificate
- Practical assignments and project work
- Mentor support and progress tracking
- Custom batch options for teams
- Yes
Requirements
- Laptop with internet access
- Basic programming knowledge (C++, Java, Python)
- Problem-solving mindset
- Curious about mastering algorithms and data structures
- Willing to dedicate time and effort to practice
Curriculum
Introduction to DSA and Loop Time Complexity
- Why study DSA?
- Syllabus discussion.
- Understanding Leetcode and Codeforces coding platforms
- Introduction to Algorithms.
- Introduction to Time complexity analysis
- Time complexity analysis for loops
- Time complexity analysis summary
- Understanding Time complexity analysis with lots of examples
- What are Asymptotic Notations?
- Type of Asymptotic notations.
- Understanding asymptotic notations with lots of examples.
- Space Complexity Analysis
- Examples of Space complexity analysis
- Time complexity analysis for Recursive codes
- Examples of Time complexity analysis for Recursive codes
- Introduction to Array
- Types of Arrays
- Vector in C++
- ArrayList in Java
- List in Python
- Two pointer approach - with examples
- Sliding window technique - with examples
- Kadane's algorithm - with examples
- Prefix sum approach - with examples
- Solving MAANG companies problems on Arrays
- Introduction to Matrices.
- 2D array: Row major order
- 2D array: Column major order
- 2D vectors in C++
- 2D ArrayList in Java
- 2D List in Python
- Solving MAANG companies problems on Matrices
- Count number of Digits
- Finding Palindrome of a number
- GCD or HCF of a number
- Euclidean Algorithm for finding GCD
- GCD of Array
- Finding Least Common Multiplier (LCM) of given numbers
- Check a number Prime or not - Naive to Optimal
- Finding Prime factors
- Solving MAANG companies problems on Mathematical concepts
- Introduction to Bitwise operators.
- Why to use Bitwise operators?
- Type of Bitwise operators.
- Applying Bitwise operators in problems
- Solving MAANG companies problems on Bitwise operators
- Introduction to Recursion
- Building thought process to solve problem using recursion
- Recursion base building using lots of basic codes
- Properties of Recursion
- Understanding Tail recursion
- Understanding Indirect recursion
- Understanding Nested recursion
- Solving MAANG companies problems on Recursion
- Introduction to Backtracking
- Understanding Backtracking using basic problems
- Solving M - Coloring problem using Backtracking
- Solving N Queen problem using Backtracking
- Solving RAT in a Maze problem using Backtracking
- Introduction to Linked List
- Type of Linked list (Singly linked list, Doubly linked list, Circular linked list)
- Traverse operation in Linked list.
- Insert operation in Linked list.
- Delete operation in Linked list.
- Solving MAANG companies problems on Linked list
- Introduction to searching techniques.
- Linear searching technique.
- Binary search technique for Sorted array
- Binary search technique for unsorted array
- Binary search on 2D array
- Solving MAANG companies problems on Searching Techniques
- Introduction to Sorting techniques.
- Type of Sorting techniques.
- Time complexity of all Sorting algorithms.
- Inbuilt Sort() function
- Bubble Sort
- Selection Sort
- Insertion Sort
- Stable and Inplace sorting
- Merge sort
- Quick sort
- Heap sort
- Counting sort
- Bucket sort
- Solving MAANG companies problems on Sorting Techniques
- String Introduction
- Strings in C++/JAVA/Python
- Naive and Improved Naive Pattern Searching
- Rabin Karp Algorithm
- KMP Algorithm
- Solving MAANG companies problems on Strings
- Introduction to Hashing
- Collision resolution techniques
- Linear probing
- Quadratic probing
- Double hashing
- Linear Probing Vs Quadratic probing Vs Double hashing
- Unordered sets/HashSet in C++/Java
- Unordered map/HashMap in C++/Java
- Solving MAANG companies problems on Hashing
- Introduction to Stack
- Operations on Stack.
- Implement stack using array
- Implement stack using LinkedList
- Inbuild stack in C++/Java/Python
- Infix to Postfix conversion using stack
- Postfix evaluation using stack
- Monotonic Stack
- Solving MAANG companies problems on Stack
- Introduction to Queue.
- Types of Queue.
- Implement Queue using simple array
- Implement Queue using circular array
- Implement Queue using LinkedList
- Inbuild Queue in C++/Java/Python library.
- Implement Queue using Stack
- Implement Stack using Queue
- Solving MAANG companies problems on Queue
- Introduction to Tree
- Tree traversals - preorder
- Tree traversals - Inorder
- Tree traversals - postorder
- Construct Unique Binary tree - inorder & preorder
- Construct Unique Binary tree - inorder & postorder
- Count number of nodes in a binary tree
- Count number of leaves nodes in a binary tree
- Count Non-Leaf Nodes in Tree
- Height of Binary Tree
- Check for Balanced Tree
- Introduction to Binary Search Tree
- Insert a node in a BST
- Deletion in BST
- Inorder Successor in BST
- Introduction to AVL Tree
- Introduction to Red-Black Tree
- Set/TreeSet in C++/Java
- Map/TreeMap in C++/Java
- Solving MAANG companies problems on Queue
- Introduction to Graph
- Tree vs Graph
- Representation of Graphs in computer
- Adjacency matrix and Adjacency list
- BFT (Breadth First traversal)
- DFS (Depth First Search)
- Applications of BFS/DFS
- Detect cycle in an undirected graph
- Find the number of islands
- Bipartite Graph
- Topological sort
- Solving MAANG companies problems on Graph
- Introduction to Greedy Techniques.
- Fractional Knapsack problem
- Activity Selection Problem
- Huffman coding
- Solving MAANG companies problems with Greedy technique
- Introduction to Minimum Cost Spanning Tree
- Kruskal algorithm
- Prims algorithm
- Introduction to Single Source Shortest Path
- Dijkstra algorithm
- Bellmanford algorithm
- Solving MAANG companies problems with Greedy technique
- Introduction to Dynamic programming
- Greedy vs Dynamic programming
- Divide & Conquer vs Dynamic programming
- Type of Dynamic programming.
- Fibonacci Series using Dynamic Programming
- How to detect the hint When to apply DP
- Tabulation vs Memoization
- 1D Array Dynamic Programming
- 0/1 Knapsack problem
- Longest Common Subsequence (LCS)
- Matrix Chain Multiplication
- All Pair Shortest Path (Floyd Warshall)
- Solving MAANG companies problems with Dynamic Programming