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.