The C programming language can be used to develop both system software and application software, on any platform (Linux/Unix, Windows, Mac, embedded systems, mainframe). The popularity of C is explained by its flexibility and efficiency, its simple way to address low-level functions, and the fact that programs can easily be transferred between platforms. Also, lots of highly efficient and often even open-source software libraries have been written in C and can thus be easily called from other C programs.

This course will cover the syntax and structure of the ISO/ANSI definition of the C language (more specifically C99 and C11). The course also covers the C preprocessor, debugging tools, and build tools like configure and make.

At the end of the course, students will know the basics of ANSI C, its data types and pointers, and will be able to write C applications. This course will also focus on standard C libraries for input/output, string manipulation, and memory management.