Masterclass Series · Batch 25

Masterclass in Data Structure and Algorithm in C and C++

From dynamic memory allocation through red-black trees, graph algorithms, and dynamic programming — every data structure implemented from scratch, every algorithm proved correct.

Schedule: Every Sat – Sun
Time: 01:00 PM – 04:00 PM
Starting: 9th May 2026
Duration: 7 Months · ~65 Sessions
Language: Marathi
Pre-Requisite: Intermediate C
Batches Covered: 24
Why This Course

What Makes This DSA Course Different

DSA-specific depth you won’t find in the market.

01

Every Data Structure Built from Scratch

No library calls. You implement every linked list, every tree, every graph from raw memory allocation. 96 algorithms for linked lists alone — 23 operations across 4 list types. You don’t use a data structure. You build one.

02

Loop Invariants and Formal Correctness

You don’t just test algorithms with sample inputs and hope. You learn to reason about iterative algorithms using pre-conditions, post-conditions, and loop invariants — and about recursive algorithms using mathematical induction.

03

Virtual Memory Mapping of Data Structures

Every data structure is mapped to the virtual address space of a running process. Stack frames, heap allocations, pointer chains — you see where your nodes, edges, and arrays actually live in memory.

04

Complete Tree Coverage — Not Just BST

Binary search trees are the starting point, not the destination. You implement AVL trees, red-black trees, and B/B+ trees — each with full insert, delete, search, and rebalancing algorithms.

05

Graph Algorithms with Design Strategy

Not just “here’s Dijkstra’s algorithm.” You learn the greedy design strategy first, then see how Dijkstra’s, Prim’s, and Kruskal’s are specific applications. Each algorithm understood as a design choice, not a recipe.

06

Dynamic Programming as a Design Paradigm

You start with recursion, encounter overlapping subproblems, discover intractability, invent memoisation, and arrive at the DP paradigm. The pedagogy mirrors the historical discovery.

Course Progression

How the Course Unfolds

Nine modules, each building on the foundations laid before.

Phase 1: C/C++ Foundations

Dynamic memory allocation, pointer mechanics, C++ classes, templates, and STL containers — the toolkit you need before any data structure.

Phase 2: Iteration and Recursion

Looping techniques, recursive function design, loop invariants, and mathematical induction — the reasoning framework for every algorithm that follows.

Phase 3: Searching and Sorting

Bubble sort through heap sort, linear search through hashing — the fundamental operations inside every advanced data structure.

Phase 4: Arrays and Linear Structures

Dynamic arrays, stacks, queues, deques, priority queues, and matrix operations — array-based structures from contiguous memory.

Phase 5: Linked Structures

Four linked list types with 23 operations each. Then linked-list-based stacks, queues, deques, sets, and disjoint sets — 96+ algorithms.

Phase 6: Trees

BST, AVL, red-black, and B/B+ trees — full traversal, insertion, deletion, and rebalancing.

Phase 7: Graphs

Adjacency lists, DFS, BFS, Dijkstra, Bellman-Ford, Prim, Kruskal — modelling relationships and networks.

Phase 8: Dynamic Programming

From overlapping recursion to memoisation to the DP paradigm — rod cutting, matrix chain multiplication, LCS.

Phase 9: Algorithm Analysis

Step counting, recurrence equations, and the five asymptotic notations.

Complete Syllabus

Module-wise Syllabus

This is the full course content across ~65 weekend sessions.

Module 01

Foundations: C/C++ Techniques for Data Structures

The prerequisite toolkit — dynamic memory, pointer mechanics, classes, templates, and STL containers that every subsequent module depends on.

Dynamic Memory Allocation

  • Dynamic memory allocation using malloc(), calloc(), realloc(), and free()
  • Fundamentals of pointers and their relationship to dynamic memory
  • Managing dynamically allocated arrays of built-in data types and user-defined structures
  • Managing dynamically allocated arrays of pointers to built-in and user-defined types

C++ Essentials for DSA

  • The C++ class: private/public access specifiers, data members, static data members, member functions, static member functions
  • The this pointer — creating objects from a class — dynamic allocation with new and delete
  • Constructors and destructors
  • Function templates and class templates — introduction to the Standard Template Library
  • Sequential containers: vector, list, deque, array
  • Associative containers: map, multimap
  • Navigating containers using indices and iterators
Module 02

Iteration, Recursion, and Formal Reasoning

The reasoning framework for every algorithm in the course — loop invariants for iteration, mathematical induction for recursion.

Iterative Techniques

  • In-depth study of looping constructs: for and while loops, nested loops
  • Branching statements within loops — break and continue
  • Debugging looping constructs to gain deeper understanding of control flow

Recursion

  • Mathematical definition of recursive functions
  • Designing recursive functions using mathematical notation
  • Implementation of recursive functions in C/C++
  • Single-level, two-level, and multilevel recursion

Formal Reasoning About Algorithms

  • Reasoning about iterative algorithms using pre-conditions, post-conditions, and loop invariants
  • Reasoning about recursive algorithms using mathematical induction
Module 03

Searching and Sorting Algorithms

The fundamental operations that recur inside every advanced data structure — from bubble sort to heap sort, from linear search to hashing.

Basic Sorting Techniques

  • Bubble sort
  • Selection sort
  • Insertion sort

Advanced Sorting Techniques

  • Merge sort — divide-and-conquer with guaranteed O(n log n)
  • Quick sort — partitioning strategy and average-case efficiency
  • Heap sort — sorting via the heap property
  • Bucket sort — distribution-based sorting for uniform data
  • Shell sort — diminishing increment insertion sort

Searching Techniques

  • Linear search
  • Binary search
  • Hashing: universal hashing, hashing with chaining, designing a hash function, implementation
  • Advanced search via AVL and red-black trees — covered in the trees module
Module 04

Array-Based Data Structures and Matrix Operations

Contiguous memory structures — dynamic arrays, stacks, queues, priority queues, and the matrix operations that underlie numerical computing.

Dynamic Arrays

  • The dynamically expanding array (vector) as a data structure — growth strategy and amortised cost

Array-Based Abstract Data Types

  • Stack — LIFO access discipline
  • Queue — FIFO access discipline
  • Deque — double-ended access
  • Priority queue — access by priority ordering

Multi-Dimensional Arrays and Matrix Operations

  • Dynamic multi-dimensional array allocation and management
  • Representation of a dynamic matrix of m rows and n columns
  • Addition and subtraction of matrices
  • Multiplication of matrices
  • Adjoint of a matrix
  • Inverse of a matrix
Module 05

Linked Linear Data Structures: 96 Algorithms

Four linked list types, 23 operations each, every algorithm implemented from scratch — then linked-list-based stacks, queues, sets, and disjoint sets.

Four Linked List Types

  • Singly linked list
  • Singly circular linked list
  • Doubly linked list
  • Doubly circular linked list

23 Operations Implemented for Each List Type

  • Create list
  • Insert at beginning, insert at end, insert after given data, insert before given data
  • Get data at start position, get data at end position
  • Pop data at start position, pop data at end position
  • Remove data at start, remove data at end, remove node with given data
  • Search for a given data value
  • Display list, return empty status, return length of list
  • Concatenate two lists without creating a third list
  • Concatenate two lists by creating a third list
  • Merge two sorted lists
  • Linked list to array and array to linked list conversion
  • Get reversed version of a given list
  • In-place reversal of a given list
  • Destroy list

Linked-List-Based Abstract Data Types

  • Stack using linked list
  • Queue using linked list
  • Deque using linked list
  • Priority queue using linked list
  • Set implementation using linked list (no duplicate elements)
  • Dynamic collection of disjoint sets data structure
Module 06

Trees: From Binary Search to B+ Trees

The non-linear structures that make search logarithmic — BST, height-balanced trees, and disk-optimised trees, each with full implementation.

Binary Search Tree

  • Create binary search tree
  • Insert data, search data, remove data
  • Recursive traversals: preorder, inorder, postorder
  • Non-recursive traversals: preorder, inorder
  • Find inorder predecessor and inorder successor of a given value
  • Find maximum and minimum nodes
  • Destroy binary search tree

Height Balancing Techniques

  • The need for height balancing — worst-case degeneration of BST
  • Left rotation algorithm
  • Right rotation algorithm

Red-Black Tree

  • All binary search tree operations inherited
  • Left-rotate and right-rotate
  • RB-insert-fixup — restoring red-black properties after insertion
  • RB-delete-fixup — restoring red-black properties after deletion

AVL Tree

  • All binary search tree operations inherited
  • Left-rotate and right-rotate
  • AVL-insert-fixup — restoring balance after insertion
  • AVL-delete-fixup — restoring balance after deletion

B/B+ Tree

  • A data structure optimised for efficient storage on disk
  • Insert, delete, search, and split-child algorithms
Module 07

Graph Algorithms and Design Strategies

From mathematical definition to adjacency list implementation — traversals, shortest paths, and minimum spanning trees, each understood as a design choice.

Graph Foundations

  • Mathematical definition of a graph — vertices, edges, degree, paths, connectivity
  • Directed and undirected graphs
  • Representation strategies: adjacency matrix and adjacency lists

Graph Implementation

  • Create graph, add vertex, add edge, remove vertex, remove edge, display graph, destroy graph
  • Implementation of weighted graphs with all above operations
  • Implementation of directed graphs with all above operations

Traversal Algorithms

  • Depth-first search (DFS)
  • Breadth-first search (BFS)

Shortest Path Algorithms

  • Dijkstra’s shortest path algorithm on undirected, connected graphs
  • Bellman-Ford’s shortest path algorithm on directed graphs

Minimum Spanning Tree Algorithms

  • The greedy design strategy
  • Prim’s algorithm for constructing minimum spanning trees
  • Kruskal’s algorithm for constructing minimum spanning trees

Efficiency Considerations

  • Using hash-queues instead of linked lists to implement large-scale graphs
Module 08

Dynamic Programming: From Recursion to Optimisation

The journey from intractable recursion to efficient tabulation — memoisation, optimal substructure, and the DP design paradigm applied to classical problems.

From Recursion to Memoisation

  • Revisiting recursion — recursion with overlapping subproblems
  • The intractability of naïve recursion with overlapping subproblems
  • Memoisation — solving intractability by caching previously computed results
  • Memoised version of the Fibonacci sequence calculator
  • Memoised version of Ackermann’s function

The Dynamic Programming Paradigm

  • Adding an optimisation component to recursive functions with overlapping substructure
  • The dynamic programming design paradigm — bottom-up tabulation

Classical DP Problems

  • Rod-cutting problem — implementation and analysis
  • Matrix-chain multiplication problem — implementation and analysis
  • Longest common subsequence problem — implementation and analysis
Module 09

Analysis of Algorithms: Complexity and Asymptotic Notations

The mathematical language for reasoning about efficiency — step counting, recurrence equations, and the five asymptotic notations that formalise algorithmic performance.

Measuring Complexity

  • Time complexity of algorithms
  • Step counting of iterative algorithms
  • Step counting of recursive algorithms — formulating recurrence equations
  • Solving recurrence equations

Asymptotic Notations

  • Big Theta (Θ) — tight asymptotic bound
  • Big Oh (O) — asymptotic upper bound
  • Big Omega (Ω) — asymptotic lower bound
  • Small Oh (o) — strict upper bound
  • Small Omega (ω) — strict lower bound

Pre-Requisite: Intermediate C

You should be comfortable with the following topics in C before joining this course. These are not taught in the course — they are assumed.

01
Data Definition StatementsCreating variables of all built-in types
02
Branching and Loopingif, `if-else`, `if-else` `if-else`, switch, for, while, do-while, break, continue, nested loops
03
FunctionsDeclaration, definition, call, pass by value, pass by reference
04
User-Defined TypesDefining and using structures
05
ArraysArrays of built-in types, arrays of structures
06
Composite AccessArray as a member of structure — dereference, dot, arrow, and subscript operators
07
Stack Memory AllocationMemory allocation using data definition statements
08
Heap Memory AllocationMemory allocation using `malloc()`, `calloc()`, `realloc()`
09
PointersRequired pointer understanding for stack and heap allocation (items 07 and 08)
Strongly recommended: Complete the Advanced C Pointer Workshop on our YouTube channel before joining. It covers the exact pointer foundations this course assumes.

Ready to Master Data Structures and Algorithms?

Batch 25 starts 9th May 2026. First week is open for all.

₹11,800 (₹10,000 + ₹1,800 GST)
Register Now