An Introduction to the C Programming Language and Software Design was written with two primary objectives. The first is to introduce the C programming language. The second key objective is to introduce the basic concepts of software design. At one-level this is C-specific: to learn to design, code and debug complete C programs. At another level, it is more general: to learn the necessary skills to design large and complex software systems.
Free C Books
“88 C Programs”, by JT Kalnay, contains C programs used to teach C programming. The programs are presented in an order that presents the simplest, most straightforward aspect of a new element first. Subsequent programs present the more subtle or confusing aspects of a new element.
“Learn C The Hard Way: A Clear & Direct Introduction To Modern C Programming”, by Zed A. Shaw, is available online. The purpose of this book is to get you strong enough in C that you’ll be able to write your own software in it, or modify someone else’s code.
“A to Z of C”, by R. Rajesh Jeba Anbiah & K. Joseph Wesley, is an evolving non-profit book on C/DOS/Turbo C programming. Each chapter of this book can be downloaded in pdf format.
This document explains how to construct a compiler using lex and yacc. Lex and yacc are tools used to generate lexical analyzers and parsers. I assume you can program in C and understand data structures such as linked-lists and trees.
Bison is a general-purpose parser generator that converts an annotated context-free grammar into an LALR(1) or GLR parser for that grammar. Once you are proficient with Bison, you can use it to develop a wide range of language parsers, from those used in simple desk calculators to complex programming languages.
Programming in C: UNIX System Calls and Subroutines using C by A. D. Marshall. This includes Lecture notes + integrated exercises, solutions and marking.
This book is a tutorial on image processing. Each chapter explains basic concepts with words and figures, shows image processing results with photographs, and implements the operations in C. Explains the basic concepts of analyzing and enhancing digital images. Author has distilled image processing down to its essentials and clearly explains how to do it.
The product of a unique collaboration among four leading scientists in academic research and industry, Numerical Recipes is a complete text and reference book on scientific computing.
These notes are part of the UW Experimental College course on Introductory C Programming.