Workshop: Modern C

C as a language has evolved a lot since it was first standardized in 1989, aka C89/C90/ANSI C. Among other things, C99 introduced better support for scientific computing, C11 introduced a new memory model and support for concurrency. The current version C17. Not only has the C language itself evolved, the way we use C has changed as well, often influenced by other languages and by modern ideas in software engineering.

In this 2 day course you will learn more about:
  • variable-length arrays
  • alignment specifications
  • test-driven development techniques
  • advanced and correct pointer arithmetic
  • type-generic expressions
  • static asserts
  • tools for better dignostic messages
  • better support for scientific computing
  • the new memory model and support for multi-threading
  • undefined vs unspecified behavior
  • inline functions
  • compund literals and designated initializers
  • variadic macros and advanced preprocessing techniques
  • type-generic math functions
  • anonymous structures and unions
  • writing solid code in C
  • flexible array members
  • and much more...
This is an advanced 2 day course for experienced programmers, taught by a world-class expert. You either have a strong background in a few other programming languages, and/or you know old-school C well but would like to get up to speed with a modern approach.

This course will refer to the latest C standard ISO/IEC 9899:2018 (aka C17). Most exercises will be done in an online editor, so you just need to bring a laptop with a modern browser.