External Resources for CS105C #
For C++ #
Books #
This class does not require the purchase of any textbooks. All assignments will be distributed through Canvas or the website, all class material will be made available on Piazza, and a wealth of references are available online. However, if you would like a book, there are a few canonical texts that are often recommended.
Important: In many cases, you can save money by purchasing an older version of a textbook, which has more-or-less the same content. Unfortunately, you cannot just purchase older editions of C++ books, because the C++11 standard (which came out in 2011) drastically alters many aspects of the language. For the books listed here, make sure you are buying the newest version of the book—for any other book, it is usually a good idea to make sure that the version you are buying has C++11 content.
The C++ Primer (Lippman, Lajoie, and Moo) #
As of right now, this is the book to get as an introduction to C++. It’s chock-full of examples, covers a lot of modern C++ concepts, and is relatively easy to read. The downside of this is that it ends up being a very long book—the second-thickest book I own, at nearly 1000 pages. Make sure to get the 5th edition, as it is the only one that contains Modern C++ concepts.
A Tour of C++ (Stroustrup) #
Don’t let the fact that Bjarne Strousup once taught at A&M turn you off to this book—he also invented the C++ language, and still writes some of the best reference books on the subject. A Tour of C++ is a terser, more densely-packed version of the C++ Primer, with more technical descriptions. If you’re partial to that kind of writing, this might be a better book for you. The second edition is the most recent one and the only one that contains Modern C++ material.
Functional Programming in C++ (Čukić) #
One of the newest books on the market. I haven’t actually read this one personally. However, it has some rave reviews on several C++ forums, with readers claiming that the book is not only a text on functional C++, but good software design practices in general.
Effective Modern C++ #
If you’re planning on working as a C++ developer, Scott Meyer’s Effective Modern C++ (and it’s cousins, Effective C++, More Effective C++, and Effective STL) form the basis of most modern software engineering work done in C++. This is more of a software engineering book than a C++ language book, so don’t pick this up until you have some idea of how the language works.
Online Resources #
Google #
Okay, so this is kinda cliche, but C++ has been around a long time, and has accumulated a stonking great number of online resource–I can’t tell you how many times the solution to one of my problems was buried on page 3 of a long-abandoned forum.
If you’re looking for reference material, tutorials, or videos, feel free to search away using whatever you know best. If you’re googling error message though, you should know that the same C++ error message can sometimes mean many different things.
If you’re googling the text of an error message (which is a good thing™ that you should definitely do), make sure to stop and think if the solution you’re getting makes sense for your situation. Blindly applying the first StackOverflow post’s solution to your error will sometimes result in a mess of code so confused that the best fix is to throw it out and start again.
C++ Reference #
The C++ Reference is an awe-inspiring collection of information on C++. When they say reference, they mean reference. This thing is pretty much a distilled version of the C++ Standard (which is a 1600+ page bohemoth). While it can be intimidating at first, knowing how to nick a key piece of information out of it can definitely save you a lot of time.
You should probably only use this site when it pops up in a google search–trying to navigate it by hand is quite the ordeal.
cplusplus.com #
The slightly less encyclopedic sibling of cppreference.com. It doesn’t hold quite as much detail about exactly how every little piece works, but makes up for it by having great examples for most of the standard library. Chances are that if you search for information about a standard library function, you’ll get results from both here and the C++ reference.
For the Command Line #
Ubuntu Tutorial #
For a rapid-fire introduction to command-line, this is the tutorial to read.
The Linux Command Line #
For a more extended dive into command line utilities, The Linux Command Line (and it’s associated book and online course) are great resources.
Your Suggestions Here! #
If you find a resource that you think is really helpful for learning C++ and you want to share it, feel free to email me. If I like it, I’ll put it up here and credit you for pointing me to it.