Study group for C++ - from Journeyman to Master

[this project is hosted on github]
The goal of this study group is to become masters of C++ as a group, not only as a random bunch of clever individuals. Together we will systematically build up our knowledge about this extremely powerful but also difficult programming language.

First of all we will focus on learning the details of the language by carefully reading through the C++ book, namely The C++ Programming Language by Bjarne Stroustrup. The study group will be quiz-driven. We read 50 to 100 pages of C++ theory every week. Then we meet for one hour to solve and discuss related C++ questions. In the meetings we will also discuss good and bad practices and we will learn about the hidden gems and pitfalls of C++.

This is certainly not a beginners course in C++ and programming - it is an advanced study group. We will keep a very high pace and everybody is expected to prepare themselves properly before each meeting. The amount of preparation needed before each meeting depends on your background. Some might spend just 1-2 hours skimming through the pages of theory before each meeting, while others will need to do a lot of additional practical programming and exercises to be fully prepared for the meetings.

As a pre-requisite for this study group everybody is expected to have completed the book Accelerated C++ by Andrew Koenig and Barbara E. Moo. This is probably the best introductory text to modern C++, and it focuses on how the language should be used more than how it might be used.

Each member of the study group will get a copy of these three books:

       

To prepare for each meeting, please read through the following chapters in the Stroustrup book:

Week #1 : (64 pages)

    Chapter 1: Notes to the Reader
    Chapter 2: A Tour of C++ 
    Chapter 3: A Tour of the Standard Library
    
    Questions for this meeting (quiz, quiz w/notes)

Week #2: (74 pages)
    Chapter 4: Types and Declarations
    Chapter 5: Pointers, Arrays, and Structures
    Chapter 6: Expressions and Statements

    Questions for this meeting (quiz, quiz w/notes)

Week #3: (78 pages)
    Chapter 7: Functions
    Chapter 8: Namespaces and Exceptions
    Chapter 9: Source Files and Programs

    Questions for this meeting (quiz, quiz w/notes)

Week #4: (78 pages)
    Chapter 10: Classes
    Chapter 11: Operator Overloading

    Questions for this meeting (quiz, quiz w/notes)

Week #5: (54 pages)
    Chapter 12: Derived Classes
    Chapter 13: Templates

    Questions for this meeting (quiz, quiz w/notes)

Week #6: (72 pages)
    Chapter 14: Exception Handling
    Chapter 15: Class Hierarchies

    Questions for this meeting (quiz, quiz w/notes)

Week #7: (149 pages)
    Chapter 16: Library Organization and Containers
    Chapter 17: Standard Containers
    Chapter 18: Algorithms and Function Objects
    Chapter 19: Iterators and Allocators

    Questions for this meeting (quiz, quiz w/notes)

Week #8: (108 pages)
    Chapter 20: Strings
    Chapter 21: Streams
    Chapter 22: Numerics

    Questions for this meeting (quiz, quiz w/notes)

Week #9: (100 pages)
    Chapter 23: Development and Design
    Chapter 24: Design and Programming
    Chapter 25: Roles of Classes

    Questions for this meeting (quiz, quiz w/notes)

Week #10: (176 pages)
    Appendix A: The C++ Grammar
    Appendix B: Compatibility
    Appendix C: Technicalities
    Appendix D: Locales
    Appendix E: Standard-Library Exception Safety