Competitive Problem-Solving using C++ with DSA & System Design
Duration – 20 Days
Program Structure
-
Problem-Solving using C++
- C++ fundamentals: pointers, dynamic memory, functions, templates
- STL algorithms and iterators
- STL containers: vector, list, stack, queue, set, map
- Lambda expressions, callbacks, function pointers
-
Object-Oriented Programming & Data Structures using C++
- OOP Principles
- Stacks
- Queues
- Linked Lists
- Trees
-
Design and Analysis of Algorithms
- Searching and Sorting (Linear, Binary, Bubble, Insertion, Merge, Quick)
- Recursion and Backtracking
- Divide and Conquer
- Greedy Algorithms
- Dynamic Programming
-
System Design Concepts
- Introduction to Low-Level and High-Level Design
- SOLID Principles and real-world design problems
-
Problem Solving Practice
- Hands-on coding with visible and hidden test cases
- Debugging edge cases and optimizing solutions
Project Stream
- Machine Learning and Deep Learning Deploy using Streamlit or Hugging Face
Program Outcomes
By the end of the program, learners will:
- Confidently solve complex coding problems using C++
- Apply STL and OOP principles to optimize solutions
- Analyze algorithmic performance using Big O
- Build modular, reusable, and efficient codebases
- Demonstrate readiness for campus drives and technical interviews
Tools / Platform:
- Code Blocks / VS Code / Linux
| Problem Solving using C++ | ||
|---|---|---|
| Introduction to C++ | References & Pointers in C++ | Dynamic Allocation in C++ |
| Functions | Function Overloading, Default Value | Function Template |
| STL Algorithms | Max, min, swap Algorithms | Count Algorithm |
| Sort | Iterators | STL Algo with Iterators |
| Max_element, min_element | Linear Search using find Algorithm | Binary Search : binary_search, lower_bound, upper_bound |
| Function Pointers | Callback | Lambda |
| STL Algorithms with Callback | find_if, count_if | for_each |
| STL Container Classes | Vector | List |
| Container Adapters | Stack, Queue, Priority Queue | Forward_list |
| Associative Containers | Set, map | Unordered_set, unordered_map |
| Debugging Skills | Code Optimization | Code Profiling |
| Competitive Problem-Solving using C++: Sample Program List | ||
| Remove Consecutive Characters | Percentage of Letter in String | Transform Array by Parity |
| Frequency of Elements | Union of Arrays with Duplicates | Sales by Match |
| Divide Array into Equal Pairs | Winner of an Election | |
| Object Oriented Programming & Data Structures using C++ | ||
|---|---|---|
| Object Oriented Programming | Class in C++ | Encapsulation |
| Stacks Implementation using Class | Queue Implementation using Class | Application of Stack |
| Singly Linked List Implementation using Class | Operator Overloading | Compare Two Lists using Overloaded Relational Operators |
| Doubly Linked List | Circular Linked List | Inheritance |
| Polymorphism | Create Hierarchy of Data | Casting Operators |
| Trees | Binary Search Tree | Tree Traversal |
| Competitive Problem-Solving using Data Structure: Sample Program List | ||
| Parenthesis Matching using Stack | Super Reduced String using Stack | Max Element in Stack with O(1) |
| Insert node at Front / Rear | Delete node at Front / Rear | Reverse a Linked List |
| Compare two Linked List | Merge two Sorted Linked List | Delete duplicate value nodes |
| Cycle Detection | Tree Traversals: InOrder, PreOrder, PostOrder, LevelOrder | Height of Tree |
| Search in BST | Expression Tree | Graph Traversal |
| Topological Sequencing | Prims Algorithm | Kruskals Algorithm |
| Design and Analysis of Algorithm | ||
| Introduction to Algorithms | Time and Space Complexity | Asymptotic notations: Big-O |
| Brute Force | Divide and Conquer | Greedy Algorithm |
| Recursion | Dynamic Programming | Backtracking |
| Introduction to Graph | Graph Representation | Graph Traversal |
| Breadth First Search (BFS) | Depth First Search (DFS) | Minimum Spanning Tree |
| Prims Algorithm | Kruskals Algorithm | Single Source Shortest Path |
| Dijkstra's Algorithm | Floyd Algorithm | Warshall Algorithm |
| N-Queens Problem | 0/1 Knapsack | Topological Sequencing |
| System Design and Project | ||
| Introduction to System Design in C++ | Difference between algorithmic problem-solving and system level thinking | System Design Process |
| Modular Programming | Project Structuring | Designing reusable modules |
| Designing robust exception handling frameworks | Designing Libraries | Creating Static Libraries |
| Creating Dynamic Libraries | Makefile | Targets and Rules |
| Version Control using Git and Github | Branching and Merging | History Tracking |
