Learning C and C++ can be challenging, as they are powerful programming languages that require proper guidance. These languages cannot be easily self-taught, and one needs quality educational resources to master them. Luckily, we have curated a list of some of the best online sources to help you learn C and C++ effectively. The resources are listed below for your convenience.
1. The Handmade Hero Project
Casey Muratori, a programmer, created Handmade Hero, a project where he constructed a top-notch video game entirely from scratch using the C programming language. Throughout the process, he recorded YouTube videos detailing every line of source code and his insights on the matter. Muratori is a programmer with strong opinions, and his vast experience in game engine development enables him to share a wealth of advanced knowledge. For instance, he explains the relationship between the internals of a computer, such as the CPU and memory, and code performance early on. If you are a novice in C programming, you may want to begin with the day 1 video available here.
- The entire 667-day game development process is captured on video
- Dives into the weeds of low-level C programming
- Takes a lot of time to finish entire video series
2. The New Boston’s C++ Video Series
The New Boston’s YouTube playlist, “C++ Programming Tutorials,” is an excellent resource for beginners. The instructor, Bucky Roberts, delivers comprehensive material in a relaxed and entertaining teaching style, making learning more enjoyable. However, the tutorials primarily showcase C++ coding within an editor for basic console programs, without exploring the creation of graphical user interfaces, games, or other practical applications. Nevertheless, if you are a first-time coder, this series is a valuable tool to add to your learning arsenal.
- The individual videos are at a good length: 5 to 10 minutes each
- 73 videos cover core concepts of C++ programming
- The videos were released in 2011, so the content is a bit outdated
3. The course on C++ Programming is offered by freeCodeCamp.org.
Another excellent resource for absolute beginners is the YouTube video series, “C++ Programming Course.” The course starts by guiding you through the installation of necessary tools, including the modern code editor, Visual Studio Code. You will then be taught step by step on how to use these tools, beginning with your first C++ program and gradually advancing to more complex topics. However, some aspects of the learning experience can feel clunky, such as having to download a source code file and modify it to create a “Hello, World” program instead of learning to write it from scratch. Despite this minor issue, the video series provides an excellent modern C++ tutorial.
- Released in 2022, so the content is up to date
- Comes with source code you can download and work along with
- It’s a single 31-hour video, so it’s hard to go to specific topics
4. Learn C++ from the Scratch course offered by educative.io.
The Learn C++ from Scratch course excels in several areas. Right from the first lesson, the course’s strengths become evident, such as the use of illustrations and interactive exercises with C++ code that you can run and modify. The course also incorporates regular quizzes and exercises, making it more engaging and enjoyable than courses that require passive reading or video watching. However, the course’s visual layout may not be the best. The sample code is shown first, with the line-by-line explanation placed far below it, requiring you to scroll down to read the explanation and then scroll back up to see the code.
- You can try much of the course without creating an account
- The interactive content is beneficial
- You can jump to any point in the course regardless of the previous completion
- You need to pay a monthly fee to access the entire course
5. The video series on How to Program a Game in C++.
For a fast and enjoyable introduction to programming, look no further than Dan Zaidan’s YouTube video series, “How to Program a Game in C++.” This tutorial series stands out for its rapid pace. In the first seven-minute video, Zaidan provides a high-level overview of game development, guides you through the installation of Visual Studio Code, demonstrates a working “Hello, World” program, and explains how to use the line-by-line debugger. Zaidan’s quick speech also keeps the videos engaging and lively. While he may skip over some programming fundamentals, he still covers essential concepts such as pointers and memory management, using visual sketches and diagrams. If you have limited time and want to create a fun program quickly, this video series is an excellent resource.
- The entire series is under two hours, so it’s easy to watch
- The source code is included
- You only learn enough basic concepts to make Pong
6. Code Combat
Code Combat is a 2D fantasy role-playing game that employs a programming language like C++ to control your hero through various levels. This game’s concept is both fun and engaging, and the drive to beat each level kept us entertained. The educational content is well-structured and tailored for beginners. The early levels, for instance, require you to enter simple commands repeatedly, such as hero.moveUp() and hero.moveRight(). Although this may not resemble practical programming, playing this game is an excellent way to learn essential programming concepts such as logic, conditionals, and loops.
- Hundreds of levels of content
- The game provides helpful hints when your code is wrong
- C++ is only available with a subscription starting at $9.99 / month
You may find the following frequently asked questions:
Is C/C++ the best programming language?
The best programming language for a project depends on the particular use case and your individual preferences. C and C++ are commonly employed for computationally intensive tasks, such as game development, due to their high-performance capabilities. However, they may not be the optimal choice for web development projects. Furthermore, C and C++ demand familiarity with low-level concepts such as memory management, which could result in severe errors if not handled carefully. Ultimately, the ideal language for a project is determined by the project’s specific requirements, expertise, and comfort level with the languages.
What is the difference between C and C++?
C and C++ are two distinct programming languages that share some similarities but have significant differences. C, developed in the 1970s, grants programmers manual control over a computer’s resources, whereas C++, developed in the 1980s as an extension of C, has object-oriented programming support.
C++ differs significantly from C because it includes object-oriented programming features such as classes, objects, and inheritance. Additionally, C++ has several other advancements, such as better error handling using try-catch blocks, the string type, function overloading, and more.
In summary, C++ is a more flexible and powerful language that builds on top of C’s foundation to provide modern features. However, both languages are excellent choices that provide developers with substantial control and performance. Therefore, either language can be a good option.
What makes C/C++ a preferred choice for faster performance?
C and C++ have compiled languages, which is one significant reason for their popularity. The code written in these languages is first converted into a program that can be understood and directly executed by a computer’s CPU, which is like reading a book that was initially written in a foreign language but has been translated into a language you understand. Although you can read it as quickly as any other book, a lot of upfront work is necessary to translate it into your preferred language.
Another key advantage of C and C++ is that they provide developers with control over memory management, including where and how data is stored, read, and deleted in RAM. This feature is lacking in many other languages, which automatically handle memory management, frequently resulting in slowdowns because the languages are unaware of the most efficient approach for a program to handle memory.