0% found this document useful (0 votes)
23 views6 pages

CPP + DSA + CP Plan

The document outlines a comprehensive 24-day C++ programming course covering fundamental topics such as syntax, control structures, functions, arrays, pointers, object-oriented programming, data structures, algorithms, and advanced concepts like dynamic programming and game theory. Each day consists of two classes focusing on theory and hands-on coding practice, ensuring a practical understanding of concepts. The curriculum is designed to prepare students for competitive programming and technical interviews.

Uploaded by

mkeerthisan12
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
23 views6 pages

CPP + DSA + CP Plan

The document outlines a comprehensive 24-day C++ programming course covering fundamental topics such as syntax, control structures, functions, arrays, pointers, object-oriented programming, data structures, algorithms, and advanced concepts like dynamic programming and game theory. Each day consists of two classes focusing on theory and hands-on coding practice, ensuring a practical understanding of concepts. The curriculum is designed to prepare students for competitive programming and technical interviews.

Uploaded by

mkeerthisan12
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 6

Days Class (6 Hours) Topic Details

Overview of C++ as a language and its evolution.


Basic structure of a C++ program, including #include, int main(), and return 0.
Writing and understanding your first program (“Hello, World!”).
Day 1 Class 1 Introduction to C++ Basic syntax, including keywords, identifiers, and comments.
Introduction to variables, data types (int, float, double, char, bool), and constants (const, #define).
Basic I/O operations using cin and cout.
Hands-on practice with simple programs (e.g., basic arithmetic operations).
Conditional statements: if-else, else-if, switch-case.
Loops: for, while, do-while.
Nested loops and conditionals.
Day 1 Class 2 Control Structures
Using break, continue, and goto statements.
Hands-on coding with problems involving control structures (e.g., checking prime numbers, factorial,
simple menu-driven programs).
Function declaration and definition.
Function return types and parameters.
Function overloading.
Day 2 Class 1 Functions in C++
Inline functions.
Recursion: Concept and implementation.
Hands-on practice with simple recursive problems (e.g., Fibonacci series, factorial calculation).
Introduction to arrays: Declaration, initialization, and accessing elements.
Multidimensional arrays.
Common array operations: Searching, sorting, and traversing.
Day 2 Class 2 Arrays and Strings Strings in C++: Declaration, initialization, and basic operations.
String functions from the <cstring> library (e.g., strlen, strcpy, strcmp).
Hands-on coding with array and string manipulation problems (e.g., reverse an array, check for
palindrome string).
Introduction to pointers: Declaration, initialization, and dereferencing.
Pointer arithmetic.
Pointers with arrays and functions.
Day 3 Class 1 Pointers and References Introduction to references: Reference variables and passing by reference.
Dynamic memory allocation using new and delete.
Hands-on practice with pointer-based problems (e.g., swapping values using pointers, dynamic array
creation).

Deep dive into dynamic memory allocation: Arrays, multi-dimensional arrays using pointers.
Introduction to the Standard Template Library (STL).
Dynamic Memory Allocation and Introduction to Overview of STL containers: vector, list, deque.
Day 3 Class 2
STL Iterators: Definition and usage with STL containers.
Basic operations using STL containers.
Hands-on coding with dynamic memory and STL (e.g., basic operations on vectors and lists).
Basics of Object-Oriented Programming: Classes and Objects.
Creating classes and objects in C++.
Introduction to Object-Oriented Programming
Day 4 Class 1 Constructors and Destructors: Default, parameterized, and copy constructors.
(OOP)
Access specifiers: public, private, protected.
Hands-on practice by creating basic classes (e.g., Car class with attributes and methods).
Inheritance: Single and multiple inheritance.
Polymorphism: Compile-time (function overloading, operator overloading) and runtime (virtual
functions).
Day 4 Class 2 Advanced OOP Concepts Abstract classes and pure virtual functions.
Encapsulation and Data Hiding.
Hands-on coding with OOP concepts (e.g., designing a simple inheritance hierarchy, operator
overloading).
Detailed overview of STL containers: vector, set, map, stack, queue.
Iterators and their types: Input, output, forward, bidirectional, and random access iterators.
Day 5 Class 1 Standard Template Library (STL) Overview STL algorithms: sort, find, count, binary_search, lower_bound, upper_bound.
Function objects (functors) and their usage in STL algorithms.
Hands-on coding with STL (e.g., implementing algorithms using vector, set, map).
Introduction to bitwise operators: AND, OR, XOR, NOT, left shift, right shift.
Common bit manipulation tricks: Checking if a number is even/odd, finding the ith bit, setting/clearing
Day 5 Class 2 Bit Manipulation bits.
Hands-on practice with basic to intermediate bit manipulation problems (e.g., swapping two numbers
using XOR, counting set bits in an integer).
Problem-solving techniques: Brute force, optimization.
Day 6 Class 1 Time Complexity
Time complexity analysis: Big O notation, analyzing loops and recursive functions
Introduction to arrays in DSA: Advantages and limitations.
Prefix sum technique: Understanding and applications.
Day 6 Class 2 Arrays
Hands-on practice with array problems (e.g., finding subarrays with a given sum, two-pointer
problems).
Day 7 Class 1 Two Pointer Advanced problem-solving techniques: Two-pointer technique and Interview Questions
Advanced problem-solving techniques: Sliding Window of fixed and variable sizeand Interview
Day 7 Class 2 Sliding Window
Questions

Introduction to linked lists: Singly and doubly linked lists.


Basic operations: Insertion, deletion, traversal.
Day 8 Class 1 LinkedList
Advanced operations: Reversing a linked list, finding the middle element, detecting loops.
Hands-on coding with linked list problems (e.g., reversing a linked list, merging two sorted linked lists).

Day 8 Class 2 LinkedList


Introduction to stacks: LIFO structure, operations, and applications.
Introduction to queues: FIFO structure, operations, and applications.
Stacks and Queues
Day 9 Class 1 Implementation of stacks and queues using arrays and linked lists.
Hands-on practice with stack and queue problems (e.g., balanced parentheses, implementing a
queue using two stacks).
Stacks and Queues
Day 9 Class 2 Medium and Hard Level Interview Questions on stacks and Queues
Introduction to hashing: Concept, applications, and collision resolution techniques.
Hash tables: Implementation and usage.
Day 10 Class 1 Hashing Common hash functions and their properties.
Hands-on coding with hashing problems (e.g., finding duplicates in an array, count frequency of
elements).
Understanding binary search: Concept, implementation, and analysis.
Binary search on arrays: Finding an element, first and last occurrence.
Day 10 Class 2 Binary Search Advanced binary search problems: Searching in rotated sorted arrays, finding peak elements.
Hands-on practice with binary search problems (e.g., binary search on a sorted array, finding square
roots using binary search).
Introduction to sorting: Need for sorting, basic concepts.
Quick Sort: Concept, implementation, and analysis.
Merge Sort: Concept, implementation, and analysis.
Day 11 Class 1 Sorting Algorithms
Comparison of sorting algorithms: Time complexity, space complexity, stability.
Hands-on coding with sorting problems (e.g., sorting an array using Quick Sort, merging two sorted
arrays).
Introduction to recursion: Concept, base case, and recursive case.
Day 11 Class 2 Recursion 1
Common recursive problems: Factorial, Fibonacci, Towers of Hanoi.
Day 12 Class 1 Recursion 2 Medium and Hard Level Interview Questions on Recursion
Introduction to backtracking: Concept and applications.
Backtracking problems: N-Queens, Sudoku Solver, Subset Sum Problem.
Day 12 Class 2 Backtracking 1
Hands-on practice with recursion and backtracking problems (e.g., solving N-Queens problem,
generating all subsets of a set).
Day 13 Class 1 Backtracking 2 More medium and hard Questions on backtrackig asked in interviews.
Introduction to dynamic programming: Concept, memoization, and tabulation.
Day 13 Class 2 Dynamic Programming (DP) 1 Common DP problems: Fibonacci, Knapsack Problem, Longest Common Subsequence (LCS).
Understanding overlapping subproblems and optimal substructure.

Introduction to dynamic programming: Concept, memoization, and tabulation.


Common DP problems: Fibonacci, Knapsack Problem, Longest Common Subsequence (LCS).
Day 14 Class 1 Dynamic Programming (DP) 2 Understanding overlapping subproblems and optimal substructure.
Hands-on coding with basic DP problems (e.g., solving the Fibonacci problem using DP, 0/1
Knapsack problem).
Introduction to trees: Definition, terminology, and types.
Binary Trees: Representation, traversal methods (inorder, preorder, postorder).
Day 14 Class 2 Trees Binary Search Trees (BST): Properties, insertion, deletion, and searching.
Hands-on coding with tree problems (e.g., constructing a binary tree from inorder and preorder
traversals, checking if a tree is a BST).
Detailed study of tree traversal techniques: Recursive and iterative methods.
Level-order traversal using queues.
Common tree problems: Finding the height of a tree, finding the diameter of a binary tree, lowest
Day 15 Class 1 Tree Traversals and Common Tree Problems
common ancestor (LCA).
Hands-on practice with tree traversal problems (e.g., level order traversal, calculating the height of a
binary tree).
Introduction to graphs: Definition, representation (adjacency matrix, adjacency list).
Basic graph traversal techniques: Breadth-First Search (BFS) and Depth-First Search (DFS).
Day 15 Class 2 Graphs Understanding connected components in graphs.
Hands-on coding with basic graph traversal problems (e.g., BFS/DFS on an undirected graph,
detecting cycles in a graph).

Shortest Path Algorithms: Dijkstra’s algorithm for shortest paths from a single source.
Topological Sorting: Understanding the concept and its implementation using DFS.
Day 16 Class 1 Graph Problems
Hands-on practice with graph problems (e.g., finding the shortest path in a weighted graph using
Dijkstra, topological sorting of a DAG).

In-depth study of dynamic programming: Understanding the knapsack problem variants, subset sum
problem.
Memoization vs. Tabulation: Detailed examples and coding implementations.
Day 16 Class 2 Advanced Problems and Optimisations in DP
Solving complex DP problems: Longest Increasing Subsequence (LIS), Edit Distance problem.
Hands-on practice with advanced DP problems (e.g., solving the Longest Increasing Subsequence
using DP, solving the Edit Distance problem).
Introduction to greedy algorithms: Concept, properties, and when to use them.
Common greedy algorithms: Activity selection problem, Huffman coding.
Day 17 Class 1 Greedy Algorithms
Hands-on coding with greedy algorithm problems (e.g., solving the activity selection problem,
implementing Huffman coding).
Introduction to segment trees: Concept, construction, and applications.
Segment tree operations: Point updates and range queries.
Day 17 Class 2 Segment Trees Understanding lazy propagation in segment trees.
Hands-on coding with segment tree problems (e.g., constructing a segment tree for range sum
queries, implementing lazy propagation).
Solving advanced segment tree problems: Range minimum/maximum queries, range sum queries
with updates.
Day 18 Class 1 Segment Tree Problems Optimizing segment tree operations using lazy propagation.
Hands-on practice with segment tree problems (e.g., solving range minimum query problems,
implementing a segment tree with lazy propagation for range updates).
Introduction to Trie: Definition, applications, and basic operations.
Implementing a Trie from scratch: Insertion, searching, and deletion.
Day 18 Class 2 Trie Data Structure Applications of Trie: Autocomplete, spell checker, and dictionary implementation.
Hands-on coding with Trie problems (e.g., implementing a Trie for dictionary words, solving prefix-
based search problems).
Solving advanced Trie problems: Longest common prefix, word search in a grid.
Trie Problems
Optimization techniques for Trie operations.
Day 19 Class 1
Hands-on practice with Trie-based problems (e.g., solving the longest common prefix problem using
Trie, implementing a word search in a 2D grid).
Introduction to Disjoint Set Union (DSU): Concept, applications, and basic operations.
Union-Find algorithm: Implementation with path compression and union by rank.
Applications of DSU: Kruskal’s algorithm for Minimum Spanning Tree (MST).
Day 19 Class 2 Disjoint Set Union (DSU)
Hands-on coding with DSU problems (e.g., implementing union-find with path compression, solving
connectivity problems using DSU).
Solving advanced DSU problems: Detecting cycles in an undirected graph, connected components in
a graph.
Day 20 Class 1 DSU Problems Applications of DSU in competitive programming.
Hands-on practice with DSU-based problems (e.g., solving the connectivity problem using DSU,
implementing Kruskal’s algorithm for MST).
Introduction to advanced graph algorithms: Dijkstra’s algorithm for shortest paths in weighted graphs.
Floyd-Warshall algorithm: All-pairs shortest path.
Day 20 Class 2 Advanced Graph Algorithms Applications of advanced graph algorithms in real-world problems.
Hands-on coding with advanced graph problems (e.g., implementing Dijkstra’s algorithm, solving all-
pairs shortest path using Floyd-Warshall).
Solving advanced graph problems: Minimum Spanning Tree (MST) using Kruskal’s and Prim’s
algorithms.
Day 21 Class 1 Graph Problems Understanding network flow: Introduction to Ford-Fulkerson algorithm.
Hands-on practice with advanced graph problems (e.g., solving MST problems using Kruskal’s
algorithm, implementing network flow algorithms).
Introduction to string algorithms: Importance in competitive programming.
KMP Algorithm: Knuth-Morris-Pratt algorithm for pattern matching.
Day 21 Class 2 String Algorithms Z Algorithm: Linear-time pattern matching algorithm.
Hands-on coding with string matching problems (e.g., implementing the KMP algorithm, solving
pattern matching problems using the Z algorithm).
Solving advanced string problems: Palindromic substrings, suffix arrays.
Optimization techniques for string problems.
Day 22 Class 1 Advanced String Problems
Hands-on practice with advanced string problems (e.g., finding the longest palindromic substring,
solving problems using suffix arrays).
Number theory basics: GCD, LCM, prime factorization, Sieve of Eratosthenes.
Modular arithmetic: Modular exponentiation, modular inverses, Chinese Remainder Theorem.
Day 22 Class 2 Mathematical Algorithms
Hands-on coding with number theory problems (e.g., solving problems on finding large prime
numbers, modular arithmetic applications).

Introduction to game theory: Grundy numbers, Nim game, and their applications.
Solving problems using combinatorial game theory (e.g., analyzing the winning strategy for Nim
Day 23 Class 1 Game Theory games).
Hands-on coding with game theory problems (e.g., determining the winner in a given game setup,
calculating Grundy numbers for complex games).

Understanding heaps: Max-heap, min-heap, and their applications.


Priority queues and their use in solving competitive programming problems.
Day 23 Class 2 Heaps and Priority Queues Hands-on coding with heap-based problems (e.g., solving k-largest elements problem,huffman
encoding implementing priority queues for efficient task scheduling).

Introduction to Mo's Algorithm: Concept and applications in answering range queries efficiently.
Implementation of Mo's Algorithm for range queries.
Day 24 Class 1 Mo's Algorithm
Hands-on coding with Mo's Algorithm problems (e.g., solving problems that involve answering range
queries on static arrays).
Introduction to Fenwick Tree: Concept, construction, and use cases.
Operations on Fenwick Trees: Point updates, range queries.
Day 24 Class 2 Fenwick Tree (Binary Indexed Tree)
Hands-on coding with problems requiring efficient range queries and updates (e.g., solving range sum
queries using a Fenwick Tree).

You might also like