Resources
Welcome to my Resources section, a curated list of the books/courses/blogs/tools and websites I strongly recommend for improving your programming skills.
Please read that important disclosure:
Some of the links below are affiliate links, which means that if you choose to make a purchase, I will earn a commission. This commission comes at no additional cost to you. Please understand that I have experience with most of these products/sites, and I recommend them because they are helpful and useful, not because of the small commissions I make if you decide to buy something. Please do not spend any money on these products unless you feel you need them or that they will help you achieve your goals.
My Book!
I wrote a book about C++17 features! I believe this book might be useful addition when learning about modern C++!
Another one!
I also wrote another book: C++ Lambda Story - it teaches lambda expressions how this feature evolved among different C++ versions
My Interactive Course
Thanks to the collaboration with the team @Educative we published C++17 in Detail as an interactive course!
You can see it… and even preview it for free here:
C++17 in Detail: A Deep Dive
It consists of 228 lessons, many quizzes, code snippets… and what’s best is that it has more than 153 playgrounds! That means you can compile and edit code sample directly in the browser… so there’s no need for you to switch back and forth to some compiler/IDE.
I think that such approach increases your learning experience.
Sites
- Awesome Perf Cpp - A curated list of awesome C/C++ performance resources: talks, articles, books, libraries, tools libraries, sites.
- codeproject.com
- Cprogramming.com: C and C++ Programming Tutorials, Tips and Tricks
- A trip through the Graphics Pipeline 2011 - Fabian Giesens excellent series about GPU internals. Highly recommended.
- OpenGL Hardware database
- elementsofprogramminginterviews.com - site (along with the book) contains over 300 solved problems representative of those asked at leading software companies. You can even find a free PDF sample.
Books
- Effective Modern C++ by Scott Meyers
- OpenGL SuperBible by Graham Sellers and Richard S Wright Jr.
- Read my review in this post
- Modern C++ Programming Cookbook by Marius Bancila
- Read my review in this post
- C++17 STL Cookbook by Jacek Galowicz
- Read my review in this post
- OpenGL 4 Shading Language Cookbook - Second Edition
- I was a technical reviewer for that excellent book!
- The C++ Programming Language, 4th Edition by Bjarne Stroustrup
- The C++ Standard Library: A Tutorial and Reference (2nd)
- Read my review in this post
- Systems Performance: Enterprise and the Cloud
- Discovering Modern C++ 1st Edition by Peter Gottschling
- C++ Templates: The Complete Guide (2nd Edition) by David Vandevoorde, Nicolai M. Josuttis, Douglas Gregor
- Foundations of Game Engine Development, Volume 1: Mathematics by Eric Lengyel
- [PDF] The Art of Assembly Language, Free online
Courses
My Recommended Pluralsight courses (that I’ve seen so far):
General C++
- Play by Play: Modernizing C++ Code with Kate Gregory - a great interview, where Kate analyses a legacy project. She didn’t go very far, but it was valuable to see how to think in modern C++, what are some common code smells and legacy patterns.
- C++ Advanced Topics (by Kate Gregory) - it’s a long (more than 5h) course about good practice in modern C++: like avoiding raw new/delete, C-style patterns, plus of course advanced topics, like move, lambdas, etc. Good stuff with a great teacher.
- First Look: C++ Core Guidelines and the Guideline Support Library - (by Kate Gregory) - the course not only teaches how to work with the Core Guidelines, but also Kate describes what modern C++ is, what are the advantages and disadvantages of the language and what is safe and expressive code. It’s an excellent material for refreshing the knowledge of modern C++. Useful for beginners and experienced developers.
- Practical takeaway: how to use not_null, what is modern and safe C++, consts, tools (clang tidy, gsl library).
- C++ Fundamentals Including C++ 17 by Kate Gregory
- A very recent course from Kate. More than 5h of great programming course about starting with C++. If you’d like to start with C++ today I suggest taking that course.
Design patterns in C++
About design patterns by Dmitri Nesteruk (also Pluralsight):
I like the approach of writing a live code, with a simple pattern implementation. So you can see all of the details. Then, Dmitri is discussing the problems. The set of courses on Design Patterns looks like a good way to practice coding in C++ and start with Design Patterns. Still, I’d like to see more details of the implementation; maybe we can wait for the advanced version of this course someday? :) Plus, maybe a discussion about the use in a real-life project, disadvantages, etc.
- Design Patterns in C++: Behavioral - Observer To Visitor
- Design Patterns in C++: Creational
- Design Patterns in C++: Structural - Adapter to Decorator
- Design Patterns in C++: Structural - Façade to Proxy
- Design Patterns in C++: Behavioral - Chain of Responsibility to Memento
COM and Windows Runtime
Starting with Windows 8 we got WinRT which is a powerful technology, advertised as the core foundation for modern Windows applications. You can use it from different languages, also C++.
Keny Kerr (author of C++/WinRT, moderncpp.com, MVP) has created a bunch of courses related to this technology. You can understand COM and then move to WinRT (which is based on COM). That knowledge might be necessary for any programmer related to the Windows environment.
- The Essentials of COM
- The Essentials of COM - Part 2
- The Essentials of the Windows Runtime
- Windows Runtime Internals
Algorithms and Data Structures
- Using Advanced Data Structures in Modern Applications by Rasmus Amossen
Blogs
- isocpp.org - set it as your home page! :)
- Herb Sutter on software development
- Visual C++ Team Blog
- Simplify C++
- Fluent C++
- Meeting C++
- Modernes C++
- foonathan::blog() - Thoughts from a C++ library developer.
- Simon Brand’s Programming blog
- Musing Mortoray
- Random ASCII
- Just Software Solutions Blog
- Vittorio Romeo’s programming blog
- Tomato Soup - Visual Assist Team Blog
- Red Blob Games articles - series of articles about algorithms in gamedev: pathfinding, ai, graphs, etc… all with interactive visualizations!
Blogging
If you run a blog (which I highly recommend for every devloper!) you might be interested in the following resources:
- How to Create a Blog That Boosts Your Software Development Career
- free course from SimpleProgrammer, by J. Sonmez
- Writing is hard, especially if you’re not a native English speaker. That’s why I try to fix and improve my articles whenever possible. In 2016 I’ve started using Grammarly which is a great tool to automatically check everything you write. I am using it on my blog, at work, for emails… it works in the browser but also as separate plugins for Office (and other).
- I am using MailChimp as my tool for the mailing list. It’s not super cheap, but works very well so far :)
Friends
- Marcin Draszczuk - and his Awesome Game Studio. You can find their games via Steam: Steam Awesome Games.
- Grzegorz Watroba - and his gamedev/blog site.
Others
- For productivity I am using Cold Turkey to block eveything and focus on the important tasks.
- openclipart.org/ - Great source for public domain clip arts. A lot of graphics on my site comes from this site.