Teach yourself C++ — Where to start

My journey into the world of programming started way back in December 2016. Since then I have read many books and done many courses on Codecademy, Udacity and various online university courses (Harvard’s CS50, Berkeley’s CS61A, CS61B, Stanford’s CS106A). Along the way I have experienced many frustrations that come along with learning how to code.

At the beginning of 2018, I decided to finally begin exploring C++. This has always been my personal goal and I am glad I was finally able to move towards achieving it. Although I do not expect to use C++ any time soon, I do believe that by understanding it — it would equip me with deeper knowledge of programming and make me more productive long term.

Why you should learn C++?

I am not the only one who thinks it is worthwhile to learn C++ or C. Many others have written articles, expressing the same opinion:

Hopefully, now you are even more convinced that it is important to spend some time understand C++, I would like to share with you the steps that you could take to independently self teach yourself the basics of C++!

Health warning: you should already know basics of at least one, if not two, programming languages. Ideally, Python and Java.

How to Think Like a Computer Scientist: C++ Version

This is a very introductory book to the basics of programming. I highly recommend starting with it as a refresher and a brief overview of the most basic features of C++. The book is very short so can be read in one or two days. PDF version is available here.

Programming: Principles and Practice Using C++

This is a great introductory book to the world of programming and computer science in general. It is written by the creator of C++ programming language. Although the focus is primarily on programming, it provides an excellent starting point to the C++ in general.

Stanford’s CS106B or CS 106X Lectures via YouTube

Once you have finished the book above, I recommend following the course and watching the video lectures from Stanford University mentioned below.

CS106B — Course Website

I personally recommend going for CS106X (assuming you are already comfortable with Python or Java), as it covers a bit more material at a faster pace.

CS106X — Course Website

Programming Abstractions in C++

My understanding is that this book was written to complement the CS106B/X courses at C++. Therefore, it can be used as part of the study material for these courses. I found the pace of the book to be beginner friendly with many unnecessary features of C++ abstracted away to allow the reader to really focus on what matters. Draft version of the book is available here.

“Learning and Teaching Modern C++” Talk by Bjarne Stroustrup

Once you have completed the above sections, check out the talk below where Bjarne discusses the challenges of learning and teaching C++.

Data Structures and Algorithms in C++

This book offers an excellent introduction to data structures and algorithms using C++. It is a great tool to both learn more about this area of computer science, while at the same time, reinforcing your understanding of C++.

The C++ Programming Language

This is the ultimate master reference book for the C++ programming language. It offers an exhaustive description of the C++ Programming language, its standard library and many fundamental programming techniques. You should only attempt to read it once you are comfortable with the earlier materials on this page.


If you found this post useful, feel free to add me on LinkedIn or follow me on Twitter. I would also love to talk to you about your journey of learning whatever it might be, as I am currently working on a start up idea to help people around the world with their own independent self-study. So please reach out to me — I would love to hear your story! ❤️