Tags
Language
Tags
April 2024
Su Mo Tu We Th Fr Sa
31 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 1 2 3 4

Modern C++: Beginner To Practitioner (Includes C++ 20)

Posted By: ELK1nG
Modern C++: Beginner To Practitioner (Includes C++ 20)

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

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.