Awesome C/C++ Learning Resources | Everything That You Need

Awesome C/C++ Learning Resources | Everything That You Need

C++ Learning Resources

Usage

This document contains videos and articles about different aspects of C++ programming. Best way to learn from them is to try them yourself, or in case of a lecture, read some more about this topic in C++ documentation.

Advanced topics

You should not proceed to the topics after C++ STL 10 without knowing the basics of C++ (or completing at least one series from Basics Of C++ 8 category). The content following C++ STL 10 isn’t sorted by the difficulity, everything there is considered advanced C++. You should be able to understand most of that and apply it in real world after compeling Basics Of C++ 8 category.

Purpose

This place is mostly targeted for people with basic C++ and STL knowledge. It’s supposed to improve your code’s readibility, performance and make your code more compact by using STL features.

Contributing

Create either an issue with title and link to the resource you would like to add to this document or create new branch, add some changes and create a pull request.

Comments and suggestions

Please leave your comments, thoughts and suggestions via Issues.

Table of Contents

Best learning resources for C++

Basics Of C++

C++ STL

STL Containers

STL Algorithms

STL Utilities

Advanced C++

Constexpr

Functional

Time in C++

Random

Multithreading

Type related programming

Templates

Concepts

Type deduction

SFINAE – Substitution Failure Is Not An Error

Meta-programming

C++ Memory Management

Basics of memory management

Garbage Collection

  • GC FAQ ~ Document regarding garbage collection in C++

Allocators

C++ Error Handling

C++ Application Design

C++ Object Oriented Design

C++ Design Patterns

C++ Data Oriented Design

C++ Programming Style

Generalities about C++ programming

Best practices for C++

Programing Guidelines

C++ Libraries

Embeding different languages in C++

Custom container libraries for C++

  • tree.hh ~ Tree Type container library for C++

Graphical interfaces for C++

Source: GitHub 1

C learning resources

This repository contains list of books and other resources about C programming that in my opinion are best to learn from. There are many sources but not every is correct. This way, beginners make a lot of mistakes in their code. I suggest reading books in the order I’ve provided.

Where not to learn from:

  • TutorialsPoint 1. TutorialsPoint is an good website for reference but not for learning. If you want to learn something to it’s fullest, get a book.
  • Udemy. Udemy is not good place to learn C from. Courses cost pretty much ($100). Some courses recommend using old Borland C++ Builder – learning outdated stuff is not good way to go.
  • SoloLearn. SoloLearn does not offer any course to learn C from. The website teaches you only theoretically how to do something, while your own experience teaches practically you how to do something.
  • Youtube. Learning from various youtube channels that are not-so-popular is not a good idea. You need solid place to learn from. Although, there are channels like this one 5. They introduce really bad programming practices and teach how not to program.

Where to learn from:

  • K&R book 4 is often thought as the bible of C. There are many C standards but K&R C is thought as the most common – every compiler has to support it. The most used standard is C89, although we have C99 and C11 that are more recent. This way, K&R book is always on topic. It was written by creators of C – they can’t be wrong.
    • Pros:
      • This book is written by Dennis Ritchie , who was one of the main people behind the development and design of C and UNIX.
      • This book is so well known that it’s affectionately called “K&R”, after the authors.
      • It’s been cited in many other books and is familiar to most, if not all, CS students.
      • The challenges at the end of each chapter do a great job requiring many of the skills learned up to that point. Completing the challenges is a great way of insuring that you understand the material.
    • Cons:
      • The K&R style works for old Unix mainframe command-line programs that exit after a simple task and leave the cleanup to the OS; where input is only from trusted experts; and most functions are only called internally to the program. The environment is very different today. This style will get your server pwned by hackers, or crash it due to a memory leak. You will have to learn C again to use C correctly in the real world today .
      • Some and practices are out of date, so errata and googling is needed while going through the book.
      • Assumes familiarity not only with programming concepts but some C language specifics which are not so simple for beginners.
  • C Programming: Modern approach, 2nd Edition 2
    • Pros:
      • The book really challenges you to think like a programmer by constantly asking questions that force you to solve problems, rather than telling you how to solve the problem and only asking you to write the syntax. This way helps beginner programmers to get into programming.
      • The author breaks things down into small pieces and uses examples to explain everything in a very clear way.
      • Doesn’t have exercise answers (can be counted like con)
  • Learn C the hard way 2. Just looking at the title, it may not be greatest book for newcomer to learn.
    • Pros
      • It’s not just about C. It will teach to become an over-all better programmer and give a better understanding of computer science. You are going to learn about things like testing, debugging, and sorting algorithms.
      • Includes 52 practical project ideas that include everything from pointers to stacks and queues.
    • Con: States in the preface that it is not for first-time programmers. Better check something else, if you are new to C.
  • C Programming Absolute Beginner’s Guide (3rd Edition) 2. It’s suggested to check out this book if others are too difficult for you.
    • Pro: There are 32 chapters in this book, which gives 352 pages. The short chapters make it extremely easy to use this book as a reference, and breaks everything down into small pieces that are easy to digest.
    • Con: This book, as the title suggests, is really aimed at people with no prior programming experience. Fundamentals are gone through in detail, this would be quite a slow review for someone with experience in another language.
  • (NASA C style book)[http://homepages.inf.ed.ac.uk/dts/pm/Papers/nasa-c-style.pdf 1]. This book is pretty nice place to learn proper way how to program in C to write readable code.

Please note that this list as stated on beginning, is based primarily on my opinion. If you disagree with some facts, please open issue / submit a pull request that contents are satisfying you. I am working on a C book that after review will probably get on this list. Books that I am not sure about quality:

Source: GitHub

Begin(c++) : Resources for C++ Beginners

General

Primers

Tutorials

References

Try C++

  • :earth_asia: Wandbox 2 – lets you edit, compile and run simple C++ programs in a browser
  • :earth_asia: Compiler Explorer 1 – lets you edit and compile simple C++ programs and see what assembler is produced

Community

Once You Get Comfortable

Try these intermediate-level talks that go beyond the individual features and explain how to put together the best code with them!

Bite-sized Talks

Improve Your Skills

  • :earth_asia: HackerRank sets you challenges to hone your basic programming skills
  • :earth_asia: GitHub C++ Projects are one way to learn by contributing to open source C++ projects

Source: GitHub 1

A small collection of notes and resources related to basic C++.

Stack Overflow’s Answer

This question attempts to collect the few pearls among the dozens of bad C++ books that are published every year. Unlike many other programming languages, which are often picked up on the go from tutorials found on the Internet, few are able to quickly pick up C++ without studying a well-written C++ book. It is way too big and complex for doing this. In fact, it is so big and complex, that there are very many very bad C++ books out there. And we are not talking about bad style, but things like sporting glaringly obvious factual errors and promoting abysmally bad programming styles.

C++ Crash Course

Others

Source: GitHub 1

Awesome C/C++ performance optimization resources

Contents

Talks

2013:

2014:

2015:

2016:

Articles

Manuals:

Sites/Blogs

Tools

Free

Paid

Libraries

Books

  • PDF: optimizing C++ 2 – by Agner Fog. FREE
  • Optimizing C++, WikiBooks – FREE
  • The Software Optimization Cookbook: High Performance Recipes for IA-32 Platforms, 2nd Edition
  • Video Game Optimization, Eric Preisz
  • Optimized C++: Proven Techniques for Heightened Performance, Kurt Guntheroth
  • Power and Performance: Software Analysis and Optimization, Jim Kukunas
  • Systems Performance: Enterprise and the Cloud, Brendan Gregg
  • Every Computer Performance Book, Bob Wescott
  • C++ Concurrency in Action, Second Edition, Anthony Williams

About

This list was started by Bartlomiej Filipek (@fenbf). If you like to help please read CONTRIBUTING.md instructions and just make a pull request to this repo.

License

Creative Commons License

This work is licensed under a Creative Commons Attribution 4.0 International License.

Source: GitHub 3

Awesome Curated Programming Resources

Curated Programming Resources 1

Awesome Modern C++

A collection of resources on modern C++ 4

Awesome C++

A curated list of awesome C++ (or C) frameworks, libraries, resources, and shiny things. Inspired by awesome-… stuff.
C++ Resources

Project Based Learning

A list of programming tutorials in which learners build an application from scratch. These tutorials are divided into different primary programming languages. Some have intermixed technologies and languages.
Curated list of project-based tutorials 2

ENJOY & HAPPY LEARNING!

 

 

One Comment

  1. Melly December 17, 2020 Reply

Add a Comment

Your email address will not be published. Required fields are marked *