About the book
This book is based on notes, demo code, and coding exercises I have written and used over the past 10 years of teaching AP Computer Science A at Marlborough School in Los Angeles. Various versions of this content have been published previously on my class webpages with open source licensing.
In our Computer Science Program, we use, contribute to, and publish free and open source software (FOSS) projects and open educational resources. We use the Processing language and software for our introductory computer programming course. Processing is a simplified version of Java that provides a framework for computer graphics. It is a great language for learning to code, but you can also use more advanced Java concepts (e.g. classes) and you have access to OpenGL graphics programming functionality (e.g. 3D graphics, coordinate transformations, texture mapping). In AP Computer Science, in addition to completing the coding exercises in this book, students work on a sofware project throughout the school year, using the Processing libraries from Java. The project gives the student an opportunity to put into practice all of the concepts we discuss in the book.
The text for the book is written in Markdown,
and the book is built with Pandoc,
a universal document conversion tool. Pandoc uses LaTeX, a mathematical
typesetting language, for typesetting. The build process, which
creates both the print (pdf) and web (HTML) versions of the book is
orchestrated by make,
which is an old Unix tool that is still in wide use. During the
build process, all the code examples are compiled and run, and the
output is saved and included in the book. The phyllotaxis cover
image and the time complexity plot were written in Processing, and
the source code is included in the Processing Libraries
appendix.
I would like to thank both former and current administrations of Marlborough School who have encouraged our Computer Science Program to support and engage with the open source software community. I would also like to thank all of my APCS students over the last decade, and especially the 2025-26 class who were my final proof readers for all the examples and code exercises in the book (Adison ’28, Alexis ’28, Ally ’28, Arabella ’28, Bridget ’27, Brooke ’27, Chloe ’26 Crystal ’28, Elissa ’28, Kira ’28, Sam ’26, Sarah ’28, Sofia ’28, Terin ’27), as well as my unofficial teaching assistant Jasmine ’28 who completed the course last year and was an invaluable resource for this year’s students.
Finally, I would like to thank my wife Laura Jane for always encouraging me to explore, to create, and to share with others.