0% found this document useful (0 votes)
59 views22 pages

Module 00

nptel programming in c++

Uploaded by

rlprabha18
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)
59 views22 pages

Module 00

nptel programming in c++

Uploaded by

rlprabha18
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/ 22

Module M00

L
Partha Pratim
Das
Programming in Modern C++

E
Objectives

Week 00 Module M00: Course Outline

T
Week 01

P
Week 02

Week 03
Partha Pratim Das

N
Week 04

Week 05
Department of Computer Science and Engineering
Week 06
Indian Institute of Technology, Kharagpur
Week 07

Week 08 [email protected]
Week 09

Week 10 All url’s in this module have been accessed in September, 2021 and found to be functional
Week 11

Week 12

Tutorials

Summary Programming in Modern C++ Partha Pratim Das M00.1


Table of Contents

Module M00 1 Objectives

L
Partha Pratim 2 Week 00: Quick Recap of C: Self Study
Das
3 Week 01: Programming in C++ is Fun

E
Objectives
4 Week 02: C++ is Better C
Week 00

T
5 Week 03: OOP in C++/1
Week 01
6 Week 04: OOP in C++/2

P
Week 02

Week 03 7 Week 05: Inheritance

N
Week 04 8 Week 06: Polymorphism
Week 05
9 Week 07: Type Casting
Week 06
10 Week 08: Exceptions and Templates
Week 07
11 Week 09: Streams and STL
Week 08
12 Week 10: Modern C++
Week 09

Week 10 13 Week 11: λ and


Week 11 14 Week 12: STL Containers and Concurrency
Week 12 15 Tutorials
Tutorials 16 Module Summary
Summary Programming in Modern C++ Partha Pratim Das M00.2
Module Objectives

Module M00

• Understanding course outline in terms of modules and tutorials

L
Partha Pratim
Das
• Understanding the Critical Actions needed before the Course starts

E
Objectives

Week 00
◦ Revise C

T
Week 01
◦ Revise basic Data Structures (array, stack, queue, priority queue)
◦ Revise Algorithms (sorting and searching, matrix-vector, graph)

P
Week 02

Week 03 ◦ Install gcc and gdb and try out several C programs with it
◦ Suggest tutorials if you feel the need

N
Week 04

Week 05

Week 06

Week 07

Week 08

Week 09

Week 10

Week 11

Week 12

Tutorials

Summary Programming in Modern C++ Partha Pratim Das M00.3


Course Objectives

Module M00

• Learn to develop software using C++ (C++98/03)

L
Partha Pratim
Das
◦ Features of C++ over and above C

E
Objectives
◦ Object-Oriented Paradigm in C++
Week 00
◦ STL for extensive code reuse

T
Week 01
• Learn to improve software development using modern C++ (C++11)

P
Week 02

Week 03 ◦ Features of C++11 over and above C++98/03

N
Week 04
◦ Concurrent Programming in C++
Week 05
◦ Better quality and efficiency by C++11
Week 06

Week 07
• Cultivate skills to design, code, debug, and test software written in C++
Week 08 • Attain strong employability with hands-on skills of software development
Week 09

Week 10

Week 11

Week 12

Tutorials

Summary Programming in Modern C++ Partha Pratim Das M00.4


Week 00: Quick Recap by Self Study and Tool Setup

Module M00 • This week is for getting ready for the course
• Understanding Course Outline

L
Partha Pratim
Das

◦ Module 00:

E
Objectives

Week 00 . This module with week-wise plan of modules and tutorials

T
Week 01 • Quick Recap of C: C language, Standard Library and Programming:

P
Week 02
◦ Module QR1:
Week 03
. Data Types; Variables; Literals; Operators; Expressions; Statements; and Control

N
Week 04

Week 05
Construct
Week 06 ◦ Module QR2:
Week 07 . Containers and Pointers; Functions; and Input / Output
Week 08
• Recap of Data Structures and Algorithms: NPTEL Course Design and Analysis of
Week 09

Week 10
Algorithms or any standard textbook
Week 11 • Install and try build tool: MinGW - Minimalist GNU for Windows
Week 12 ◦ Use GDB: The GNU Project Debugger for code debugging
Tutorials ◦ Check How to install gdb in windows 10 to install minGW and gdb for Windows together
Summary Programming in Modern C++ Partha Pratim Das M00.5
Course Outline

Module M00
• The course comprises:

L
Partha Pratim
Das ◦ 60 Modules (5 modules / week for 12 weeks). These are numbered serially as Mnn
. These cover the course syllabus

E
Objectives
. These are used in assignments and examinations
Week 00
◦ Supplementary Quick Recap modules to revise C language and related topics in Week 0.

T
Week 01
These are numbered serially as QRn

P
Week 02
. These may be used to recapitulate C programming, as needed
Week 03 . These are not directly part of the syllabus, but cover the prerequisites. So their understanding are critical for
the main modules. Those who know, may skip

N
Week 04

Week 05 ◦ Tutorials to build skills in C / C++ programming. These are numbered serially as Tnn
Week 06 . Some tutorials are of Complementary nature. These talk about various aspects of program development,
Week 07
program building, programming practices, etc. that may help to develop software using C / C++
. Remaining tutorials are of Supplementary nature. These talk about additional information about C / C++
Week 08
like how to mix these language, what is their compatibility etc.
Week 09 . Tutorials are not part of the syllabus. These are included for developing all-round skills for those who desire
Week 10
so

Week 11

Week 12

Tutorials

Summary Programming in Modern C++ Partha Pratim Das M00.6


Course Outline: Modules

Module M00

L
Partha Pratim
Das

E
Objectives

Week 00

T
Week 01

P
Week 02

Week 03

N
Week 04

Week 05

Week 06

Week 07

Week 08

Week 09

Week 10

Week 11

Week 12

Tutorials

Summary Programming in Modern C++ Partha Pratim Das M00.7


Course Outline: Tutorials

Module M00

• Tutorials are complementary or supplementary:

L
Partha Pratim
Das
◦ Complementary Tutorials introduce new ideas and skill areas to complement the

E
Objectives understanding of the C/C++ languages. These include:
Week 00 . How to build a C/C++ program and / or static and dynamic libraries?

T
Week 01 . How to automate build using make utility?
. What tools may be used to design, develop, test, and manage C / C++ software?

P
Week 02
. How to reuse?
Week 03
− binary (static or dynamic library)
− code (template and meta-programming)

N
Week 04

Week 05
− design (desing pattern)
Week 06
. and more

Week 07 ◦ Supplementary Tutorials provide additional information and insight to supplement the
Week 08 understanding of the C/C++ languages. These include:
Week 09
. How to mix C/C++ in a single program?
. What is the compatibility of C/C++?
Week 10 . What are the coding styles to write good C/C++ programs?
Week 11 . and more
Week 12

Tutorials

Summary Programming in Modern C++ Partha Pratim Das M00.8


Week 01: Programming in C++ is Fun

Module M00

[1] Course Overview [4] Sorting and Searching

L
Partha Pratim
Das • Know Your C/C++: Evolution & Comparison; • Sorting in C and C++: Bubble Sort, Using
Why learn C/C++?; C/C++ Standards Standard Library

E
Objectives
• Know Your Course: Objectives; Pre-requisites; • Searching in C and C++: Using Standard Library
Week 00 Outline - Modules, Tutorials; Evaluation; • STL: algorithm - The algorithm Library

T
Text Books & References; Tools
Week 01
[5] Stack and Common Data Structures / Containers
[2] IO and Loops in C and C++ • Stack in C: Common Applications of Stack in C,

P
Week 02

Week 03 • Hello World: Handling IO Reverse a String, Evaluate Postfix Expressions


• Add Two Numbers and Handling IO • Stack in C++: Reverse a String, Evaluate

N
Week 04
• Square Root: math Library Postfix Expressions
Week 05 • C and C++ Standard Library Headers & std: • Data Structures / Containers in C++:
Week 06 Header Conventions Containers in C++
• Sum of n Numbers: Variable Declaration
Week 07
• Using Boolean in C and C++
Week 08
[3] Arrays and Strings
Week 09
• Arrays & vectors: Array Impl. for fixed size /
Week 10 arbitrary sized array, vectors in C++
Week 11 • C-Style Strings & string type in C++:
Concatenation of strings; More string operations;
Week 12
string.h; string class
Tutorials

Summary Programming in Modern C++ Partha Pratim Das M00.9


Week 02: C++ is Better C

Module M00 [6] Constants and Inline Functions [9] Operator Overloading
• cv-qualifier: const & volatile: • Operators and Functions: Difference

L
Partha Pratim
Das Notion & Advantages of const; const & pointer - • Operator Functions in C++
C-String; Notion of volatile • Operator Overloading: Advantages and
• inline functions: Macros with Params in C - Pitfalls

E
Objectives Disadvantages
Week 00
of Macros; Notion of inline - Comparison of Macros • Examples: String: Concatenation; Enum:

T
and inline functions, Limitations of inline functions Changing the meaning of operator+
Week 01
[7] Reference & Pointer
• Operator Overloading Rules
• Operator Overloading Restrictions

P
Week 02
• Reference Variable: Pitfalls in Reference
Week 03
• Call-by-Reference: Simple C Program to swap; [10] Dynamic Memory Management
• Dynamic Memory Management in C:

N
Week 04 Simple C/C++ Program to swap two numbers;
Week 05
const Reference Parameter malloc & free
• Return-by-Reference: Pitfalls of Return-by Reference • Dynamic Memory Management in C++:
Week 06 • I/O Parameters of a Function new & delete operator; Dynamic
Week 07 • Recommended Call and Return Mechanisms Memory Allocation for Array; Placement
Week 08
• Difference between Reference and Pointer new; Restrictions
[8] Default Parameters & Function Overloading • Operator Overloading for Allocation and
Week 09 De-allocation
Week 10
• Default Parameters: Examples; Highlights; Restrictions
on default parameters
Week 11 • Function Overloading: Examples; Restrictions; Rules
Week 12 • Overload Resolution: Exact Match; Promotion &
Conversion; Examples; Ambiguity
Tutorials
• How to overload Default Parameter
Summary Programming in Modern C++ Partha Pratim Das M00.10
Week 03: OOP in C++/1

Module M00 [11] Classes and Objects [14] Copy Constructor and Copy Assignment
• Classes Operator

L
Partha Pratim
Das • Objects • Object Lifetime Examples: String; Date:
• Data Members: Complex; Rectangle; Stack Practice; Rect: Practice; Name & Address:
• Member Functions: Complex; Rectangle; Stack

E
Objectives Practice; CreditCard: Practice
Week 00
• this Pointer • Copy Constructor: Call by Value; Signature;
• State of an Object: Complex; Rectangle; Stack

T
Data Members; Free Copy Constructor and
Week 01 Pitfalls
[12] Access Specifiers • Copy Assignment Operator: Copy Objects;

P
Week 02
• Access Specifiers: Examples Self-Copy; Signature; Free Assignment
Week 03
• Information Hiding Operator
• Stack Example: Stack (public) - Risky; Stack • Comparison of Copy Constructor and Copy

N
Week 04

Week 05 (private) - Safe; Interface and Implementation Assignment Operator


• Get-Set Idiom • Class as a Data-type
Week 06
• Encapsulation
Week 07 • Class as a Data-type [15] const-ness
• Constant Objects: Simple Example
Week 08 [13] Constructors, Destructors & Object Lifetime • Constant Member Functions: Simple
Week 09 • Constructor: Contrasting with Member Functions; Example
Week 10 Parameterized - Default Parameters; Overloaded • Constant Data Members: Simple Example;
• Destructor: Contrasting with Member Functions Credit Card Example: Putting it all together -
Week 11
• Default Constructor String, Date, Name, Address, CreditClass
Week 12 • Object Lifetime: Automatic; Static; Dynamic; • mutable Members: Simple Example; mutable
Tutorials
Storage Class Specifiers Guidelines
Summary Programming in Modern C++ Partha Pratim Das M00.11
Week 04: OOP in C++/2

Module M00
[16] static Members [19] Overloading Operator for User-Defined Types:
• static Data Member: Example; Print Task; Part 2

L
Partha Pratim
Das
Order of Initialization • Issues in Operator Overloading
• static Member Function: Print Task; Count • operator+

E
Objectives
Objects • operator==
Week 00
• Comparison • operator<<, operator>>

T
Week 01 • Singleton Class • Guidelines for Operator Overloading
[17] [20]

P
Week 02 friend Function and friend Class namespace
Week 03 • friend Function: Matrix-Vector Multiplication; • namespace Fundamental
Linked List • namespace Scenarios

N
Week 04
• friend Class: Linked List; Iterator • namespace Features: Nested namespace; using
Week 05
• Properties of friend namespace; Global namespace; std namespace;
Week 06 • Comparison namespace are Open
Week 07 [18] Overloading Operator for User-Defined Types:
• namespace vis-a-vis class
Part 1
• Lexical Scope
Week 08

Week 09 • Operator Function: Non-Member Function;


Member Function; Operator Overloading Rules
Week 10
• Using Global Function: public data members;
Week 11 private data members
Week 12 • Using Member Function: operator+;
operator=; Unary Operators
Tutorials

Summary Programming in Modern C++ Partha Pratim Das M00.12


Week 05: Inheritance

Module M00

[21] Inheritance: Part 1: Inheritance Semantics [24] Inheritance: Part 4: Phone Hierarchy

L
Partha Pratim
Das • ISA Relationship • ISA Hierarchy Design by Inheritance
• Inheritance in C++: Phones; Semantics • Helper Classes

E
Objectives
[22] Inheritance: Part 2: Data Member & Member
• Hierarchy of Phones by Interfaces
Week 00 • Interfaces & State Variables of Phones: Landline

T
Function: Override & Overload
Phone; Mobile Phone; Smart Phone
Week 01
• Inheritance in C++ • Refactoring
• Data Members: Object Layout • Hierarchy Integration: Extended Hierarchy of

P
Week 02

Week 03 • Member Functions: Overrides and Overloads Phones


• Comparison [25]

N
Week 04 Inheritance: Part 5: private & protected
Week 05
[23] Inheritance: Part 3: Constructor & Destructor: Inheritance
Week 06
Object Lifetime • Inheritance in C++
• Inheritance in C++ • private Inheritance: Uncopyable; HAS A
Week 07 • protected Access: Streaming • protected Inheritance
Week 08 • Constructor & Destructor • Visibility
Week 09
• Object Lifetime • Examples
Week 10

Week 11

Week 12

Tutorials

Summary Programming in Modern C++ Partha Pratim Das M00.13


Week 06: Polymorphism

Module M00

[26] Polymorphism: Part 1: Type Casting [29] Polymorphism: Part 4: Staff Salary Processing

L
Partha Pratim
Das • Type Casting: Basic Notions; Comparison of using C
Implicit and Explicit Casting; Built-in Type - • Binding: Exercise: Exercise 1; Exercise 2

E
Objectives
Promotion & Demotion; Unrelated Classes; • Staff Salary Processing: C Solution - Engineer
Week 00 Inheritance Hierarchy - Upcast, Downcast + Manager, Engineer + Manager + Director,

T
Advantages and Disadvantages
Week 01 [27] Polymorphism: Part 2: Static and Dynamic
Binding [30] Polymorphism: Part 5: Staff Salary Processing

P
Week 02

Week 03 • Type Binding: Type of an Object; Static and using C++


Dynamic Binding; Comparison of Static and • Staff Salary Processing: C Solution: Flat C

N
Week 04
Dynamic Binding; Static Binding; Dynamic Solution: Recap - Advantages and
Week 05 Binding Disadvantages
Week 06 • Polymorphic Type • Staff Salary Processing: C++ Solution:
Non-Polymorphic Hierarchy - Advantages and
Week 07 [28] Polymorphism: Part 3: Abstract Base Class Disadvantages; Polymorphic Hierarchy -
Week 08 • Virtual Destructor: Slicing; Advantages and Disadvantages; Polymorphic
Week 09
• Pure Virtual Function Hierarchy (Flexible) - Advantages and
• Abstract Base Class: Shape Hierarchy - Pure Disadvantages
Week 10 Virtual Function with Body
Week 11

Week 12

Tutorials

Summary Programming in Modern C++ Partha Pratim Das M00.14


Week 07: Type Casting

Module M00

[31] Virtual Function Table [34] Type Casting & Cast Operators: Part 3

L
Partha Pratim
Das • Staff Salary Processing: New C Solution • Cast Operators: dynamic cast -
• Staff Salary Processing: C++ Solution Pointers, References

E
Objectives
• C and C++ Solutions: A Comparison • typeid Operator: Polymorphic Hierarchy;
Week 00 • Virtual Function Pointer Table Non-Polymorphic Hierarchy; bad typeid

T
Week 01 [32] Type Casting & Cast Operators: Part 1 • Run-Time Type Information (RTTI)
• Type Casting: Upcast & Downcast [35] Multiple Inheritance

P
Week 02

Week 03
• Cast Operators: const cast • Multiple Inheritance in C++: Semantics; Data
[33] Type Casting & Cast Operators: Part 2 Members and Object Layout; Member Functions

N
Week 04
- Overrides and Overloads; Access Members of
Week 05 • Cast Operators: static cast - Built-in Types, Base: protected Access; Constructor and
Class Hierarchy, Hierarchy Pitfall, Unrelated Destructor; Object Lifetime
Week 06
Classes; reinterpret cast • Diamond Problem: Exercise
Week 07
• Design Choice
Week 08

Week 09

Week 10

Week 11

Week 12

Tutorials

Summary Programming in Modern C++ Partha Pratim Das M00.15


Week 08: Exceptions and Templates

Module M00

[36] Exceptions (Error handling in C): Part 1 [39] Template (Class Template): Part 2

L
Partha Pratim
Das • Exception Fundamentals: Types of Exceptions; • What is a Template?: Recap
Exception Stages • Function Template

E
Objectives
• Error Handling in C: C Language Features - • Class Template: Definition; Instantiation;
Week 00 Return Value and Parameters, Local goto; C Partial Template Instantiation & Default

T
Week 01 Standard Library Support - Global Variables, Template Parameters; Inheritance
Abnormal Termination, Conditional Termination,
[40] Functors: Function Objects

P
Week 02
Non-Local goto, Signals; Shortcomings
Week 03 • Callable Entities
[37] Exceptions (Error handling in C++): Part 2 • Function Pointers: Replace Switch / IF

N
Week 04
• Exceptions in C++: try-throw-catch; Statements; Late Binding; Virtual Function;
Week 05 Exception Scope (try); Exception Arguments Callback - qsort; Issues
Week 06 (catch); Exception Matching; Exception Raise • Functors in C++: Basic Functor; Simple
(throw); Advantages; std::exception Example; Examples from STL - Function Pointer,
Week 07
Functor without state, Functor with state
Week 08 [38] Template (Function Template): Part 1
Week 09
• What is a Template?
• Function Template: Definition; Instantiation;
Week 10 Template Argument Deduction; Example
Week 11 • typename
Week 12

Tutorials

Summary Programming in Modern C++ Partha Pratim Das M00.16


Week 09: Streams and STL

Module M00

[41] Input-Output: File Handling in C [43] C++ Standard Library: Part 1 (Generic

L
Partha Pratim
Das • Standard Library for I/O Programming)
• Files and Streams: File Open / Close • Standard Library: C Standard Library; C++

E
Objectives
• Formatted I/O: Output; Read Standard Library - std, Header Conventions
Week 00 • Unformatted I/O • Generic Programming: Common Tasks;

T
Week 01 • Direct IO Lifting Example; Algorithms-Iterators-Containers
• File Positioning Model; Examples

P
Week 02

Week 03
[42] Input-Output: Streams in C++ [44] C++ Standard Library: Part 2 (STL)
• Features of C++ I/O • The STL: Policy Parameterization

N
Week 04
• Streams • Common Standard Library Components:
Week 05 • Stream Output vector; list; map; set
• Stream Input
Week 06
• File I/O [45] C++ Standard Library: Part 3 (STL)
Week 07
• Type-safe I/O • Data Structures / Containers in C++:
Week 08 • Unformatted I/O Containers in C++
Week 09
• Stream Manipulators • algorithm Component: copy
• Stream States: Format States; Error States • numeric Component: accumulate;
Week 10 • Standard I/O Library inner product
Week 11 • functional Component
Week 12

Tutorials

Summary Programming in Modern C++ Partha Pratim Das M00.17


Week 10: Modern C++

Module M00 [46] C++11 and beyond: General Features: Part 1 [49] C++11 and beyond: General Features: Part 4
• Major C++11 Features • Copying vs. Moving: Return Value; Append Full

L
Partha Pratim
Das • auto & decltype: auto; decltype Vector; Swap; Deep vs. Shallow Copy;
• Suffix Return Type: decltype(auto): C++14 Performance Test
• Rvalue References and Move Semantics: Rvalue

E
Objectives
[47] C++11 and beyond: General Features: Part 2 References; Copy vs. Move - Lvalue vs. Rvalue,
Week 00
• Initializer Lists: initializer list; Overload

T
Vector
Week 01 Resolution; {}-Initializers and auto • Implementing Move Semantics
• Uniform Initialization: Syntax and Semantics:

P
Week 02
Syntax; Semantics [50] C++11 and beyond: General Features: Part 5
Week 03
• Range-for Statement • Recap of Copy vs. Move and related Concepts
• Move Semantics: How to code?: Simple Move

N
Week 04
[48] C++11 and beyond: General Features: Part 3 Constructor and Assignment; Challenges;
Week 05
• constexpr: Evaluate constant expressions at Solution
Week 06 compile-time • std::move: Use; Implementation
Week 07 • noexcept: To prevent Exception Propagation • Move Semantics Project: ResMgr Class;
• nullptr: null Pointer Literal MyResource Class; MyClass Class
Week 08
• inline namespace: Efficient Version Mgmt.
Week 09 • static assert: Compile-time Assertions
Week 10 • User-defined Literals: Closer to Built-in Types
• Digit Separators and Binary Literals
Week 11
• Raw String Literals
Week 12 • Unicode Support
Tutorials
• Memory Alignment
• Attributes
Programming in Modern C++ Partha Pratim Das M00.18
Summary
Week 11: λ, Classes, and Templates

Module M00 [51] C++11 and beyond: General Features: Part 6 [54] C++11 and beyond: Class Features
• Universal References: Recap; T&& is Universal • =default / =delete Functions

L
Partha Pratim
Das Reference; auto is Universal Reference; Rvalue • Control of default move and copy: Compiler
vs. Universal References Rules; User Guidelines
• Perfect Forwarding: Type Safety; Practice • Delegating Constructors

E
Objectives

Week 00
Examples • In-class Member Initializers
• std::forward • Inheriting Constructors

T
Week 01 • Move is an Optimization of Copy: Compiler • Override Controls: override; final
Generated Move • explicit Conversion Operators: bool

P
Week 02

Week 03 [52] C++11 and beyond: General Features: Part 7 [55] C++11 and beyond: Non-class Type & Template
• λ in C++11, C++14, C++17, C++20: Features

N
Week 04

Week 05
Syntax and Semantics; Closure Object - λs vs. • Other (non-class) Types: enum class - Scope,
Closures, First Class Object, Anatomy; Underlying Type, Forward-Declaration; Integer
Week 06 Parameters; Capture - By Reference [&], By Types; Generalized unions; Generalized PODs
Week 07 Value [=], Mutable, Restrictions, Practice • Templates: Extern Templates; Template aliases;
Examples Variadic templates - Practice Examples; Local
Week 08
[53] C++11 and beyond: General Features: Part 8 types as template arguments; Right-angle
Week 09 brackets (Nested Template Closer); Variable
Week 10
• λ in C++: Recap templates
• std::function: Examples
Week 11 • Generic λ in C++14
Week 12 • Recursive λ in C++: Practice Examples; Generic
Recursive λ - Practice Examples
Tutorials
• Generalized λ Captures
Summary Programming in Modern C++ Partha Pratim Das M00.19
Week 12: Move, Rvalue and STL Containers

Module M00

[56] C++11 and beyond: Resource Management by [59] C++11 and beyond: Concurrency: Part 2

L
Partha Pratim
Das Smart Pointers: Part 1 • Threads
• Raw Pointers: Operations; Ownership Issue; • Race Condition and Data Race: Solution by

E
Objectives
Pointers vs. Reference Mutex; Solution by Lock; Solution by Atomic;
Week 00 • Smart Pointers: Policies - Storage Policy, Solution by Future; Solution by Async

T
Week 01 Ownership Policy • Synchronization: Thread Local
[57] C++11 and beyond: Resource Management by
• Self-Study: Mutual Exclusion; Locks - Deadlock;

P
Week 02
Atomics; Sync: Condition Variables; Sync:
Week 03
Smart Pointers: Part 2 Futures and Promises; Async; Practice Examples
• Smart Pointers: Recap; Ownership Policy;
[60]

N
Week 04 Closing Comments
Conversion Policy; Null-test Policy
Week 05 • Resource Management: std::unique ptr; • Course Summary
Week 06 std::shared ptr; std::weak ptr; • Modern C++ Features: C++11 Features;
std::auto ptr; Summary of Smart Pointer C++14 Features; Deprecated Features
Week 07
Operations; Binary Tree • Key Take-back: Prepare for Examination
Week 08 • Recommendations for Smart Pointers • Road Forward
Week 09 [58] C++11 and beyond: Concurrency: Part 1
Week 10 • thread Programming in C++: std::thread;
Week 11
std::bind
• Race Condition & Data Race: Race Condition
Week 12 Example - Solution by Mutex, Solution by
Tutorials Atomic
Summary Programming in Modern C++ Partha Pratim Das M00.20
Tutorials

Module M00
• Tutorial 01: How to build a C/C++ program?: Part 1: C Preprocessor (CPP)

L
Partha Pratim
Das
• Tutorial 02: How to build a C/C++ program?: Part 2: Build Pipeline

E
Objectives
• Tutorial 03: How to build a C/C++ program?: Part 3: make Utility
Week 00

T
Tutorial 04: How to build a C/C++ program?: Part 4: Static and Dynamic Library
Week 01
• Tutorial 05: Mixing C and C++ Code: Part 1: Issues and Resolutions

P
Week 02

Week 03 • Tutorial 06: Mixing C and C++ Code: Part 2: Project Example

N
Week 04 Tutorial 07: How to design a UDT like built-in types?: Part 1: Fraction UDT
Week 05
• Tutorial 08: How to design a UDT like built-in types?: Part 2: Int & Poly UDT
Week 06

Week 07
• Tutorial 09: How to design a UDT like built-in types?: Part 3: Updates and Mixes of UDTs
Week 08 • Tutorial 10: How to optimize C++11 programs using Rvalue and Move Semantics?
Week 09 • Tutorial 11: Compatibility of C and C++: Part 1: Significant Features
Week 10
• Tutorial 12: Compatibility of C and C++: Part 2: Summary
Week 11

Week 12

Tutorials

Summary Programming in Modern C++ Partha Pratim Das M00.21


Module Summary

Module M00

• We have discussed the course outline in terms of modules and tutorials

L
Partha Pratim
Das
• Critical Actions before the Course starts

E
Objectives

Week 00
◦ Revise C

T
Week 01
◦ Revise basic Data Structures (array, stack, queue, priority queue)
◦ Revise Algorithms (sorting and searching, matrix-vector, graph)

P
Week 02

Week 03 ◦ Install gcc and gdb and try out several C programs with it
◦ Suggest tutorials if you feel the need

N
Week 04

Week 05

Week 06

Week 07

Week 08

Week 09

Week 10

Week 11

Week 12

Tutorials

Summary Programming in Modern C++ Partha Pratim Das M00.22

You might also like