C++ Grandmaster Certification

CPPGM Written Assignment I (cheatsheet)


Prepare a document that provides an overview of the C++ language, including both the core language features and standard library architecture. The document shall be a single-page PDF and of A1 Landscape page size. The minimum font size shall be 12pt.

The document may use a range of fonts, font sizes, color, lines, code, text, block diagrams, directed/undirected graphs, flow charts, bulleted lists or any other kinds of technical writing/drawing elements you wish. The elements should be visually grouped in a top-down manner according to a hierarchical classification you deem appropriate.


You should complete Reading Assignment A and Reading Assignment C before starting this assignment.


Your work will be graded with a percentage according to the following criteria and weighting:

  • 40% Coverage: How much of the language / library features does the document cover?
  • 30% Organization: Is the hierarchy visually evident and well thought-out?
  • 20% Clarity: Do the technical elements communicate the information clearly?
  • 10% Aesthetics: Is the form of the elements and their composition visualy appealing?


Please name your document wai-<username>.pdf where <username> is your dev.cppgm.org username. For example, if your dev.cppgm.org username is fred then name the document wai-fred.pdf.

To submit please send your document as an email attachment to cppgm.org@gmail.com in the week prior to the deadline. You should expect to receive a reply email with acknowledgement of successful submission within 24 hours of your message being sent.

Honor Code

For this assignment the design and content of the document should be your own original work, and should not be discussed or shared with others.

C++14 (Optional)

If you wish, rather than using N3485 (C++11) as prescribed in RAA and RAC, you may use the latest C++14 draft instead, which is N3797. No extra credit will be given for using N3797 rather than N3485. This is entirely optional for those that wish to additionaly study the delta between C++11 and C++14.

Design Notes (Optional)

As usual for any design activity there is no clear best way to do it. We offer one approach here that you may or may not use.

Start by creating a top-down tree of the content. A reasonable first branch would be into core language and standard library.

For the core language you can further subdivide by looking at the grammar and clauses 2 through 16.

Likewise, for the standard library the later clauses provide a reasonable partitioning.

To subdivide each block thereafter, skim back over the documentation and start deciding how you want to express the content of that block. Make some notes about what kind of element(s) you want to use to represent it.

From there you will want to start planning the real estate of your A1 page. Start to map the top-down tree into actual areas on the sheet. You might have to cut-down or expand various parts to give them appropriate coverage.

Then you will want to select a technical drawing/layout application. Dia is a popular choice on Linux, but there are many other choices too.

Finally fill out the document in your application and export it to PDF.