NPTEL : NOC:Programming in Modern C++ (Computer Science and Engineering)

Co-ordinators : Prof. Partha Pratim Das


Lecture 1 - Course Outline

Lecture 2 - Quick Recap 01: Recap of C/1

Lecture 3 - Quick Recap 02: Recap of C/2

Lecture 4 - Course Overview

Lecture 5 - IO and Loop

Lecture 6 - Arrays and Strings

Lecture 7 - Sorting and Searching

Lecture 8 - Stack and Common Data Structures/Containers

Lecture 9 - Tutorial 1: How to build a C/C++ program?: Part 1: C Preprocessor (CPP)

Lecture 10 - Constants and Inline Functions

Lecture 11 - Reference and Pointer

Lecture 12 - Default Parameters and Function Overloading

Lecture 13 - Operator Overloading

Lecture 14 - Dynamic Memory Management

Lecture 15 - Tutorial 2: How to build a C/C++ program?: Part 2: Build Pipeline

Lecture 16 - Static Members

Lecture 17 - Classes and Objects

Lecture 18 - Access Specifiers

Lecture 19 - Constructors, Destructors and Object Lifetime

Lecture 20 - Copy Constructor and Copy Assignment Operator

Lecture 21 - Const-ness

Lecture 22 - Tutorial 3: How to build a C/C++ program?: Part 3: make Utility

Lecture 23 - Inheritance: Part 3 (Constructor and Destructor - Object Lifetime)

Lecture 24 - Friend Function and Friend Class

Lecture 25 - Overloading Operator for User-Defined Types: Part 1

Lecture 26 - Overloading Operator for User-Defined Types: Part 2

Lecture 27 - Namespace

Lecture 28 - Tutorial 4: How to build a C/C++ program?: Part 4: Static and Dynamic Library

Lecture 29 - Inheritance: Part 2 (Data Member and Member Function - Override and Overload)

Lecture 30 - Inheritance: Part 3 (Constructor and Destructor - Object Lifetime)

Lecture 31 - Inheritance: Part 4: Phone Hierarchy

Lecture 32 - Inheritance: Part 5: private and protected Inheritance

Lecture 33 - Tutorial 5: Mixing C and C++ Code: Part 1: Issues and Resolutions

Lecture 34 - Polymorphism: Part 1: Type Casting

Lecture 35 - Polymorphism: Part 2: Static and Dynamic Binding

Lecture 36 - Polymorphism: Part 3: Abstract Base Class

Lecture 37 - Polymorphism: Part 4: Staff Salary Processing using C

Lecture 38 - Polymorphism: Part 5: Staff Salary Processing using C++

Lecture 39 - Tutorial 6: Mixing C and C++ Code: Part 2: Project Example

Lecture 40 - Virtual Function Table

Lecture 41 - Type Casting and Cast Operators: Part 1

Lecture 42 - Type Casting and Cast Operators: Part 2

Lecture 43 - Type Casting and Cast Operators: Part 3

Lecture 44 - Multiple Inheritance

Lecture 45 - Tutorial 7: How to design a UDT like built-in types?: Part 1: Fraction UDT

Lecture 46 - Exceptions (Error handling in C): Part 1

Lecture 47 - Exceptions (Error handling in C++): Part 2

Lecture 48 - Template (Function Template): Part 1

Lecture 49 - Template (Class Template): Part 2

Lecture 50 - Functors: Function Objects

Lecture 51 - Tutorial 8: How to design a UDT like built-in types?: Part 2: Int and Poly UDT

Lecture 52 - Input-Output: File Handling in C

Lecture 53 - Input-Output: Streams in C++

Lecture 54 - C++ Standard Library: Part 1 (Generic Programming)

Lecture 55 - C++ Standard Library: Part 2 (STL)

Lecture 56 - C++ Standard Library: Part 3 (STL)

Lecture 57 - Tutorial 9: How to design a UDT like built-in types?: Part 3: Updates and Mixes of UDTs

Lecture 58 - C++11 and beyond: General Features: Part 1

Lecture 59 - C++11 and beyond: General Features: Part 2

Lecture 60 - C++11 and beyond: General Features: Part 3

Lecture 61 - C++11 and beyond: General Features: Part 4: Rvalue and Move/1

Lecture 62 - C++11 and beyond: General Features: Part 5: Rvalue and Move/2

Lecture 63 - Tutorial 10: How to optimize C++11 programs using Rvalue and Move Semantics?

Lecture 64 - C++11 and beyond: General Features: Part 6: Rvalue and Perfect Forwarding

Lecture 65 - C++11 and beyond: General Features: Part 7: Lambda in C++/1

Lecture 66 - C++11 and beyond: General Features: Part 8: Lambda in C++/2

Lecture 67 - C++11 and beyond: Class Features

Lecture 68 - C++11 and beyond: Non-class Types and Template Features

Lecture 69 - Tutorial 11: Compatibility of C and C++: Part 1: Significant Features

Lecture 70 - C++11 and beyond: Resource Management by Smart Pointers: Part 1

Lecture 71 - C++11 and beyond: Resource Management by Smart Pointers: Part 2

Lecture 72 - C++11 and beyond: Concurrency: Part 1

Lecture 73 - C++11 and beyond: Concurrency: Part 2

Lecture 74 - Closing Comments

Lecture 75 - Tutorial 12: Compatibility of C and C++: Part 2: Summary