Modern C++: Beginner To Practitioner (Includes C++ 20)
Published 8/2023
MP4 | Video: h264, 1280x720 | Audio: AAC, 44.1 KHz
Language: English | Size: 4.74 GB | Duration: 13h 33m
Published 8/2023
MP4 | Video: h264, 1280x720 | Audio: AAC, 44.1 KHz
Language: English | Size: 4.74 GB | Duration: 13h 33m
C++11 to C++20, Fundamentals, Classes, Pointers, STL, Templates, Concepts, Ranges, Containers, Iterators, Concurrency
What you'll learn
C++ Fundamentals: Grasp the core concepts including variables, data types, arithmetic operations, and basic I/O.
Design Your Own Types: Learn the art of defining custom types using classes, structures, unions, and enumerations.
Understanding Modularity: Organize and structure your code effectively using namespaces, source files, and headers. Introduction to C++20 Modules feature.
Dive into OOP: Get introduced to the world of Object-Oriented Programming in C++ and understand classes, constructors, member functions, and overloading.
Understand Essential Operations: Demystify copy and move semantics and lay the foundation for the Rule of Three/Five.
Harness the Power of Templates: Delve into generic programming with C++ templates, ensuring type safety without limitations.
Concepts (C++20) and Generic Programming: Dive deeper into ensuring type-safety at compile-time through concepts.
Explore the C++ Library: Get familiarized with the C++ Standard Library, from containers and algorithms to a multitude of utilities.
Strings and Beyond: Master string operations, string_view(C++17) and harness the power of regular expressions.
Familiarize with I/O Streams: Navigate the world of I/O streams for efficient and formatted input-output operations.
Container Proficiency: Explore powerful container classes such as vector, list, and map.
Algorithmic Prowess: Understand the nuances of how algorithms work with containers and iterators.
C++ Utilities: Equip yourself with knowledge on smart pointers, time/date utilities, and more.
Concurrency & Parallelism: Get started with the concurrent world of C++, learning about threads, tasks, and synchronization mechanisms.
Requirements
Basic programming awareness is expected. Examples: Questions like "What is a variable?", "What is a processor?" etc. will NOT be answered in the course.
Access to desktop based browser is mandatory to complete the coding exercises and the online compiler too access.
Course guides about using online compiler enviroment and hence DOES NOT explain or expect usage of any IDE application.
Description
Unlock the power of C++ with this comprehensive course, curated for beginners and those seeking a refresher. By the end of this journey, you'll be armed with the knowledge to write meaningful C++ programs and a passion for further exploration.This course is designed to be a concise yet comprehensive tour. While it's not exhaustive, it's an ideal starting point for anyone interested in C++ programming. You'll have the tools and confidence to embark on more advanced topics and projects by the end. Join us, and let's begin this exciting journey together!Why learn C++ or CPP?CPP holds a distinct position in programming languages due to its unparalleled blend of performance, versatility, and object-oriented capabilities. Learning CPP equips developers with a deep understanding of computer architecture, memory management, and advanced software design patterns. Furthermore, its foundational role in developing many modern languages and systems means that CPP knowledge often translates to a more intuitive grasp of other technologies. Whether for high-performance applications, game development, embedded systems, or system software, CPP expertise can significantly broaden a developer's horizons, enhance problem-solving skills, and open doors to various career opportunities in the tech industry.The Renaissance of Modern C++: Quality, Safety, and Cost-Efficiency (C++11 to C++20) Modern C++ has evolved beyond mere language extensions, emerging as a transformative force emphasizing safety, expressiveness, and versatility. Offering features like smart pointers, range-based loops, and type inference encourages developers to transition from traditional C-style hacks—often riddled with errors leading to runtime crashes and vulnerabilities—to contemporary, more predictable coding practices. This shift is not merely aesthetic; it's an economic imperative. Inferior software can incur hefty remediation costs, jeopardize user trust, and even lead to revenue losses. Adopting modern C++ is not just about staying updated; it's a strategic move towards producing resilient software that protects brand reputation and the bottom line.Why doesn't the course target interview-style learning with quick hacks and deprecated C-Style features that still work?Adopting a mindset centered on long-term career growth is essential in today's unpredictable job market, marked by unexpected layoffs and rapid shifts. Learners who approach their studies with genuine curiosity and commitment are equipping themselves with knowledge and deeply understanding of the underlying principles and concepts. They aim to fathom the "what," "why," and "how" of their subject, ensuring that their expertise remains relevant and adaptable across diverse real-world challenges. For instance, in the aftermath of a significant economic downturn, professionals with a deep-rooted understanding are more likely to navigate job transitions seamlessly. At the same time, those who've solely relied on memorization for short-term objectives, like clearing an interview, may find themselves ill-equipped to adapt. Such surface-level preparation might help achieve immediate goals but can compromise long-term career prospects and performance in dynamic work environments. This course encourages learners to embrace the former, holistic approach, preparing them for sustained success.
Overview
Section 1: Introduction
Lecture 1 Getting to know the instructor's perspective before diving into the course
Lecture 2 What is a C++ program?
Lecture 3 Hello World: The simplest C++ program
Lecture 4 Quick overview of the online development tool Compiler Explorer
Lecture 5 Getting started with Udemy Coding exercises
Section 2: Basic Features of C++ present in all C++ programs
Lecture 6 Functions : Declaration and basic syntax
Lecture 7 Functions: Possible variations in syntax to support more features
Lecture 8 Types and variables in C++
Lecture 9 Arithmetic operations with Fundamental types in C++
Lecture 10 Initializations and auto keyword in C++
Lecture 11 Scope and lifetime of entities in C++ programs
Lecture 12 Constants in C++ programs : const, constexpr, consteval
Lecture 13 Arrays, Pointers and References in C++
Lecture 14 Null pointers in Modern C++
Lecture 15 Understanding pointers and references from a hardware perspective
Lecture 16 Testing and selection based workflows with conditional statements and looping
Section 3: User Defined Types in Modern C++
Lecture 17 Introduction to User Defined Types
Lecture 18 Structures in C++
Lecture 19 Introduction to Classes in Modern C++
Lecture 20 Understanding the Enumerations in C++
Lecture 21 Concept of Union and Variants in C++
Section 4: Modularity
Lecture 22 Introduction and One Definition Rule
Lecture 23 Separate Compilation - Header Files Mechanism
Lecture 24 Modules ( introduced since C++20)
Lecture 25 Namespaces
Lecture 26 Function Arguments
Lecture 27 Return Values from functions
Section 5: Error Handling in C++
Lecture 28 Introduction to error handling
Lecture 29 Exceptions in C++
Lecture 30 Invariants
Lecture 31 Alternatives to Error handling in C++
Lecture 32 Assertions in C++
Section 6: Classes
Lecture 33 Introduction to Classes in C++
Lecture 34 Concrete Types in C++
Lecture 35 Concrete Type Example : Complex Number class
Lecture 36 Concrete Type Example: Container class
Lecture 37 Abstract Types in C++
Lecture 38 Virtual Functions in C++
Lecture 39 Class Hierarchies in C++
Lecture 40 Class Hierarchies in Practice
Section 7: Essential operations with classes necessary to build programs
Lecture 41 Introduction to essential opearations and Member initialization
Lecture 42 Copy and move operation semantics
Lecture 43 Resource Management in C++
Lecture 44 Operator overloading
Lecture 45 Conventional Operations - 1
Lecture 46 Conventional Operations - 2
Lecture 47 User Defined Literals
Section 8: Templates
Lecture 48 Introduction to templates and parameterized types.
Lecture 49 Concepts in C++
Lecture 50 Template argument deduction and special cases where compiler needs your help!
Lecture 51 Function Templates and Functors
Lecture 52 Lambda Expressions
Lecture 53 Template mechanisms
Section 9: Concepts ( C++20) and Generic Programming
Lecture 54 Introduction to Concepts as extension to use cases of templates.
Lecture 55 Need for concepts in the C++ type system
Lecture 56 Using concepts in programs
Lecture 57 Concepts based overloading
Lecture 58 Checking Valid code using concepts in programs
Lecture 59 Defining a concept
Lecture 60 Concepts and auto keyword
Lecture 61 Generic programming as a use case of concepts and templates
Lecture 62 Variadic templates
Lecture 63 Fold Expressions ( C++17) , Argument forwarding, Template compilation model
Section 10: C++ Standard Library Overview
Lecture 64 Introduction to C++ standard library
Lecture 65 Standard library components overview
Lecture 66 Standard Library Organization
Section 11: Strings and Regular Expressions
Lecture 67 Introduction
Lecture 68 C++ String class interface and operations
Lecture 69 String implementation overiew
Lecture 70 string_view feature of C++
Lecture 71 Regex classes in C++
Lecture 72 Regex notation and usage overview
Section 12: Input and Output
Lecture 73 Introduction to IO facilities in C++
Lecture 74 Ostream: Output streams
Lecture 75 Istream: Input Stream
Lecture 76 IO state : Handling the various states of streams like production code.
Lecture 77 IO with User Defined Types
Lecture 78 Stream formatting for presenting data with appropriate format
Lecture 79 Format functions to present data in the printf style formatting
Lecture 80 Streams in C++
Lecture 81 Filesystem facilites in the standard library of C++
Section 13: Container (STL)
Lecture 82 Introduction to STL containers
Lecture 83 Vector
Lecture 84 List and forward list
Lecture 85 Map
Lecture 86 Unordered Map (Hash map )
Lecture 87 Allocators in C++
Lecture 88 Container overview from production perspective.
Section 14: Algorithms (STL)
Lecture 89 Introduction to STL algorithms in C++
Lecture 90 Use of iterators by STL algorithms to achieve generic functionalities
Lecture 91 Types of iterators
Lecture 92 Predicates
Lecture 93 Overview of commonly use STL algorithms in production code.
Lecture 94 Parallel Algorithms introduced in standard library
Section 15: Ranges
Lecture 95 Introduction to ranges in C++
Lecture 96 Views
Lecture 97 Generators as supporting tools for ranges
Lecture 98 Pipelines
Lecture 99 Concepts overview
Section 16: Pointers and Container (non STL)
Lecture 100 Introduction to Pointers and containers
Lecture 101 Pointers
Lecture 102 Unique Pointer and shared Pointer (unique_ptr and shared_ptr )
Lecture 103 Span
Lecture 104 Containers (Non STL)
Lecture 105 Alternatives (variant, optional , any)
Section 17: Utilities provided by C++ standard library
Lecture 106 Introduction
Lecture 107 Time , Chrono utilities
Lecture 108 Function adaption
Lecture 109 Type functions
Lecture 110 Source location feature
Lecture 111 move and forward semantics
Lecture 112 Bit manipulation utilities overview
Lecture 113 Ways of exiting programs predictably
Section 18: Numerics in C++ standard library
Lecture 114 Introduction
Lecture 115 Quick overview of numerical algorithms and mathematical functions in C++ library
Lecture 116 Random number facilities provided by standard library
Lecture 117 Vector Arithmetic and other facilities provided by standard library
Section 19: Introduction to Concurrency using Modern C++ ( upto C++20)
Lecture 118 Introduction
Lecture 119 The notion of task and threads
Lecture 120 Passing arguments and returning values from threads
Lecture 121 Sharing data between threads
Lecture 122 Waiting for events using condition variable
Lecture 123 Alternatives to sharing data and low level semantics using Futures.
Lecture 124 A brief introduction to Coroutines
Section 20: Resources
Lecture 125 [Bonus Lecture]
Beginner programmers and students seeking starting point for learning modern C++ from software development perspective.,Experienced programmers seeking a quick refresher to catch up with Moder C++ upto C++20,NOT meant for interview preparation in coming weeks!,Programmers from other languages like Java, Python willing to learn C++ to diversify their skill set.