We may earn an affiliate commission when you visit our partners.
Jan Schaffranek

Course Description:

Are you already proficient in another programming language and ready to conquer C++? This course is specifically designed for you.

Skip the very basics, like how to use an if-statement, and dive straight into the powerful, unique features of C++. Tailored for experienced programmers, this course eliminates basic content and focuses on advanced techniques and modern practices.

I will show you in a quick and precise way what the difference of the C++ programming language compared to others.

What You’ll Learn:

Read more

Course Description:

Are you already proficient in another programming language and ready to conquer C++? This course is specifically designed for you.

Skip the very basics, like how to use an if-statement, and dive straight into the powerful, unique features of C++. Tailored for experienced programmers, this course eliminates basic content and focuses on advanced techniques and modern practices.

I will show you in a quick and precise way what the difference of the C++ programming language compared to others.

What You’ll Learn:

  • C/C++ Fundamentals: Quickly cover core principles to set the stage.

  • Modern C++ Features: Deep dive into C++11, C++14, C++17, C++20, and the latest C++23 updates.

  • Pointers, References, and Arrays: Master advanced usage and best practices.

  • Standard Template Library (STL): Utilize all essential STL features and functions.

  • Advanced Object Orientation: Implement cutting-edge OOP techniques in C++.

  • Lambda Expressions and Templates: Write cleaner, more efficient code.

  • Smart Pointers & Constructors: Expertly use smart pointers, copy, and move constructors.

  • Multithreading: Leverage threads and async for high-performance concurrent programming.

Why This Course?

  • No Basic Chit Chat: Jump straight into advanced topics, skipping basic programming concepts.

  • Quick Setup: Start coding fast with simple software installation instructions.

  • Code Access: All video code provided for hands-on learning and practice.

  • Continuously Updated: Always stay ahead with the latest C++ advancements.

Unlock the full potential of C++ and elevate your programming skills. Enroll now to advance your career with expert C++ knowledge. See you in class.

Enroll now

What's inside

Learning objectives

  • Modern c++ features from c++11 to c++23
  • No outdated c++ coding style
  • The right way to code in c++
  • Everything from variables to threads

Syllabus

Namespaces
Introduction
Windows: Compiler Installation (1)
Windows: Compiler Installation (2)
Read more
Linux: Compiler Installation (1)
Linux: Compiler Installation (2)
Mac: Compiler Installation
Course Manual
Course Materials
Visual Studio Code Setup
C/C++ Runner
Basics
Integers, Floats and Chars
Bool, If, Ternary
For, While Loop and Increment
Functions
Headers and Include Guards
Debugging, Debug vs. Release
Enum, Enum Class and Switch
Structs, Designated Init and Casting
Auto and Uniform Initilization
Const and Constexpr
Local Static Variables
Global Static and Anonymous Namespaces
Coding Exercises How-To
Coding Exercise 2
Memory
C Arrays and std::array
Characters, C-Strings and std::string
Call by Value vs. Call by Reference
Pointer
New/Delete and Nullptr
RValue and LValue
Coding Exercise 3
STL Container
Template Functions
std::vector and ranged for
std::span
std::pair, std::tuple and Structured Binding
std::map
Typedef and Using
Iterator
Inserter
Coding Exercise 4
Strings and Files
std::string
std::string_view and Small String Optimization
Input and Output Files
std::filesystem
Coding Exercise 5
Lambdas and more STD Features
std::random
std::chrono
std::chrono::Date
std::numeric_limits
Lambda Function
std::generate and Local Static Variables
std::transform, std::accumulate
std::remove, std::sort, std::replace
std::min, std::max, std::equal, std::any, std::all, std::none
std::function
Coding Exercise 6
Classes and Inheritance
Classes
Inheritance and Abstract Class
Polymorphism
Class Templates
Operator Overload
Copy and Move
Templates, Traits and Concepts
Template Specalization
Type Traits
Concepts
Variadics and Fold Expressions
Coding Exercise 8
Modern STD Features
std::optional
std::variant
std::any
Attributes
std::ranges
std::format
std::unique_ptr
std::shared_ptr
std::weak_ptr
std::exception
Threads and Async
std::thread
std::mutex
std::async
More to C++20, C++23 and C++26
Compiler Support
Conclusion
Bonus Lecture

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Covers modern C++ features from C++11 to C++23, which allows programmers to leverage the latest advancements in the language
Skips basic programming concepts and dives straight into advanced topics, which saves experienced programmers time and allows them to focus on new skills
Includes hands-on coding exercises, which reinforces learning and allows programmers to apply their knowledge in a practical setting
Teaches the Standard Template Library (STL), which is essential for efficient and effective C++ programming
Requires compiler installation and setup, which may require some initial configuration for programmers unfamiliar with C++ development environments
Explores multithreading with threads and async, which enables programmers to develop high-performance concurrent applications

Save this course

Save Quick Start to Modern C++ for Programmers [2024 Edition] to your list so you can find it easily later:
Save

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Quick Start to Modern C++ for Programmers [2024 Edition] with these activities:
Review C++ Fundamentals
Solidify your understanding of fundamental C++ concepts like variables, loops, and functions before diving into modern features.
Show steps
  • Review basic syntax and data types.
  • Practice writing simple C++ programs.
  • Complete online quizzes on C++ fundamentals.
Review "Effective Modern C++"
Deepen your understanding of modern C++ idioms and best practices by studying Scott Meyers' classic.
Show steps
  • Read selected chapters relevant to the course syllabus.
  • Implement examples from the book.
  • Discuss key concepts with peers.
Implement STL Containers and Algorithms
Sharpen your skills with the Standard Template Library (STL) by implementing various containers and algorithms.
Show steps
  • Implement std::vector, std::list, and std::map.
  • Use algorithms like std::sort, std::transform, and std::find.
  • Solve coding challenges using STL features.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Write a Blog Post on Smart Pointers
Solidify your understanding of smart pointers by explaining their usage and benefits in a blog post.
Show steps
  • Research different types of smart pointers.
  • Write clear and concise explanations with code examples.
  • Publish the blog post on a platform like Medium or Dev.to.
Build a Multithreaded Application
Apply your knowledge of multithreading to build a practical application that leverages concurrency.
Show steps
  • Design the architecture of a multithreaded application.
  • Implement thread synchronization using mutexes and locks.
  • Test and debug the application for race conditions.
Review "C++ Concurrency in Action"
Enhance your understanding of C++ concurrency by studying this comprehensive guide.
Show steps
  • Read chapters on threads, mutexes, and condition variables.
  • Implement examples demonstrating concurrent programming techniques.
  • Analyze the performance of concurrent code.
Contribute to a C++ Open Source Project
Gain practical experience by contributing to a C++ open-source project, applying your knowledge of modern C++ features.
Show steps
  • Find a C++ project on GitHub that interests you.
  • Identify a bug or feature to work on.
  • Submit a pull request with your changes.

Career center

Learners who complete Quick Start to Modern C++ for Programmers [2024 Edition] will develop knowledge and skills that may be useful to these careers:
Software Engineer
A software engineer designs, develops, and maintains software systems. This course helps a software engineer by providing proficiency in modern C++, a language frequently used in performance-critical applications and systems programming. The course's deep dive into advanced C++ features such as the Standard Template Library, lambda expressions, and multithreading, directly translates to writing more efficient and robust code. Learning about memory management, including pointers and smart pointers, along with object oriented programing concepts, is also vital for a software engineer. Those wanting to refine their understanding of modern C++ should consider this course.
Game Developer
A game developer uses programming skills to create video games. Game development often involves using C++ for its performance and control over hardware, making this course highly relevant. The advanced techniques taught, such as memory management, multithreading for concurrent programming, and efficient coding practices using the Standard Template Library are all extremely useful in game development. In addition, learning C++'s standard library and latest features may allow a game developer to produce higher quality software faster. A student interested in creating high performance games should consider this course.
Systems Programmer
A systems programmer is responsible for creating and maintaining the core components of operating systems and hardware interfaces. The skills taught in this course are directly applicable to systems programming, as C++ is a common language for developing such low-level systems software. A systems programmer would benefit from the course's coverage of C++ fundamentals, advanced memory management using pointers and smart pointers, multithreading, and performance considerations. Anyone who aspires to work on the fundamental building blocks of computer systems may find this course uniquely suited to their needs.
Robotics Engineer
A robotics engineer designs, develops, and tests robots and robotic systems. The course equips a robotics engineer with expertise in modern C++, a language frequently used in robotics due to its performance and low-level control. The course's focus on advanced techniques, including memory management, multithreading, and the standard template library, is extremely useful for a robotics engineer working with real-time systems. This course, with its focus on modern C++ practices, is beneficial for someone interested in programming robots.
Embedded Systems Engineer
An embedded systems engineer designs and develops software for embedded systems. These are computer systems with a dedicated function within a larger device or system. C++ is frequently used in this field for its performance and control over hardware. The course's curriculum, from core C++ principles to advanced object oriented programming, multithreading, and memory management, is essential for anyone pursuing a career in embedded systems. This course can be critical for those writing code for embedded systems, as it stresses modern C++ practices.
High Frequency Trading Programmer
A high frequency trading programmer creates systems that execute trades at very high speeds. A programmer in this field will find this course extremely useful. High frequency trading systems demand high performance and low latency, characteristics that modern C++ is well suited for. The course's emphasis on advanced C++ features such as multithreading, memory management, and the Standard Template Library helps a high frequency trading programmer to optimize their software. Anyone wanting to write low latency, performance critical code should consider this course.
Quantitative Analyst
A quantitative analyst develops and implements mathematical and statistical models for financial markets. Proficiency in a high performance language like C++ is often required. This course will help the quantitative analyst by developing programming abilities in modern C++. The course's focus on advanced techniques such as multithreading and the Standard Template Library, especially its performance aspects, and its coverage of the latest C++ standards will be beneficial to anyone writing high performance financial applications. A strong understanding of advanced C++ is a necessity for the quantitative analyst.
Database Developer
A database developer designs and implements databases. C++, due to its performance characteristics, is often used in the development of databases and database management systems. The course's emphasis on core principles, advanced object oriented programming, memory management, multithreading, and the Standard Template Library, are all beneficial for a database developer. A working understanding of C++, including its latest features and standards, are helpful for those working with databases. This course may be helpful for those on this career path.
Operating Systems Developer
An operating systems developer creates and maintains operating systems. The course will help an operating systems developer by providing a deep understanding of modern C++, which is often used in operating system kernels and drivers. The course provides a solid foundation in memory management, multithreading, and low level programming concepts. An understanding of modern C++ is beneficial for an operating systems developer. This course may be useful for those on this path.
Compiler Engineer
A compiler engineer develops the systems that translate source code into machine code. C++ is frequently used in the creation of compilers. The course can help the compiler engineer by providing a solid foundation in C++ fundamentals, memory management, and advanced object oriented concepts. A high degree of skill in modern C++ is needed for those writing compilers. Taking this course may prove helpful for one who wishes to enter this field.
Scientific Programmer
A scientific programmer develops software tools for scientific research and simulations. This course may be useful for a scientific programmer by providing a foundation in C++, which is often used in high performance computing. The course's emphasis on advanced modern C++ concepts can provide skills useful for efficient code. Those doing computational work in science may benefit from taking this course. Note that many scientific programming roles may require an advanced degree.
Financial Software Developer
A financial software developer designs and implements software for financial institutions. This course may be useful to a financial software developer by providing them with a strong understanding of modern C++, a language frequently used in financial systems due to its performance. The course will teach multithreading, the standard template library, and modern C++ features, skills which are essential developing efficient and reliable financial software. This course may be suitable for those wanting to get a stronger grounding in modern C++.
Graphics Programmer
A graphics programmer develops software for rendering visual content, often in video games or simulations. This field may be a good match for this course. Graphics programming often utilizes C++ due to its performance and ability to work directly with hardware. This course helps a graphics programmer by providing a strong understanding of modern C++, which is used to build graphics engines and tools. The Standard Template Library, multithreading, memory management, and object oriented techniques taught by the course may be especially useful. This course may be helpful for a graphics programmer.
Data Engineer
A data engineer designs and builds systems to collect, store, and process large datasets. Certain data engineering roles do use C++ for performance considerations, as this course teaches. The course's focus on modern C++, the Standard Template Library, memory management, and multithreading skills may be valuable for a data engineer working with large data sets or building high performance data pipelines. A data engineer may find this course to be beneficial. Note that many roles in data engineering require a master's degree.
Machine Learning Engineer
A machine learning engineer develops and implements machine learning models. While Python is the more common language used in machine learning, C++ is often used to optimize the performance of algorithms. The skills learned in this course may be useful for a machine learning engineer. The course's focus on features such as the Standard Template Library and multithreading may be beneficial when writing fast algorithms. This course may be helpful for a machine learning engineer. Many positions in this field require a master's degree or a phd.

Reading list

We've selected two books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Quick Start to Modern C++ for Programmers [2024 Edition].
Must-read for experienced programmers transitioning to modern C++. It provides in-depth explanations of C++11, C++14, and beyond, focusing on best practices and common pitfalls. It serves as an excellent reference for understanding the nuances of modern C++ features covered in the course. This book adds depth to the course by providing detailed rationales behind design decisions.
Provides a comprehensive guide to concurrent programming in C++ using threads, mutexes, and other synchronization primitives. It is particularly useful for understanding the multithreading aspects covered in the course. This book is more valuable as additional reading to deepen your understanding of concurrency. It is commonly used by industry professionals.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Similar courses are unavailable at this time. Please try again later.
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2025 OpenCourser