Principles of Computer Science

An Invigorating, Hands-On Approach

Book Cover

Description:
Learning Java is an introductory textbook on Java programming is different from others by its emphasis on test-driven development. Writing tests before designing the implementation is incredibly important for debugging purposes and understanding the desired outcome. While testing is often an afterthought in other Java textbooks (being placed at the very end or not at all, which is in some ways cruel to withhold such capabilities from the student), this text takes a different, perhaps "functional“ approach to learning Java: it introduces testing and methods from the start, followed by conditionals, recursion, and loops (on purpose in this very order). It then dives deep into data structures and the Java Collections API, including streams and generics. After this, it pivots to object-oriented programming, exceptions and I/O, searching and sorting, algorithm analysis, and eventually advanced Java/programming topics.

This ordering of topics is well adjusted to prepare students to subsequent upper-level courses in data structure or algorithm design and implementation. The approach is illuminated by numerous code snippets and the students’ understanding is consolidated by about 250 exercises covering all topics covered in the book. With this book, readers will not only learn how to program Java, but also acquire a necessary precondition for successfully writing and testing commercial software.

Purchase Links:
[Springer Store] [Amazon Store]

Resources:
[Errata]

About the Author

Joshua Crotts is a computer science Ph.D. student at Indiana University with a strong interest in computer science pedagogy, as well as programming languages and compilers. He has spoken and published papers at conferences (e.g., SIGCSE, CMNA, ICEEL) about formal logic education, automatic detection of rhetorical devices (e.g., antithesis), and inductive logic programming as a means of argument mining in science-policy articles. His current research work aims to improve the transition of CS1 (first-semester) students to the CS2 (second-semester) domain.

Luddy Hall 3025Q
700 N Woodlawn Ave
Bloomington, IN 47408