Joshua Crotts took a chance on himself, on his computer science skills, on his love of teaching, time-management discipline and over-riding belief he could do what is almost never done -- as a Ph.D. student, write a difference-making computer science textbook while juggling a formidable research -and -teaching load at the Luddy School of Informatics, Computing, and Engineering.
Mission accomplished.
Nearly a year in the writing, Principles of Computer Science: An Invigorating, Hands-on Approach is a 754-page book that brings computer science to life for beginners while challenging the more advanced.
“Instead of just teaching you how something works,” Crotts says, “it shows you how it works by designing your own programming language.
“Most of the time you’re using a beginning language such as Java or Python. This book is no exception to this practice, but we opt to design our own language to exemplify concepts such as functional programming, logic programming, different ways of modeling computation and solving practical problems.”
Crotts’ Ph.D. research centers on developing better ways to teach computer science. He says the market is flooded with introductory textbooks that address similar topics and present them in a linear way, but “don’t do it well.”
“I wanted to take a different approach. Many times, textbooks leave out fundamentals like math and logic. Those are the things that you really need to pursue a career in computer science. It’s not just about programming; it’s about how to think critically and how to problem solve. This book aims to correct this pedagogical issue.”
Crotts’ book includes more than 250 computer science exercises to challenge students across all levels.
“There is no shortage of things to explore,” he says. “You’re not just reading to get to the end of it. You can practice a lot with what’s in there. That’s beneficial because computer science is not a static career. You have to practice and practice to get better.”
Crotts, who started programming when he was 14 years old, teaches Luddy’s Introductions to Software Systems class in addition to his research and writing.
How big a deal is this? Sam Tobin-Hochstadt, Luddy associate professor of computer science and director of undergraduate studies for computer science, as well as one of Crotts’ Ph.D. advisors, has never seen it before.
“Publishing a textbook while a student is extremely impressive,” Tobin-Hochstadt says. “I don't know any other students who have accomplished that. Not only that, Joshua finished his textbook while also teaching in the classroom and conducting research to improve our understanding of how students learn to program.”
Inspiration and motivation came from Daniel Friedman, Luddy Professor of Computer Science, and a giant in the field for nearly 50 years as a well as a prolific writer.
Friedman was instrumental in Crotts coming to IU for his Ph.D. after Crotts finished his bachelor’s and master’s degrees at the University of North Carolina-Greensboro.
Several Zoom sessions with Friedman and a visit to Bloomington made Luddy the obvious choice.
“Before I was admitted, he invited me to his house,” Crotts says. “I imagine that’s unusual for professors to do. That was a warm welcome. I thought IU would be a good fit.”
Crotts started writing the book in August of 2022 and finished by August of 2023. It came out last October with a target audience of high school juniors and seniors, and college students.
“What I wanted to do is what actually came to fruition,” Crotts says. “It’s primarily aimed at people who might not know if they want to go into computer science and want to get a taste of the discipline. It’s also beneficial for people who are into computer science because there are a lot of advanced topics. It walks you through the very basics to then writing/designing an extensive computer programming language.”
Crotts initially wanted to give the book away because “I’m of the ideology that everything should be free for everyone to access.”
Then book publishing expense reality kicked in. Crotts contacted several publishers. Most weren’t interested in a textbook from a first-year computer science Ph.D. student. J Ross Publishing took a chance because “they thought the draft was well written and seemed a good fit for their market,” Crotts says.
The textbook reflects Crotts’ love of teaching, programming and education.
“I like problem solving, building new things and helping people. I’d see them struggle in class. If a teacher wasn’t explaining it clearly enough, I would try to break it down and make it more understandable for them.”
Crotts expects to finish his Ph.D. by 2027. He’s also working on a second textbook for a Java course he teaches. He hopes to become a research scientist at a company or a professor at a research or teaching university.
“I love teaching and for this book, I put my heart and soul into it.”