Workshop: Deep C - a two day course for experienced programmers - Day 2/2

Day 2/2

This course is aimed at experienced programmers that would like to further deepen their understanding and knowledge of this blunt and fascinating programming language. Throughout the course we will often refer to ISO/IEC 9899 (The C standard) and try to understand what modern compilers are allowed to do, and often will do, when optimizing code or porting between different architectures. We will also use the opportunity to discuss best practices and modern techniques for developing small and large systems in C.

The course will start with a solid re-introduction to the C programming language before we dive into the deep where we will learn more about:

  • The memory model, sequencing and sequence points
  • Unspecified and undefined behaviour
  • The different C standards (K&R, ANSI C, C99, C11, C18)
  • History and spirit of C
  • Portability and optimization issues
  • Working with pointers, arrays and structures
  • Preprocessing, translation, linking and execution
  • Modern development techniques and design issues
  • Security vulnerabilities, exploits and mitigation strategies
  • and more...

While the course is aimed at people that already know C, experienced programmers with a solid understanding of other compiled languages like Java, Fortran, Swift, C++, C# or Rust might benefit from this course as well.