This book is now obsolete Please use CSAwesome instead.

1.1. Preface

I, Barbara Ericson, an assistant professor in the school of information at the University of Michigan published this book using a modified BSD license to encourage you to use it, change it, and modify it for your own purposes. I would appreciate knowing what you think if you do use this book, and I would love to see any modifications or additions you make.

1.1.1. New Ebook

Beryl Hoffman, of the Mobile CSP group, has been creating a new ebook and curricular materials based on this ebook for teachers for the 2019-2020 AP CSA course. This ebook is a complete textbook for AP CSA. Go to https://runestone.academy/runestone/default/user/register and use csawesome as the course name to access the new ebook.

1.1.2. About the Exam

This book is intended to help you review for the Advanced Placement Computer Science A Exam. It was originally created as a review, but has been slowly becoming a complete textbook for the course as well.

For more information on the exam see https://apstudent.collegeboard.org/apcourse/ap-computer-science-a/exam-practice.

The exam has two parts and takes 3 hours. The first part has 40 multiple-choice questions. The second part has 4 free response questions were you have to write Java code by hand. In the past the multiple choice question part was 1 hour and 15 minutes, but as of spring 2016 it is 1 hour and 30 minutes. The free response part will also be 1 hour and 30 minutes as of spring 2016.

1.1.3. Acknowledgements

We gratefully acknowledge the use of the Jobe server from the University of Canterbury, New Zealand. The Java programs in this eBook are actually running on the Jobe server.

Special thanks also to the following people that we have collaborated with:

  • Jeff (Jochen) Rick made great contributions to the Parsons problems (mixed up code problems).

  • Philip Guo who created the Java Visualizer, which we link to. We would love to embed it in this ebook, but need someone to do that.

  • Paul Resnick at the University of Michigan for hosting us all at the summer 2016 hackathon for Runestone Interactive and for his input into the design of the instructor dashboard.

  • Brad Miller and David Ranum and the students at Luther College, who created the Runestone Interactive platform. Brad Miller has been keeping it going for years.

Thank you also to the National Science Foundation for supporting our ebook work through several grants: Grant No. 1432300, 1138378, and 1228352.

Any opinions, findings, and conclusions or recommendations expressed in this material are those of the authors and do not necessarily reflect the views of the National Science Foundation.

Google has supported this work through their Google RISE Awards: TFR14-03256, TFR14-00363, and TFR-16-01052. They have also supported our efforts to help more under-represented students succeed in their AP CS A courses and on the exam.

Any opinions, findings, and conclusions or recommendations expressed in this material are those of the authors and do not necessarily reflect the views of the Google.

1.1.4. Contributors

The following people have contributed to this ebook:

Several students at Georgia Tech have helped review the eBook:

  • Emily Cahil

  • Bre’Ana Deen

  • Kantwon Rogers

  • Hemanth Koralla

  • Ikenna Omekam

  • Gabriel Galarza

  • Ja’Quan Taylor

  • Nimish Todi

  • Ashraf Younis

  • Sana Ajani

  • Yamini Nambiar

  • Andrew Teachout

  • Sydni Peterson

  • Bhavika Devnani

  • Stephanie Remy

Many others have been involved in the creation of content for the eBook (including high school students).

  • Atiba Nkosi Kee

  • Robert McKenzie - created videos explaining concepts (arrays, interfaces, searching)

  • Nicole Guobadia - created videos explaining concepts (recursion)

  • Daniel Boaitey - created free response videos from 2014 questions.

  • Christy Zachary - created free response videos and Java executable examples

  • Javier Rodriguez - added a new exam (non-timed #1)

  • Gabby Jackson - added new exams (non-timed #2, #3, and #4)

  • Sofia Moin - added a video on variables

  • Gerald Nash - added many free response questions for arrays, 2D arrays, and lists

  • Sabrina Seibel - added free response question 4 from 2016 - StringFormatter and added questions to the code practice problems at the end of the 2d array chapter and the OO chapter.

  • Julian Hamelberg - worked on free response questions - seating chart A and B

  • Christine Hsieh - added mixed up code problems at the end of the array chapter and code practice problems

  • Carlos Diaz - fixed problems and added code highlights

  • Avery Rosh - found an error in one of the 2D array questions

  • JP Fasano - found an error in one of the non-timed exams

  • Srikar Yendapally - added code problems to the 2D array chapter

  • Kiran Ruston - added new questions to the free response problems at the end of the ebook.

  • Rachel Chagon - found an error in one of the hard multiple-choice questions in the conditional chapter.

  • Juan Vega - added a new practice exam

1.1.5. License

Barbara Ericson barbarer@umich.edu January, 2014 All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

  • Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.

  • Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

  • Neither the name of the <organization> nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

You have attempted of activities on this page