⚠️ This is not the current iteration of the course! Head here for the current offering.

C/C++ Language Primers

CS 300 teaches you the fundamentals of computer systems, using the C and C++ programming languages. C and C++ are the two most widely used systems programming languages in industry today; millions of programs including your operating system and the web browser you're using to view this page are written in C and C++.

C and C++ are valuable for every software engineer to know. They are powerful, but also dangerous, tools that give you more control over your computer, and more insight into its magic, than almost any other language.


C is an old programming language – it's been around since the 1970s! But despite its simple syntax, it is very powerful and versatile. We will go over the language in lectures, but lectures will move quickly, so additional reference material can be useful.

We recommend these resources:


C++ is a popular language for low-level systems coding, and unlike C, its predecessor, it comes with an extensive data structure library and high-level abstraction facilities. Though the course uses C++, it is about systems programming, and we will not use (or teach) the complex object-oriented features in C++ and attempt to avoid its most confusing concepts.

That said, getting familiar with C++'s data structures and libraries will be useful. You can get this information from free resources on the web. Some web resources are almost overwhelmingly detailed, but don't despair! It often works to scroll through reference pages for example code, which can be more concise and clear than the English-language reference material.

We recommend the following resources for C++:

Acknowledgment: We thank Eddie Kohler and Harvard's CS 61 course for some of the above references, which we've reproduced with permission in modified form here.