Week 1: Introduction to C++
Lecture 1: Overview of C++ and Setting Up Environment
Definition, IDE setup, "Hello, World!" program
Tasks: Install IDE, write and run "Hello, World!", explore basic program structure
Lecture 2: Basic Syntax and Structure
Program structure, #include, main() function, comments
Tasks: Modify "Hello, World!" with comments, explore line breaks and tabs in cout
Lecture 3: Input/Output using cin and cout
Understanding user interaction with cin and cout
Tasks: Take user inputs, simple calculator for addition, display customized greetings
Lecture 4: Variables and Data Types
int, float, char, bool, variable declaration, initialization
Tasks: Declare variables, calculate area of a rectangle, print ASCII value of a character
Lecture 5: Basic Arithmetic Operators and Expressions
Arithmetic operations, expressions, and modulus operator
Tasks: Create basic calculator, convert Celsius to Fahrenheit, calculate perimeter of a rectangle
Week 2: Control Flow (Conditionals and Loops)
Lecture 1: If-Else Statements
Basic conditionals, if, else if, else
Tasks: Check if a number is positive/negative, age eligibility for voting
Lecture 2: Nested If-Else
Complex conditions with nested if-else
Tasks: Grading system, income tax calculator, triangle formation check
Lecture 3: Switch-Case Statements
Multi-way branching with switch-case
Tasks: Day of the week display, basic calculator with options
Lecture 4: For Loop
Iterative control flow with for loop
Tasks: Multiplication table, calculate factorial, print even numbers
Lecture 5: While and Do-While Loops
Introduction to while and do-while
Tasks: Password checker, prime number checker, calculate sum of digits
Week 3: Arrays and Strings
Lecture 1: Introduction to Arrays
Definition, declaring, and initializing arrays
Tasks: Array of integers, find maximum in an array, sum array elements
Lecture 2: Array Manipulations
Traversing, updating, and using arrays
Tasks: Reverse an array, search for an element, average of array values
Lecture 3: Introduction to Strings
String handling basics
Tasks: Read and display strings, concatenate strings, find string length
Lecture 4: String Operations
Advanced string manipulation (substring, comparison)
Tasks: Count vowels, check palindrome, find substring
Lecture 5: Multidimensional Arrays
2D arrays, usage in matrices
Tasks: Matrix addition, multiplication, transpose
Week 4: Functions and Modular Programming
Lecture 1: Basics of Functions
Function declaration, definition, and calls
Tasks: Add two numbers, check even/odd, display custom messages
Lecture 2: Functions with Parameters and Return Types
Parameter types, returning values
Tasks: Calculate area of a circle, check voting eligibility
Lecture 3: Function Overloading
Concept and implementation of function overloading
Tasks: Overload functions to calculate area of square and rectangle
Lecture 4: Recursion
Recursive functions, examples, and use cases
Tasks: Factorial using recursion, Fibonacci sequence
Lecture 5: Scope and Lifetime of Variables
Local, global, and static variables
Tasks: Use static to retain values, demonstrate local vs global scope
Week 5: Pointers and Dynamic Memory
Lecture 1: Introduction to Pointers
Definition, pointer basics, and pointer operations
Tasks: Create pointers, modify values via pointers
Lecture 2: Pointers and Arrays
Relationship between pointers and arrays
Tasks: Traverse array with pointer, dynamic memory allocation for arrays
Lecture 3: Dynamic Memory Allocation
Use of new and delete, memory management
Tasks: Dynamic array allocation, matrix creation with pointers
Lecture 4: Pointers to Functions
Function pointers, usage, and examples
Tasks: Create function pointers, call functions via pointers
Lecture 5: Pointer and Reference Variables
Difference between pointers and references
Tasks: Pass-by-reference functions, reference-based variable modifications
Week 6: Introduction to Object-Oriented Programming (OOP)
Lecture 1: Basics of OOP and Classes
OOP concepts, classes, and objects
Tasks: Create a Student class, initialize and display student details
Lecture 2: Data Encapsulation and Access Modifiers
public, private, protected access specifiers
Tasks: Add private attributes to Student class, create public methods
Lecture 3: Constructors and Destructors
Role of constructors and destructors
Tasks: Create parameterized constructor, destructor to release resources
Lecture 4: this Pointer and Member Functions
this pointer, role in member functions
Tasks: Use this in methods, demonstrate modifying class members
Lecture 5: Static Members in Classes
Static variables and functions within classes
Tasks: Create static counter in class, demonstrate shared class data
Week 7: Inheritance and Polymorphism
Lecture 1: Basics of Inheritance
Inheritance types, single inheritance
Tasks: Create base and derived class, show inheritance
Lecture 2: Multi-level and Multiple Inheritance
Multi-level and multiple inheritance concepts
Tasks: Build multi-level inheritance structure
Lecture 3: Virtual Functions and Polymorphism
Concept of polymorphism, function overriding
Tasks: Override base class functions, demonstrate polymorphism
Lecture 4: Abstract Classes and Pure Virtual Functions
Abstract classes, pure virtual functions
Tasks: Create an abstract class Shape, implement derived classes
Lecture 5: Constructor and Destructor in Inheritance
Order of constructor/destructor calls in inheritance
Tasks: Trace constructor calls, implement base and derived constructors
Week 8: Operator Overloading
Lecture 1: Basics of Operator Overloading
Operator overloading, syntax, and examples
Tasks: Overload + operator to add objects of a custom class
Lecture 2: Overloading Unary Operators
Unary operator overloading
Tasks: Overload ++ and -- for custom class attributes
Lecture 3: Overloading Binary Operators
Binary operator overloading
Tasks: Overload * for matrix multiplication
Lecture 4: Friend Functions and Classes
Use of friend functions and classes
Tasks: Implement friend functions to access private members
Lecture 5: Practical Examples of Operator Overloading
Real-world examples of overloading
Tasks: Overload comparison operators for complex objects
Week 9: Exception Handling
Lecture 1: Basics of Exception Handling
try, catch, throw concepts
Tasks: Handle division by zero exception, demonstrate basic try-catch
Lecture 2: Custom Exception Classes
Creating custom exception classes
Tasks: Create InvalidInputException, handle invalid inputs
Lecture 3: Nested Try-Catch Blocks
Working with nested exceptions
Tasks: Handle multiple exceptions in nested try-catch
Lecture 4: Exception Handling Best Practices
Guidelines for effective error handling
Tasks: Implement structured error handling for a simple application
Lecture 5: Project: Exception Handling in a Mini Banking System
Build a simple banking application using exception handling
Week 10: File Handling
Lecture 1: Introduction to File Streams
Basic file operations (fstream, ifstream, ofstream)