The course offers an introduction to the concepts and programming in C, especially for low-level and close-to-hardware applications. Students will gain insight into the possibilities, potentials, but also challenges of programming in particularly resource-constrained environments. A central (but not exclusive) goal will be the (manual) dynamic management of memory, without resorting to automatic garbage collection, or memory safety mechanisms that compilers (often) automatically introduce.
The topics covered include, but are not limited to (as time permits):
Introduction to the Basics of C
Basic Data Types and Structures in C (structs, enums, unions, …)
Working with Pointers, Arrays and Strings
Basic Input / Output in C
Common programming errors and pitfalls
Integration of Assembler in C code
The standard C library
Remark: This course can be offered in German (depending on the group).