Introduction to Computer Science and Java Programming Intro to Programming 1. Elements of Programming 1.1 Your First Program 1.2 Built-in Types of Data 1.3 Conditionals and Loops 1.4 Arrays 1.5 Input and Output 1.6 Case Study: PageRank 2. Functions 2.1 Static Methods 2.2 Libraries and Clients 2.3 Recursion 2.4 Case Study: Percolation 3. OOP 3.1 Using Data Types 3.2 Creating Data Types 3.3 Designing Data Types 3.4 Case Study: N-Body 4. Data Structures 4.1 Performance 4.2 Sorting and Searching 4.3 Stacks and Queues 4.4 Symbol Tables 4.5 Case Study: Small World Computer Science 5. Theory of Computing 5.1 Formal Languages 5.2 Turing Machines 5.3 Universality 5.4 Computability 5.5 Intractability 9.9 Cryptography 6. A Computing Machine 6.1 Representing Info 6.2 TOY Machine 6.3 TOY Programming 6.4 TOY Virtual Machine 7. Building a Computer 7.1 Boolean Logic 7.2 Basic Circuit Model 7.3 Combinational Circuits 7.4 Sequential Circuits 7.5 Digital Devices Beyond 8. Systems 8.1 Library Programming 8.2 Compilers 8.3 Operating Systems 8.4 Networking 8.5 Applications Systems 9. Scientific Computation 9.1 Floating Point 9.2 Symbolic Methods 9.3 Numerical Integration 9.4 Differential Equations 9.5 Linear Algebra 9.6 Optimization 9.7 Data Analysis 9.8 Simulation Related Booksites Web Resources FAQ Data Code Errata Lectures Appendices A. Operator Precedence B. Writing Clear Code C. Glossary D. TOY Cheatsheet E. Matlab Online Course Java Cheatsheet Programming Assignments 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. A key feature of the book is the manner in which we motivate each programming concept that we address by examining its impact on specific applications, taken from fields ranging from materials science to genomics to astrophysics to internet commerce. This approach highlights the essential idea that mathematics, science, engineering, and computing are intertwined in the modern world. It also both reinforces and takes advantage of students' preparation in high-school math and science as they learn programming. 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. For self-study. You can begin learning to program using the textbook and this booksite. Section 1.1 contains detailed instructions for installing a Java programming environment on your system. Last modified on May 21, 2011. Copyright © 2000–2019 Robert Sedgewick and Kevin Wayne. All rights reserved.