An Introduction to the C Programming Language
and Software Design
Tim Bailey 2005
This textbook is a thorough introduction to the C programming language, with an emphasis on software design and code organisation. Many introductory textbooks teach language syntax but do not show how to apply the language features to build scalable modular software systems. This text attempts to fill the gap.
This text is currently a draft (0.6) and will be revised as time permits; some parts are more complete than others. Any constructive comments are most welcome. I have a list of intended extensions and modifications. I also maintain a list of errata for the current draft.
Listed below is complete source code for selected programs from my textbook.
Notice that, for variety, some of the implementations differ from the code that appears in the textbook. Also, some are significantly extended so as to demonstrate additional design ideas. In particular, the doubly-linked list implementation uses an arena and a free-list to manage memory allocation.
Disclaimer: While some effort has been made to ensure this code is correct, it has not undergone stringent testing, and it comes without any form of guarantee.