Computer Science: An Interdisciplinary Approach
a textbook for a first course in computer science
for the next generation
of scientists and engineers
Textbook.Our textbook Computer Science [Amazon · Pearson · InformIT ] is an interdisciplinary approach to the traditional CS1 curriculum with Java. We teach the classic elements of programming, using an "objects-in-the-middle" approach that emphasizes data abstraction. We motivate each concept by examining its impact on specific applications, taken from fields ranging from materials science to genomics to astrophysics to internet commerce.
The first half of the book (available separately as Introduction to Programming in Java) is organized around four stages of learning to program:
- 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 highlights the idea of dividing a program into components that can be independently debugged, maintained, and reused.
- Chapter 3: Object-Oriented Programming emphasizes the concept of a data type and its implementation, using Java's class mechanism.
- Chapter 4: Algorithms and Data Structures discusses classical algorithms for sorting and searching, and fundamental data structures, including stacks, queues, and symbol tables.
The second half of the book explores core ideas of Turing, von Neumann, Shannon, and others that ignited the digital age.
- Chapter 5: Theory of Computing surveys the fundamental concepts of universality, computability, and intractability, which raise questions about the role of computation in understanding the natural world.
- Chapter 6: A Computing Machine describes a simple imaginary machine that has many of the characteristics of real processors at the heart of the computational devices that surround us.
- Chapter 7: Building a Computer considers the design of a processor, including Boolean logic, combinational circuits, and sequential circuits.
Booksite.Reading a book and surfing the web are two different activities: This booksite is intended for your use while online (for example, while programming and while browsing the web); the textbook is for your use when initially learning new material and when reinforcing your understanding of that material (for example, when reviewing for an exam). The booksite consists of the following elements:
- Excerpts. A condensed version of the text narrative for reference while online.
- Exercises. Hundreds of exercises and some solutions.
- Java code. Hundreds of easily downloadable Java programs, real-world data sets, and our I/O libraries for processing text, graphics, and sound.
- Java. Here are instructions for setting up a simple Java programming environment for Mac OS X, Windows, and Linux.
- Lecture videos. Studio-produced videos are available from InformIT.
- Online course. You can take our free Coursera MOOCs Computer Science: Programming with a Purpose (coming soon) and Computer Science: Algorithms, Theory, and Machines.
- To adopt. You can request an examination copy. ACM/IEEE cites COS 126 as a course exemplar in CS2013.
- Course materials. Lecture slides (in Keynote format) are available by request for instructors who adopt the textbook.