Hello! This is the C2S2 C/C++ training - it should give you a working knowledge of how to use C and C++, as well as understanding some of the advanced capabilities that they have. By the end, you should be comfortable programming in C and C++, as well as understanding how we would set up such a project. This training is designed for all learners; whether new to programming or coming from some programming background, you should be able to get something out of it. The training is laid out below in different steps; they are best done in order, as each relies on previous concepts in order to understand. Book 1 is basic concepts, and is written for C. Book 2 moves to C++, and includes some of the advanced concepts and functionality that C++ brings.

Note that this training is not meant to give instruction on programming techniques, such as data structures and algorithms, but rather a somewhat comprehensive training of how to operate within C/C++

Prerequisites:

  • Basic familiarity with your terminal of choice (how to navigate, run commands, etc.). 
  • A code editor of your choice
  • A GitHub profile with SSH keys set up for your machine (see here - the same concepts apply even if you're doing it locally, you may just have to generate your own SSH keys; just click Enter for all of the prompts to leave them blank)

Preface: Setting Up Your Environment


"C is quirky, flawed, and an enormous success" - Dennis Ritchie, inventor of C

Book 1: Our Programs are Born (...through a C section)


"C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do it blows your whole leg off" - Bjarne Stroustrup, inventor of C++

Book 2: Becoming less C-rious (Transitioning to C++)

Polymorphism:

Functional Programming:

Concurrent Programming:

Appendices

These appendix modules don't have any formal prerequisites (can be completed nominally at any time throughout the training, although some recommendations are included), and are included as extra information to round out your knowledge of how to work with C/C++

Other Resources

These are some other resources that may help you in your journey to becoming a C/C++ programmer

  • Replit.com (formerly repl.it)
    • This is an online, browser-based IDE and compiler, allowing you to quickly sketch up sample programs and test them without worrying about a large build structure
  • Godbolt.org
    • This is a "compiler explorer" - it helps you examine how your code is compiled for different ISA's and with different compilers


Disclaimer: This training is heavily inspired by the handouts from Cornell's ECE 2400. It is to only be used for non-commercial, educational purposes.

  • No labels