Advanced C Programming

(detailed course outline)

The first part of this two-part course presents C's run time environment (text, stack, data, BSS, heap program areas), the relationship between arrays and pointers, and the C library routines for dynamic storage allocation, string handling, memory to memory conversions, and file I/O. The second part of the course is a series of techniques that help practicing C programmers become highly proficient with the C language. Starting with sequence guarantee points, the course moves on to other topics, such as deciphering complex pointer expressions with the Right-Left Rule, creating multi-dimensional arrays at run-time, and customizing dynamic memory allocators. This course also presents many techniques for C debugging, which include assertions, compile-time flags, and selective debug prints, all of which are independent of debuggers and operating systems. All source code programs conform to the ANSI C standard for portability.