Sorry, this page is no longer available
We may earn an affiliate commission when you visit our partners.
Course image
Dr. Moustafa Saad and CSkilled Academy

Almost all other courses focus on knowledge. In this course, we focus on 4 critical skills.

Overall:

Read more

Almost all other courses focus on knowledge. In this course, we focus on 4 critical skills.

Overall:

  • The course covers basic to advanced modern C++ syntax. Beginners in C++ will learn a lot.

  • The course helps you master the 4 most important skills for a programmer

    • Programming skills

    • Problem-solving skills: rarely covered by other courses

    • Project building skills: partially covered by other courses

    • Design skills: rarely covered by other courses

  • 7+ times practice & homework compare to other courses + 6 projects

  • Special Teaching style: iterative, easy, and short

  • This is an English Course only.  1/3 Course now has Manual English subtitles. Remaining under-progress.

Content

  • Basic to advanced modern C++.

    • Fundamentals: Variables, Loops, Control Flow, Functions, Recursive Functions, Arrays

    • Advanced Topics: Pointers, STL, Templates, Headers, and Includes, Exception Handling, Compilation Process, Debugging

    • Object-Oriented Programming (OOP): Classes, Objects, Inheritance, Polymorphism, Operator Overloading

    • Modern Topics in C++11/C++14/C++17:

      • Move Semantics, Perfect Forwarding, Variadic Template, Folding expressions, Smart Pointers, Lambda Expressions, Wrappers (Optional, Variant, Any), Uniform initialization, noexcept, Structured Binding, Nested namespaces, misc.

      • OOP: Member initializer, Defaulted and Deleted Functions, Delegating constructors, Inheriting Constructors

      • STL: Forward list, Initializer list, Array, Unordered containers

    • Design: Several principles and patterns are embedded in the homework & projects

  • A huge set of Quizzes, Practice, Homework, and Projects

    • 2 styles of homework: Algorithmic (problem-solving) and applications

    • Several software design concerns are embedded in the homework.

    • So you are getting introduced to Software Engineering & Design Patterns

    • Several quizzes to master the concepts

  • Clarification: The core intentions of this course to provide very strong introduction to C++. Specifically up to the 6th project. After the last project, the course introduces some further modern C++ syntax (no quizzes/homework in this part). If you are new to C++, there is no course that competes with this one. But, if you are expert or target working with C++ in the market, you will need to good deeper after this course. A useful reference is "C++17 - The Complete Guide" book. Not that, this course provides some C++17 coverage but not all of it. However, the course provides pretty good coverage for C++11/14. Please consider the table of content if you are not new to C++ to satisfy your expectations.

Building Skills: Practice, Homework, and Projects

  • One unique feature in this course is my education strategy:

    • Explain, Administrate & Challenge

  • Each video smoothly explains a simple concept(s)

  • Typically followed by easy to medium practice to administrate the concept

  • Then typically followed by an easy-medium-hard set of homework questions to challenge you

  • Extensive homework from easy to medium to hard to help to build the skills.

  • Most of the practice/homework questions are unique in this course

    • Programming questions are mainly from my competitive programming experience

    • OOP questions are mostly invented to achieve several goals:

      • Mastering the OOP concepts

      • Enforcing a lot of design heuristics & OOD

      • Preparing you for design principles and patterns

  • Small-to-large set of projects to build up project building and design skills

  • Solutions to all of them.

By the end of the journey

  • Solid understanding of programming concepts using C++

  • Mastering the target 4 skills

  • With the administered problem-solving skills

    • You can start competitive programming smoothly in Div2-A/B Codeforces

    • Smooth start in Data Structure course

    • Smooth start in Algorithms course

  • With the administered project-building and design skills

    • Smooth start in Software Engineering course

    • Later, smooth start in one of the technology tracks in frontend or backend

  • More career options such as games or embedded development.

Don't miss such a unique learning experience.

Enroll now

What's inside

Learning objectives

  • Deep dive with c++ 11/14/17 modern syntax from basic to advanced
  • ~170 problems from easy to medium to hard to gain level-1 problem-solving skills
  • 6 projects from easy to hard with their solutions for projects-building skills
  • Many quizzes to master the concepts
  • Four critical skills to master not just one
  • A proven curriculum: many of my thousands students highly recommend it
  • Short lectures, to the point, comprehensive and easy to get in an iterative style
  • Learn from phd holder in ai: teaching, training & coaching for many years

Syllabus

Getting Started
Why Programming? C++?
Who should take this course?
Teaching Style
Read more

Moved from section 2 to 3 to make it an easier experience.

Traffic lights

Read about what's good
what should give you pause
and possible dealbreakers
Covers basic to advanced modern C++ syntax, which allows beginners to learn a lot and intermediate programmers to strengthen their existing foundation
Administers problem-solving skills, which prepares learners to start competitive programming smoothly in Div2-A/B Codeforces
Introduces software engineering and design patterns, which prepares learners for software engineering courses and technology tracks in frontend or backend
Focuses on programming, problem-solving, project building, and design skills, which are critical for programmers
Includes coverage of modern C++ syntax from C++11/14/17, which helps learners stay up-to-date with current standards
Course may not be comprehensive enough for experts or those targeting C++ in the market, who may need to go deeper after this course

Save this course

Create your own learning path. Save this course to your list so you can find it easily later.
Save

Reviews summary

Skills-focused c++ course with extensive practice

According to students, this course is largely positive, particularly excelling in building practical C++ skills through an exceptional volume of practice problems and projects. Learners found the iterative teaching style helpful for breaking down concepts. While providing a strong foundation, some reviewers noted that explanations for advanced or C++17 topics could be brief and suggest it may require supplementation with external resources for deeper understanding. Overall, students who value a hands-on learning approach and aim to improve their problem-solving and project building abilities found this course highly rewarding.
Iterative, bite-sized approach appreciated.
"...the iterative teaching style works well."
"The instructor's teaching style is effective – concepts are broken down into bite-sized pieces, followed by ample practice."
"...The explanations are clear, concise, and the iterative teaching style works well."
Emphasizes practical programming skills.
"This course delivers exactly what it promises: a deep dive into C++17 focusing on practical skills."
"The focus on problem-solving and project building is what makes this course stand out. It's not just syntax; it's about *how* to use C++ effectively."
"Hands down, the best C++ course for skill development."
"It pushed me to think like a real programmer."
Abundant practice problems, homework, projects.
"The amount of practice problems and projects is truly exceptional and far exceeds other courses I've taken."
"The sheer volume of homework and practice is amazing."
"Lots of great practice problems and projects. This is the strength of the course."
"If you want to LEARN by DOING, this is the course. The ratio of practice to lecture is high, which is exactly what I needed."
May need external resources for depth.
"I often had to rewatch sections or look for external resources to fully grasp certain concepts."
"It's a solid foundation but expect to supplement with other materials."
"...don't expect to be a C++17 expert solely from this."
Explanations can be brief for complex topics.
"Some of the advanced topics could benefit from more in-depth explanations or additional examples, particularly C++17 specifics towards the end."
"...some of the video explanations are a bit too short or fast, especially for complex topics."
"...lectures feel rushed when covering advanced C++17 features."
"The theoretical explanations are decent but not always as thorough as I'd like."

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 Mastering 4 critical SKILLS using C++ 17 with these activities:
Review Fundamentals of Data Structures
Reviewing data structures will help you better understand how to implement efficient solutions in C++.
Browse courses on Data Structures
Show steps
  • Review basic data structures concepts such as arrays, linked lists, and trees.
  • Practice implementing these data structures in C++.
Review 'C++ Primer'
Reading 'C++ Primer' will provide you with a solid foundation in C++ programming.
View C++ Primer on Amazon
Show steps
  • Read the book chapter by chapter, focusing on the topics covered in the course.
  • Try the examples and exercises in the book to reinforce your understanding.
  • Take notes on the key concepts and techniques.
Create a C++ Cheat Sheet
Creating a cheat sheet will help you consolidate your knowledge of C++ syntax and concepts.
Show steps
  • Compile a list of the most important C++ syntax and concepts covered in the course.
  • Organize the information in a clear and concise format.
  • Include examples and explanations to illustrate the concepts.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Solve C++ Coding Problems on LeetCode
Practicing coding problems will help you improve your problem-solving skills and C++ proficiency.
Show steps
  • Select C++ problems on LeetCode with varying difficulty levels.
  • Solve the problems and analyze the time and space complexity of your solutions.
  • Compare your solutions with others and learn from their approaches.
Review 'Effective Modern C++'
Reading 'Effective Modern C++' will help you master modern C++ features and improve your coding skills.
Show steps
  • Read the book chapter by chapter, focusing on the topics covered in the course.
  • Try the examples and exercises in the book to reinforce your understanding.
  • Take notes on the key concepts and techniques.
Build a Simple Game in C++
Building a project will allow you to apply your C++ skills and gain experience in software development.
Show steps
  • Choose a simple game idea, such as a text-based adventure or a number guessing game.
  • Design the game's architecture and implement the core functionalities in C++.
  • Test and debug your game to ensure it works as expected.
  • Add features to enhance the gameplay experience.
Contribute to a C++ Open Source Project
Contributing to open source will give you real-world experience in C++ development and collaboration.
Show steps
  • Find a C++ open source project that interests you.
  • Read the project's documentation and understand its codebase.
  • Identify a bug or feature that you can contribute to.
  • Submit a pull request with your changes.

Career center

Learners who complete Mastering 4 critical SKILLS using C++ 17 will develop knowledge and skills that may be useful to these careers:
Software Developer
A software developer designs, develops, and tests software applications. This course helps build a foundation for a career as a software developer by providing hands-on experience with C++ and emphasizing problem-solving skills. The course's coverage of modern C++ syntax, including C++11, C++14, and C++17 features, helps a software developer stay current with industry standards. The extensive practice, homework, and projects in the course are particularly helpful for developing proficiency. The project building skills taught may be useful when working on large software projects.
Embedded Systems Engineer
Embedded systems engineers design, develop, and test software for embedded systems. This course helps build a strong foundation for a career in embedded systems engineering by providing a deep dive into C++, a language commonly used in embedded systems development. The course's focus on mastering programming, problem-solving, project building, and design skills helps anyone excel in this field. The course's extensive practice, homework, and projects are especially useful for gaining practical experience. An Embedded Systems Engineer is likely to find the material on pointers and memory management in C++ particularly relevant.
Robotics Engineer
Robotics engineers design, build, and program robots. This course helps build a solid foundation for a career as a robotics engineer, especially in the software aspect of robotics. The course's comprehensive coverage of C++ and its emphasis on problem-solving and design skills are directly applicable to robotics programming. The course's project building skills element is valuable for developing complex robotic systems. The elements of the course on pointers, memory management and control flow may be particularly useful to a robotics engineer.
High-Performance Computing Engineer
High Performance Computing engineers work on maximizing the performance of software, often in scientific fields. High Performance Computing engineers can expect to use C++, and this course helps build a foundation in that language. The course introduces basic to advanced modern C++ syntax, which can be very useful in this role. Given that the role requires skill mastering, the course may be useful in helping a High Performance Computing Engineer hone the four critical skills it emphasizes.
Algorithm Developer
Algorithm developers design and implement algorithms for various applications. This course assists in laying groundwork for algorithm development due to its emphasis on problem-solving skills and coverage of data structures and algorithms in C++. The course's practice and homework assignments offer opportunities to apply algorithmic concepts and improve programming abilities. The problem solving skills that the course seeks to instill are particularly valuable. An Algorithm Developer benefits from mastering the design principles taught in the course through iterative learning.
Firmware Engineer
Firmware engineers develop low-level software that controls hardware devices, and this course may be useful in that regard. The course covers basic to advanced modern C++ syntax, which are crucial elements of the Firmware Engineer role. The course's focus on problem solving skills is useful for debugging and improving the stability of important device software. The Firmware Engineer would do well to hone their basic toolkit.
Game Programmer
A game programmer specializes in developing the code that brings video games to life. This course may be valuable for aspiring game programmers due to its comprehensive coverage of C++, a language widely used in the gaming industry. The emphasis on programming, problem-solving, project building, and design skills helps a game programmer excel in a competitive field. The course's focus on modern C++ features and object-oriented programming can be useful when developing complex game systems. The course's projects in particular may help with becoming a game programmer.
Software Architect
Software architects are responsible for designing the high-level structure of software systems. This course may be beneficial for aspiring software architects because it introduces software design concerns within the homework assignments. The course's emphasis on project building and design skills is valuable for understanding the complexities of software architecture. The course's coverage of object-oriented programming and design patterns will be beneficial in designing robust and scalable systems. A Software Architect may find the material on design principles and patterns embedded in the homework to be particularly helpful.
Quantitative Analyst
Quantitative analysts, often called quants, use mathematical and statistical methods to solve financial problems. This course helps build a foundation for a career as a quantitative analyst by developing strong programming and problem-solving skills. C++ is used in high-performance computing in finance, so the course's comprehensive coverage of C++ syntax and features is valuable. The course's focus on algorithmic thinking and problem-solving is useful for developing financial models and algorithms. A Quantitative Analyst benefits from the course's focus on efficiency.
Data Scientist
Data scientists analyze large datasets to extract insights and inform decision-making. This course may be useful for aspiring data scientists who need to develop proficiency in C++ for tasks such as building high-performance data analysis tools or integrating with existing C++ codebases. The course's emphasis on programming skills and problem-solving abilities helps in manipulating and analyzing data effectively. The course's coverage of data structures and algorithms can be beneficial for optimizing data processing pipelines. A Data Scientist who takes this course may benefit from the practice problems.
Kernel Developer
Kernel developers work on the core of operating systems, and this course may assist a candidate for this role. The course introduces basic to advanced modern C++ syntax. The course's focus on problem solving skills can be very useful for debugging and improving performance. Likewise, the course can lend itself to design skills, which are also very important for writing safe and efficient code. A Kernel Developer must understand the language.
DevOps Engineer
DevOps engineers automate and streamline software development and deployment processes. While not a direct path, this course can be helpful for DevOps engineers who need to work with C++-based systems or tools. The course's coverage of C++ helps in understanding and troubleshooting C++ applications. The emphasis on problem-solving skills is beneficial for identifying and resolving issues in complex systems. A DevOps Engineer may find the practice problems in the course to be helpful.
Blockchain Developer
Blockchain developers are responsible for developing and implementing blockchain technologies. While not a direct route, this course may be useful for blockchain engineering. The course introduces basic to advanced modern C++ syntax. The course's focus on problem solving skills is useful for analyzing complex systems. A Blockchain Developer might find the various projects and homework to be very valuable.
Compiler Developer
Compiler developers work on creating and improving compilers, which translate human-readable code into machine code. This course may be useful for compiler development as the course covers the compilation process in C++. The course's aim of imparting design skills will be useful in creating robust and efficient compilers. The course's coverage of advanced C++ features also provides a solid understanding of the language's capabilities. A Compiler Developer would benefit from understanding the compilation process.
Operating Systems Developer
Operating systems developers work on the core software that manages computer hardware and provides services for applications. This course may be useful for those seeking a career as an operating systems developer since C++ is often used in operating systems development. The course's coverage of advanced C++ features provides a solid understanding of the language's capabilities. The project-building skills are useful for working on large, complex software projects. The iterative approach of the course will likely be useful to an Operating Systems Developer.

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 Mastering 4 critical SKILLS using C++ 17.
A follow-up to "Effective C++", this book delves into more advanced C++ programming techniques and best practices. It provides practical advice on how to write efficient, robust, and maintainable code. It is suitable for experienced C++ programmers who want to improve their skills. It is more valuable as additional reading.
This comprehensive guide is widely regarded as a definitive resource for learning C++. It covers the language from basic concepts to advanced features, making it suitable for both beginners and experienced programmers. The book provides clear explanations, examples, and exercises to reinforce understanding, and it is particularly useful for those seeking a solid foundation in C++ programming. It serves as an excellent reference and textbook for understanding C++ concepts.

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