Complete Syllabus

8 Modules. 55+ Topics. From OOP to Modern C++20.

Click any module to expand the full topic list. Every topic includes live trainer instruction, hands-on coding on the platform, and assessment. The syllabus covers C++11/14/17/20 — not just legacy C++.

01

C++ Foundations & Environment Setup

What C++ adds to C, setting up the toolchain, and writing your first C++ program

1.1 History & Evolution: C++11 through C++20

Bjarne Stroustrup's vision. How C++ evolved from "C with classes" to a modern multi-paradigm language. Key standards: C++11 (the big one), C++14, C++17, C++20. What each standard added and why it matters.

1.2 C++ vs C: What's Different

Namespaces, references, bool type, function overloading, new/delete vs malloc/free. When to use C++ features vs C-style code. Understanding "zero-cost abstractions."

1.3 Compilation & Build Tools

g++ compiler, compilation flags (-std=c++17, -Wall, -O2), linking. Understanding the build process. CMake basics for multi-file projects. Setting up VS Code / CLion / Code::Blocks.

1.4 Namespaces & using Directive

std:: namespace, why "using namespace std" exists, when it's acceptable and when it's harmful (header files). Creating custom namespaces. Namespace aliasing.

1.5 I/O Streams: cin, cout, cerr

Stream-based I/O vs printf. Chaining operators (<<, >>). Input buffer issues. Using getline() for string input. Formatting output with setw, setprecision, fixed.

1.6 References vs Pointers

What a reference IS (an alias, not a pointer). Reference declaration (&), pass-by-reference, const references. When to use references vs pointers — a decision that comes up in every code review.

Placement relevance: C++ vs C differences, reference vs pointer questions, and namespace-related MCQs appear in Wipro, TCS, and Infosys technical sections.
02

Data Types, Control Flow & Functions

Type system, control structures, and building modular code with functions

2.1 C++ Type System & auto Keyword

Primitive types, type modifiers, const correctness. The auto keyword (C++11) — type deduction for variables, iterators, and lambda return types. decltype for expression type deduction.

2.2 C++ Type Casting Operators

static_cast, dynamic_cast, const_cast, reinterpret_cast — what each does, when to use which. Why C-style casts are discouraged in C++. Compile-time vs runtime casting.

2.3 Control Flow & Range-Based For

if/else, switch, for, while, do-while — C++ additions: if with initialiser (C++17), range-based for loops (C++11) for containers. Structured bindings in if/switch (C++17).

2.4 Functions: Overloading & Default Arguments

Function overloading (same name, different parameters), default parameter values, inline functions. How the compiler resolves overloaded calls (name mangling).

2.5 Pass by Value, Reference & Pointer

Three ways to pass arguments — trade-offs of each. const reference for large objects (avoiding copy without allowing modification). Return by value vs reference.

2.6 Recursion & constexpr Functions

Recursive patterns in C++. constexpr (C++11/14) — compile-time function evaluation. Writing functions that compute at compile time: constexpr factorial, Fibonacci. if constexpr (C++17).

Placement relevance: Function overloading resolution, auto type deduction, and type casting questions are staples of C++ MCQ sections in placement tests.
03

Object-Oriented Programming — Core Concepts

Classes, objects, encapsulation, constructors, destructors, and the this pointer

3.1 Classes & Objects

Class definition, member variables, member functions. Object creation (stack vs heap). Accessing members with dot (.) and arrow (->). Struct vs class in C++ (default access).

3.2 Constructors: Default, Parameterised, Copy

Constructor types, initialiser lists (why they matter for const/reference members), delegating constructors (C++11). Deep copy vs shallow copy — the classic interview question.

3.3 Destructors & Resource Cleanup

When destructors are called, manual resource cleanup, virtual destructors (critical for inheritance). What happens without virtual destructors — memory leaks in polymorphic code.

3.4 Encapsulation & Access Specifiers

private, protected, public — information hiding principles. Getter/setter pattern. Why encapsulation matters for large-scale software. Access control with inheritance.

3.5 The this Pointer

What this is (pointer to current object), when to use it (disambiguation, method chaining, returning *this). this in constructors and destructors.

3.6 Static Members & Methods

Class-level data and functions. Static member initialisation. Use cases: counters, singleton pattern, utility functions. Static const members.

3.7 Friend Functions & Friend Classes

Breaking encapsulation deliberately — when and why. Operator overloading with friend functions. Friend class access. Why overusing friend is a design smell.

3.8 const Methods & const Correctness

Marking methods as const (promise not to modify the object). mutable keyword. Why const correctness matters — "const is a contract with the caller." Interview favourite.

Placement relevance: Constructor/destructor order, shallow vs deep copy, static members, and const correctness are among the top 10 most asked OOP questions in product company interviews.
04

Inheritance, Polymorphism & Abstraction

Code reuse, runtime dispatch, and designing extensible class hierarchies

4.1 Inheritance: Single, Multi-Level, Hierarchical

Base and derived classes, protected members, constructor chaining. IS-A relationship. When to use inheritance vs composition (favour composition — the design principle).

4.2 Multiple Inheritance & the Diamond Problem

Inheriting from multiple base classes. The ambiguity problem (diamond inheritance). Virtual inheritance as the solution. Why Java avoided multiple class inheritance entirely.

4.3 Polymorphism: Compile-Time vs Runtime

Compile-time: function overloading + operator overloading. Runtime: virtual functions + vtable mechanism. How the compiler implements dynamic dispatch under the hood.

4.4 Virtual Functions & vtable

virtual keyword, override specifier (C++11), final keyword (C++11). How vtable works — the pointer-to-function-table mechanism. Performance implications of virtual calls.

4.5 Abstract Classes & Pure Virtual Functions

Declaring pure virtual functions (= 0). Abstract classes as interfaces. Why you can't instantiate abstract classes. Designing class hierarchies with abstract base classes.

4.6 Operator Overloading

Overloading +, -, ==, <<, >>, [], (). Member function vs non-member (friend) overloading. Rules: can't create new operators, can't change precedence. Overloading << for custom output.

4.7 Rule of Three / Rule of Five / Rule of Zero

If you define a destructor, copy constructor, or copy assignment — define all three (Rule of Three). With move semantics, add move constructor and move assignment (Rule of Five). Or let the compiler do everything (Rule of Zero).

Placement relevance: Virtual functions, vtable mechanism, diamond problem, and operator overloading are guaranteed questions in every product company C++ interview and OOP MCQ section.
05

Memory Management & Smart Pointers

Heap allocation, RAII pattern, and modern C++ ownership semantics

5.1 new / delete vs malloc / free

C++ dynamic allocation — constructor invocation, type safety, array allocation with new[]. Why new is preferred over malloc in C++. Placement new for advanced use.

5.2 RAII: Resource Acquisition Is Initialisation

The most important C++ idiom. Tying resource lifetime to object lifetime. Why RAII eliminates memory leaks by design. Examples: file handles, mutex locks, database connections.

5.3 Move Semantics & Rvalue References (C++11)

Lvalues vs rvalues. Rvalue references (&&). std::move — transferring ownership instead of copying. Why move semantics make C++ dramatically faster for large objects (vectors, strings).

5.4 Smart Pointers: unique_ptr (C++11)

Exclusive ownership — one owner, automatic cleanup. std::make_unique (C++14). Moving unique_ptr (can't copy). The default smart pointer for single ownership.

5.5 Smart Pointers: shared_ptr & weak_ptr

Reference-counted shared ownership. std::make_shared. Circular reference problem and how weak_ptr breaks cycles. Performance: reference counting overhead. When to use shared vs unique.

5.6 Common Memory Bugs & Debugging

Dangling pointers, double delete, use-after-free, memory leaks. Using Valgrind, AddressSanitizer, and -fsanitize=leak. Why raw owning pointers are considered a code smell in modern C++.

Placement relevance: Smart pointer questions (unique vs shared vs weak, ownership semantics) are standard in Google, Amazon, Microsoft, and DE Shaw C++ interviews. "What is RAII?" is a top-5 question.
06

Templates & Generic Programming

Writing type-independent code — the foundation of STL

6.1 Function Templates

Writing one function for any type — template<typename T>. Template argument deduction. Explicit specialisation. Templates vs function overloading — when to use which.

6.2 Class Templates

Generic classes: template<class T> class Stack {}; Member function definitions outside the class. Template parameters: type and non-type (int N). Default template arguments.

6.3 Template Specialisation

Full specialisation for specific types. Partial specialisation for class templates. Why specialisation matters — optimising for specific types (e.g., vector<bool>).

6.4 Variadic Templates (C++11)

Templates accepting any number of arguments — template<typename... Args>. Parameter pack expansion. Building type-safe printf, tuple implementation basics.

Placement relevance: Template syntax, specialisation, and "how does STL work internally" questions are common in product company and systems programming interviews.
07

STL — The Standard Template Library

Containers, iterators, algorithms, and functors — the competitive programming toolkit

7.1 Sequence Containers: vector, deque, list, array

vector (dynamic array), deque (double-ended), list (doubly linked), array (fixed). When to use each. Internal implementation, time complexities, and iterator invalidation rules.

7.2 Associative Containers: set, map, multiset, multimap

Ordered containers backed by red-black trees. O(log n) insert/find. Key uniqueness rules. Custom comparators. Practical use: frequency maps, sorted storage, interval problems.

7.3 Unordered Containers: unordered_map, unordered_set

Hash-table-backed O(1) average insert/find. Hash functions, bucket structure, load factor. When unordered beats ordered (and when it doesn't — worst case O(n)). Custom hash for pairs/structs.

7.4 Container Adaptors: stack, queue, priority_queue

Stack (LIFO), queue (FIFO), priority_queue (max-heap by default). Custom comparator for min-heap: priority_queue<int, vector<int>, greater<int>>. Dijkstra's algorithm uses this.

7.5 Iterators

Iterator categories: input, output, forward, bidirectional, random access. begin/end, rbegin/rend, cbegin/cend. Iterator arithmetic. Range-based for as iterator sugar.

7.6 STL Algorithms

sort, stable_sort, binary_search, lower_bound, upper_bound, find, count, accumulate, transform, for_each, next_permutation, min_element, max_element. The 20 algorithms every competitive programmer memorises.

7.7 Pairs, Tuples & Structured Bindings

std::pair for key-value storage, std::tuple for multiple returns, structured bindings (C++17): auto [x, y] = myPair; Practical use in graph edges, coordinate pairs, function returns.

7.8 Strings: std::string In-Depth

String operations: substr, find, rfind, replace, compare. String streams (stringstream) for parsing. to_string and stoi/stof for conversions. String vs char[] — always prefer std::string in C++.

Placement relevance: STL is THE competitive programming toolkit. Every coding contest and product company interview expects fluency with vector, map, set, priority_queue, and the sort/binary_search family. This module is non-negotiable for placement coding rounds.
08

Modern C++, File I/O & Exception Handling

Lambda expressions, error handling, file operations, and C++17/20 features

8.1 Lambda Expressions (C++11)

Anonymous functions: [capture](params) -> ret { body }. Capture by value [=], by reference [&], specific captures. Lambdas as arguments to STL algorithms. Lambdas as custom comparators for sort and priority_queue.

8.2 Exception Handling: try, catch, throw

Throwing and catching exceptions. Standard exception hierarchy (std::exception, std::runtime_error). Custom exception classes. Exception safety guarantees: basic, strong, nothrow. noexcept specifier.

8.3 File I/O: ifstream, ofstream, fstream

Reading/writing text and binary files. File open modes (ios::in, ios::out, ios::app, ios::binary). Checking file state (is_open, eof, fail). Serialisation patterns.

8.4 std::optional, std::variant, std::any (C++17)

optional: representing "may or may not have a value" (replacing raw pointers for optional data). variant: type-safe union. any: type-erased container. Modern alternatives to C-style hacks.

8.5 Concepts & Constraints (C++20)

Constraining template parameters: template<std::integral T>. Writing custom concepts. How concepts replace SFINAE for readable, maintainable template code. The future of generic programming.

8.6 Ranges Library (C++20)

Composable, lazy range operations: views::filter, views::transform, views::take. Pipeline syntax with |. How ranges modernise STL algorithm usage. Practical examples.

8.7 Multi-File Programming & Header Guards

Splitting C++ programs across .cpp and .hpp files. #pragma once vs include guards. Separate compilation, forward declarations, and managing dependencies in larger projects.

Placement relevance: Lambda expressions are used in every modern C++ codebase. Exception handling questions appear in service company MCQs. C++17/20 features (optional, concepts, ranges) signal advanced knowledge in product company interviews — a differentiator.
Hands-On Practice

What Students Build During This Module

OOP Class Hierarchy

Design a shape/vehicle/banking class hierarchy with inheritance, polymorphism, and operator overloading.

Custom Data Structures

Implement stack, queue, and linked list as template classes with iterators — understanding how STL works under the hood.

STL Problem Solving

100+ problems solved using vector, map, set, priority_queue, and STL algorithms — competitive coding style.

Smart Pointer Demo

Build a resource manager using unique_ptr and shared_ptr, demonstrating RAII and automatic cleanup.

File-Based Project

Student record system or contact manager using file I/O, custom classes, and exception handling.

Contest Simulation

Timed coding sessions using C++ STL — 3 problems in 60 minutes, mimicking placement coding rounds.

How We Deliver

Live Training + Daily STL Practice + Weekly Assessment

Live Instructor Sessions

Expert trainers explain concepts, code live, and solve OOP design problems interactively. 3–5 sessions per week.

Coding Platform Practice

Daily C++ problems on our platform — STL-based, OOP-based, and competitive coding problems with g++ compiler and automated testing.

Weekly Assessments

MCQ tests on OOP theory + timed coding challenges. Auto-evaluated with topic-wise analytics showing which concepts need reinforcement.

Progress Analytics

Student-wise dashboards tracking OOP concept mastery, STL fluency, and coding speed. TPOs see batch-level C++ readiness.

Why C++ Matters for Placements

The Language of Competitive Coding and Product Company Interviews

80%+ of Competitive Programmers Use C++

Codeforces, CodeChef, LeetCode — the overwhelming majority of top competitive programmers code in C++. The STL (vectors, maps, sets, priority queues, sort, binary_search) gives a speed advantage no other language matches in contests and timed placement coding round

Product Companies Prefer C++ for DSA

Google, Amazon, Microsoft, DE Shaw, Flipkart — when interviewers say "write code," C++ is the most accepted language for DSA solutions. Its speed, STL, and precise memory control make it the default for algorithm-heavy interviews.

OOP Questions Dominate Technical MCQs

Virtual functions, vtable, inheritance types, operator overloading, constructors/destructors, friend functions — C++ OOP concepts are the most frequently tested MCQ topics across TCS, Wipro, Cognizant, and Infosys placement tests.

Systems & Game Companies Require C++

Samsung, Qualcomm, Nvidia, Adobe, Oracle, game studios — systems programming, embedded systems, graphics engines, and high-performance computing are C++ domains. For students targeting these companies, C++ is non-negotiable.