Scientists and engineers today have at their disposal a wide range of specialized computer-based problem-solving environments. However, many colleges and universities continue to believe that learning a programming language is an indispensable part of a science and engineering education. C and its derivatives are now the most widely taught programming languages, and they play an essential role in scientific and engineering computing. The problem-solving skills required to write programs in C are important for mastering other technical computing tools and, as the need arises, for learning other languages. This text presents the essentials of the C language, concentrating on what engineering and science students need to know to solve typical computational problems. It uses a learn-by-doing approach, with many examples of complete programs and exercises drawn from science and engineering disciplines. The text is written for undergraduate and graduate students who have had no previous formal introduction to a programming language. However, the text does assume that students are familiar with basic computer hardware, terminology, and applications.