Welcome to Cay Horstmann’s Home Page!

I grew up in Northern Germany and attended the Christian-Albrechts-Universität in Kiel, a harbor town at the Baltic sea. I received a M.S. in computer science from Syracuse University, and a Ph.D. in mathematics from the University of Michigan in Ann Arbor. I taught computer science at San Jose State University for almost thirty years and held visiting appointments at universities in Germany, Switzerland, Vietnam, and Macao. I was a “serial entrepreneur” before that was a thing, including a stint as VP and CTO of a dot com startup that went from three people in a tiny office to a public company. In my copious spare time I write books and develop online courses for beginning and professional programmers.
I am a Java Champion and ACM Distinguished Member.
Links
- My unblog
- My sole active social network presence is on Mastodon:
@cayhorstmann@foojay.social - Memorable quotes
- My résumé
- Java Almanac
- My San José State University “emeritus faculty” page
- Courses taught at SJSU
- SJSU/Udacity CS046A free online introduction into Java programming
Books
For Professional Programmers
For Computer Science Students
- Big Java | Brief Java (former title: Java Concepts)
- Big Java Late Objects | Java Concepts Late Objects
- Big C++ | Brief C++ (former title: C++ for Everyone)
- Python for Everyone
- OO Design & Patterns
From the Archives
- Java SE 8 for the Really Impatient
- Core JavaServer Faces
- Practical Object-Oriented Development with C++ and Java
- Mastering Object-Oriented Design in C++
- Mastering C++
Software
- CodeCheck is a convention-over-configuration autograder for Java, Python, C/C++, and many other languages. Now with Parsons puzzles and code tracing
- The GridWorld framework was used in the AP CS course as a case study from 2008 until 2013.
Violet is a free, easy to use UML editor.- The traffic jam simulator applet simulates the traffic flow on a freeway and shows how traffic jams are inevitable even at modest loads if too many people don't maintain their speed.
- Safe STL is a safe version of the original HP STL implementation.
- ChiWriter, an ancient word processor
The March of Progress
- 1980: C
printf("%10.2f\n", x);- 1988: C++
cout << setw(10) << setprecision(2) << fixed << x << endl;
- 1996: Java 1.0
java.text.NumberFormat formatter = java.text.NumberFormat.getNumberInstance(); formatter.setMinimumFractionDigits(2); formatter.setMaximumFractionDigits(2); String s = formatter.format(x); for (int i = s.length(); i < 10; i++) System.out.print(' '); System.out.println(s);- 2004: Java 5
System.out.printf("%10.2f%n", x);- 2008: Scala and Groovy
printf("%10.2f%n", x)Thanks to Will Iverson for the update. He writes: “Note the lack of semi-colon. Improvement!”
- 2012: Scala 2.10
println(f"$x%10.2f")
Thanks to Dominik Gruntz for the update, and to Paul Phillips for pointing out that this is the first version that is checked at compile time. Now that's progress.
- 2023: Java 21
System.out.println(FMT."%10.2f\{x}")This proposal was withdrawn in 2024.
- 2023: C++ 23
std::println("{:10.2f}", x);Thanks to Steve Gilbert for the update.