Sorry, this page is no longer available
We may earn an affiliate commission when you visit our partners.
Course image
Selfcode Academy

Are you looking to become a proficient programmer? Look no further than learning C and C++. These powerful programming languages are widely used across many industries and applications. By learning C++, you'll not only acquire the key concepts of programming that apply to other languages but also get hands-on experience with modern C++ which is widely used in today's software industry.

Read more

Are you looking to become a proficient programmer? Look no further than learning C and C++. These powerful programming languages are widely used across many industries and applications. By learning C++, you'll not only acquire the key concepts of programming that apply to other languages but also get hands-on experience with modern C++ which is widely used in today's software industry.

This course will cover everything you need to know, from the basics of C++ to advanced topics like inheritance and polymorphism. You'll be guided through a proven curriculum that covers more material than most C++ university courses. Plus, you'll be learning from an experienced university full professor who has been using and teaching C++ for over 25 years.

Our comprehensive course includes quizzes, live coding exercises, challenge coding exercises, and assignments to ensure you have a solid grasp of C++ programming. Don't settle for obsolete versions of C++ taught in other courses – learn modern C++ and become a skilled programmer. Start your journey today.

Are you wondering which programming language to learn that will add value to your resume and increase your chances of getting a job interview? Look no further than C++. This programming language is considered a badge of honor among software developers and is routinely ranked in the top 5 programming languages by popularity. C++ has been consistently in the top 10 for close to 20 years, making it a very relevant language to learn.

C++ is used for developing a lot of software today, including leading tech companies such as Amazon, Apple, Microsoft, PayPal, Google, Facebook, and Oracle, to name a few. Many of their products, including operating systems like Windows, Linux, and Mac OSX, as well as Adobe products like Photoshop and Illustrator, are written in C++.

But why should you learn C++? For one, it is a powerful language that can do many things that other languages cannot. C++ is also super fast and flexible, supporting both procedure and object-oriented programming. If you want to learn C++, finding a good course taught by an experienced instructor is critical. This is where the Modern C++ course, taught by Frank Mitropolous, comes in. Frank has been using C++ for over 2 decades and has taught students in both university courses and industry training courses.

This course focuses on teaching Modern C++ (specifically C++ 14 and C++17), which are the versions currently being used by the industry. While C++20 is new, the industry is mainly using C++14, and it will take years for them to migrate to C++20. Therefore, it is beneficial to learn Modern C++ first and focus on the latest versions later.

The course assumes no previous experience with C++ and covers key topics such as looping, functions, pointers, class hierarchies, and smart pointers. C++ may be complex, but with the right instructor and training, you can quickly learn the language and create your own programs. Learning the foundations of Modern C++ should be your priority, and this course will give you the necessary skills in the shortest possible timeframe.

Enroll now

What's inside

Learning objectives

  • Obtain the key concepts of programming that will apply not only to c++, but also to other programming languages.
  • Learn modern c++ rather than an obsolete version of c++ that most other courses teach.
  • Learn c++ features from basic to more advanced, such as inheritance and polymorphic functions.
  • Learn c++ using a proven curriculum that covers more material than most c++ university courses.
  • The course includes quizzes, live coding exercises, challenge coding exercises, and assignments to help you solidify your knowledge.

Syllabus

Programming With C
Course Overview
Introduction to C programming
Variables and Datatypes: Part 1
Read more

Traffic lights

Read about what's good
what should give you pause
and possible dealbreakers
Covers C++ 14 and C++ 17, which are versions currently used in the industry, providing practical and relevant skills for real-world applications
Taught by a full professor with over 25 years of experience using and teaching C++, which ensures a deep understanding of the language and effective teaching methods
Includes quizzes, live coding exercises, challenge coding exercises, and assignments, which helps learners solidify their knowledge through active participation
Assumes no previous experience with C++, which makes it accessible to beginners looking to learn a powerful and widely used programming language
Focuses on modern C++, specifically C++ 14 and C++ 17, which means learners may need to independently explore newer features introduced in C++ 20 and later
Requires learners to have access to a computer to complete coding exercises and assignments, which may pose a barrier for those without reliable access

Save this course

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

Reviews summary

Solid introduction to modern c++

According to learners, this course provides a solid foundation in both C and Modern C++ (C++14 and C++17), making it particularly good for beginners. Many highlight the clear explanations and the knowledgeable instructor as key strengths. The inclusion of live coding exercises, challenge exercises, and a capstone project are frequently mentioned as beneficial for hands-on learning. While students appreciate the breadth of topics covered, some note that the course might not go deep enough for those seeking truly advanced material or might move too quickly through complex concepts for absolute novices without prior programming experience. Overall, the sentiment is largely positive, especially for those looking for a comprehensive introduction to the language.
Instructor is experienced and highly knowledgeable.
"The instructor clearly knows C++ inside and out; his expertise is evident."
"You can tell the professor has decades of experience; he explains things with authority."
"Frank Mitropolous is a fantastic teacher with deep knowledge."
Excellent starting point for new programmers.
"This course is perfect for absolute beginners. It starts from the very basics."
"As someone with no prior coding experience, I felt comfortable learning C++ here."
"It breaks down the concepts in a way that beginners can grasp easily."
Practical exercises reinforce learning effectively.
"The coding challenges and assignments were incredibly helpful in practicing what was taught."
"I really liked the live coding sessions; they helped solidify my understanding."
"The hands-on practice questions and projects are essential for learning."
"Doing the exercises after each section is crucial and they are well-designed."
Concepts are explained clearly and concisely.
"The instructor explains concepts very clearly, especially the difficult ones like pointers."
"I found the explanations easy to follow, even for someone new to C++."
"Lectures are well-structured and easy to understand. The examples help clarify points."
"Instructor has a knack for making complex ideas simple."
Pace might be too fast for complete novices.
"Sometimes the pace felt a bit fast, especially when introducing new complex ideas."
"If you have absolutely no programming background, be prepared to pause and rewatch sections."
"Moved a bit quickly through the C section before jumping into C++."
"Requires dedicated effort to keep up if you're starting from zero."
Covers breadth but lacks depth on some advanced topics.
"While it covers a lot, some 'advanced' topics could go into much greater depth."
"It's great for a beginner to intermediate level, but don't expect true advanced C++."
"Felt like some topics were just touched upon and needed external resources for deeper understanding."
"The course name suggests advanced, but it feels more like solid intermediate."

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 Learn C and C++ (Beginner to Advance) with these activities:
Review Data Structures and Algorithms
Reinforce your understanding of fundamental data structures and algorithms, which are essential for efficient C++ programming.
Show steps
  • Review common data structures like arrays, linked lists, and trees.
  • Practice implementing basic sorting and searching algorithms.
  • Analyze the time and space complexity of different algorithms.
Review 'Effective Modern C++'
Deepen your understanding of modern C++ best practices and techniques.
Show steps
  • Read through the book, focusing on areas relevant to the course.
  • Try out the examples and exercises provided in the book.
  • Apply the principles learned to your own C++ projects.
Solve Coding Challenges on HackerRank/LeetCode
Sharpen your C++ coding skills by solving coding challenges on platforms like HackerRank or LeetCode.
Show steps
  • Select C++ coding challenges that align with the course topics.
  • Attempt to solve the challenges independently.
  • Review solutions and learn from others' approaches.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Create a C++ Tutorial
Solidify your understanding by creating a tutorial on a specific C++ topic, such as pointers or object-oriented programming.
Show steps
  • Choose a C++ topic that you want to teach.
  • Research the topic thoroughly and gather relevant information.
  • Write a clear and concise tutorial with examples and explanations.
  • Share your tutorial with others and get feedback.
Implement a Simple Game in C++
Apply your C++ knowledge by building a simple game, such as a text-based adventure or a simple graphical game using a library like SDL.
Show steps
  • Choose a simple game concept that you can implement in C++.
  • Design the game's structure, including classes and functions.
  • Implement the game logic and user interface.
  • Test and debug your game to ensure it works correctly.
Review 'The C++ Programming Language'
Gain a deeper understanding of the C++ language from its creator.
View Programming on Amazon
Show steps
  • Read selected chapters relevant to the course content.
  • Focus on understanding the design rationale behind C++ features.
  • Use the book as a reference for complex C++ concepts.
Contribute to a C++ Open Source Project
Gain real-world experience by contributing to an open-source C++ project.
Show steps
  • Find a C++ open-source project that interests you.
  • Familiarize yourself with the project's codebase and contribution guidelines.
  • Identify a bug or feature that you can work on.
  • Submit your code changes for review.

Career center

Learners who complete Learn C and C++ (Beginner to Advance) will develop knowledge and skills that may be useful to these careers:
Software Engineer
A software engineer designs, develops, and maintains software systems. This role often involves using programming languages like C++, and this course helps build a foundation in C++ syntax, object-oriented principles, and control structures. The course's comprehensive approach, covering topics from basic to advanced, is invaluable for anyone looking to pursue a software engineering career. The curriculum includes practical coding exercises necessary for successful software engineers, with topics including classes, objects, methods, and object-oriented programming. With hands-on practice, this course helps you become more than a novice in software engineering by teaching you modern C++ along with other critical concepts.
Game Developer
Game development frequently uses C++ for its performance capabilities, making this course very useful for aspiring game developers. This career involves programming game mechanics, graphics, and user interfaces. A game developer needs to be well-versed in object-oriented programming, which this course emphasizes. The topics covered—such as loops, functions, pointers, classes, and polymorphism—are critical for building robust game systems. Furthermore, practicing with live coding and challenge exercises in this course will help a game developer to be prepared for the challenges and technical rigor of real game development. A game developer will find the focus on modern C++ an essential asset, as many games use this language.
Systems Programmer
A systems programmer works on low-level software such as operating systems, device drivers, and embedded systems. This career path often requires a deep understanding of C and C++, and this course provides exactly that. The course dives into crucial topics for systems programming, such as pointers, memory management, and system-level calls. The course's emphasis on Modern C++ is particularly valuable, as it equips systems programmers with the most current development practices. A systems programmer will find the course’s practical exercises and focus on core programming concepts essential to their success. Someone looking to enter systems programming should take this course.
embedded systems developer
Embedded systems development involves creating software for devices with specific functions, such as in automobiles or appliances. This career typically requires a strong background in both C and C++, which this course provides. The course covers fundamental concepts such as pointers, memory management, and control structures, all vital to embedded systems. The focus on hands-on coding exercises and practical assignments will prepare an embedded systems developer to write efficient and reliable code. An embedded systems developer will find that learning modern C++ techniques is important for the rapidly changing field. This course helps build a strong foundation.
Application Developer
Application developers create software applications for various platforms, such as desktop or mobile. These applications can be anything from productivity tools to entertainment software. This course helps an application developer build a strong foundation in programming concepts necessary for success. The course teaches both C and C++, with a strong emphasis on modern C++, and covers core concepts like data structures, control flow, and object-oriented programming. Application developers will find the practical exercises and comprehensive curriculum to be invaluable for building robust applications. Aspiring application developers should take this course for the skills it provides.
High Frequency Trading Programmer
High-frequency trading programmers develop and optimize trading systems for financial markets and therefore require a very strong focus on performance and efficiency. The course’s emphasis on C++, a language known for its speed, aligns perfectly with this need. The course covers core topics, such as pointers, memory management, and object-oriented programming, all of which are crucial for building high-performance trading systems. The hands-on coding exercises and assignments will help a high-frequency trading programmer develop the practical skills needed for success. The course's instruction in modern C++ standards is vital because many current high-frequency systems use this technology. This is a key course for those interested in high-frequency trading.
Database Developer
A database developer is responsible for designing, implementing, and maintaining databases for various applications. Many database systems use C and C++ as their core languages, which is why this course can be very useful for aspiring database developers. The course delves into key programming concepts that are necessary for database management, including memory management, data structures, and algorithm design. A database developer will find the practical approach of this course highly beneficial. The course's emphasis on modern C++ is essential for developers who are working with up-to-date database technologies. For anyone wanting a career in database development, this course is a great starting point.
Robotics Engineer
Robotics engineers design and develop robots and robotic systems. This role frequently involves programming in C and C++, often used for real-time control and embedded systems. This course teaches the fundamentals of these key languages. The course covers important concepts such as control flow, object-oriented programming, and data structures, all important in robotics. A robotics engineer will find the practical coding exercises and hands-on practice particularly beneficial. The course provides a solid foundation in modern C++, which is increasingly vital given how it is widely used in the robotics field. This course is useful for individuals looking to enter the field of robotics.
Operating Systems Developer
Operating systems developers create and maintain the core software that manages computer hardware and resources. C and C++ are primary languages in this field, and this course introduces key concepts needed by an operating systems developer. The curriculum includes topics such as pointers and memory management. The course's emphasis on the latest standards of C++ will be highly valuable when writing and maintaining an operating system. Practical experience gained through coding exercises further prepares an operating systems developer for implementation. Operating systems development typically requires an advanced degree.
Compiler Developer
A compiler developer works on creating software that translates programming languages into machine code. This field requires a strong understanding of C and C++, and this course may be useful to build a foundation of knowledge. The course's approach to object-oriented programming, along with its coverage of data structures, control flow, and memory management, are important building blocks for compiler design. The practical exercises will help you build the skills necessary for this career. Compiler development often requires an advanced degree. The content of the course may be useful for those seeking a career in compiler development.
Data Scientist
Data scientists analyze and interpret complex data to extract insights. Though data science often utilizes Python, a background in C++ may be useful for optimizing certain algorithms and handling large datasets, making this course potentially relevant. Though less of a focus than other fields, the course helps a data scientist refine skills in algorithmic thinking, memory management, and system performance, which can help in certain advanced roles. Core concepts taught in the course, such as control structures, programming fundamentals, and object-oriented principles, build a foundation for a data scientist. The course may be helpful for someone seeking a role in data science.
Technical Writer
Technical writers create documentation for a variety of technical products, including software. While most of the work of a technical writer is not coding itself, the information in this course may be useful for the technical writer to better understand how software is developed in C++, allowing a technical writer to create clearer and more accurate documentation. Concepts covered in the course, such as control flow, object-oriented programming, and system design, will also help technical writers in understanding product design. The material may be useful for this career field, as it will help technical writers improve the quality of their work.
Quality Assurance Engineer
Quality assurance engineers test software to ensure it meets standards of quality and reliability. While this role may not directly involve coding, a deeper understanding of the programming process in C++ can be helpful, and this course may be useful. The course provides an understanding of how code is written and structured, which can help in creating better test programs and overall planning for tests. This course can provide a background required for software testing. Those hoping to make a career in quality assurance may find this course helpful.
Project Manager
Project managers oversee technology projects, ensuring they are completed on time and within budget. While this role does not require deep technical ability with code, a basic understanding of C++ can help the project manager facilitate communication with developers and understand the scope of technical tasks, making this course potentially useful. With experience in programming, a project manager may be more able to assess the timeline for certain tasks. The knowledge of C++ that is provided may be helpful to a career in project management.
IT Support Specialist
IT support specialists provide technical assistance and resolve issues with computer systems. This role does not commonly involve programming in C++, but the course may be helpful as it develops analytical and systematic thinking through its hands-on exercises. Through this course, an IT support specialist may refine skills in problem solving, debugging, and system analysis. Learning about C++ may be helpful for an IT support specialist to better understand how software functions and is developed. The course, while not directly related to IT, may nonetheless be useful for those in IT.

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 Learn C and C++ (Beginner to Advance).
Provides in-depth guidance on using modern C++ features effectively. It covers topics like smart pointers, move semantics, and lambda expressions. Reading this book will help you write cleaner, more efficient, and more maintainable C++ code. It valuable resource for understanding the nuances of modern C++ and avoiding common pitfalls.
Written by the creator of C++, this book comprehensive guide to the language. It covers all aspects of C++, from basic syntax to advanced features. While it can be dense, it's an invaluable resource for understanding the underlying principles of C++ and its design philosophy. It is particularly useful as a reference for more advanced topics.

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