# Introduction to Computer Science

a textbook for a first course in computer science

for the next generation

of scientists and engineers

This booksite supplements the forthcoming textbook
*Introduction to Computer Science in Java*
by Robert Sedgewick and Kevin Wayne.

## Textbook.

Our book is an interdisciplinary approach to the traditional CS1 curriculum. We teach all of the classic elements of programming, using an "objects-in-the-middle" approach that emphasizes data abstraction. The book is organized around four areas of computer science: programming, machine architecture, theory, and systems.-
*Chapter 1: Elements of Programming*introduces variables, assignment statements, built-in types of data, conditionals and loops, arrays, and input/output, including graphics and sound. -
*Chapter 2: Functions*introduces modular programming. We stress the fundamental idea of dividing a program into components that can be independently debugged, maintained, and reused. -
*Chapter 3: Object Oriented Programming*introduces data abstraction. We emphasize the concept of a data type and its implementation using Java's class mechanism. -
*Chapter 4: Algorithms and Data Structures*introduces classical algorithms for sorting and searching and fundamental data structures, including stacks, queues, and symbol tables. -
*Chapter 5: A Computing Machine*introduces an imaginary machine that is similar to real computers. We specify the machine in full detail and consider machine-language programs. -
*Chapter 6: Circuits*introduces circuits and logical design, culminating in a description of how a machine might be built from the ground up. -
*Chapter 7: Theory of Computation*introduces the scientific discipline concerned with understanding (efficient) computational phenomena, whether it be man-made, in nature, or imaginary. -
*Chapter 8: Systems*introduces the basic components of computer systems that support programming: compilers, operating systems, networks, and application systems. - Chapter 9: Scientific Computation introduces some of the most important algorithms that play crucial roles in our computational infrastructure, including numerical integration, matrix computation, data analysis, and Monte Carlo simulation.

## For instructors.

If you wish to consider adoption, please fill out this form to examine prepublication chapters or ask for more information.## For students.

This booksite contains an extensive amount of supplementary information that is intended for your use*while*programming. It includes links to program code, test data, and solutions to selected exercises. It also contains text digests of each chapter.