Addison-Wesley 75 ARLINGTON STREET, SUITE 300 BOSTON, MA 02116 Dear Colleague, Are all of the science and engineering students at your institution taking courses in CS? Are your CS enrollments declining, in part because students want to work with interesting applications, not usually found in CS1 texts? Are students and faculty complaining that your CS1 course is not relevant? Over the past decade, we have been developing at Princeton a course based on an interdisciplinary approach to computer science that addresses these questions by appealing to all students with a general interest in science and engineering. Our approach is to teach programming in the context of interesting applications in science, engineering, and commercial computing, leveraging familiar high-school science and math while at the same time preparing students to use computers effectively in later courses. For CS majors, we provide a solid introduction to Java programming and a full CS1 curriculum. Concepts are motivated by applications, and our scientific approach prepares students to learn computer science in depth later in the curriculum. For science and engineering majors, we teach programming skills in a modern programming environment. We develop a full programming model including graphics, image processing, and sound that students can immediately put to use. Most important, students learn that computation is not merely a tool, but an integral part of the modern world that pervades scientific inquiry and commercial development. We have used this approach for thousands of undergraduates, and are rapidly approaching our goal of meeeting the needs of all science and engineering students (half of Princeton undergraduates) in a single course. Our number of CS majors and the number of students doing interdisciplinary work that involves computing are both rapidly increasing. We encourage you to request a copy of our new book Introduction to Programming in Java — An Interdisciplinary Approach to review and consider for your introductory programming course. For more information, send your request to computing@aw.com. To see the scope of the resources supporting the book and a sample chapter, please visit our booksite www.cs.princeton.edu/IntroProgramming. Introduction to Programming in Java An Interdisciplinary Approach Robert Sedgewick and Kevin Wayne CONTENTS Preface 1 Basic Elements of Programming Your First Program Built-in Types of Data Conditionals and Loops Arrays Input and Output Case Study: Page Rank 2 Functions Static Methods Libraries and Clients Recursion Case Study: Percolation 3 Object-Oriented Programming Data Types Creating Data Types Designing Data Types Case Study: N-body simulation Inheritance 4 Algorithms and Data Structures Performance Sorting and Searching Stacks and Queues Symbol Tables Case Study: Small World Phenomenon Please feel free to e-mail us directly with any comments or questions that you might have about this book. Best regards, Bob Sedgewick Kevin Wayne Context rs@cs.princeton.edu wayne@cs.princeton.edu 650 pages 230 figures, 120 programs, 450 exercises ISBN 0-321-49805-4 © 2008 A D D I S O N - W E S L EY C O M P U T I N G . L E A D I N G AU T H O R S . QUA L I T Y P RO D U C TS