Where should you go next? This book covered a wide swath of topics, and this appendix will connect you with great resources that will help you explore them further.
As was stated in the introduction, Classic Computer Science Problems in Java assumes you have at least an intermediate knowledge of the Java language. Java has evolved quite a bit over the past few years. Here is a title that can help you get up to speed on the latest developments in the Java language, and that will help take your intermediate Java skills to the next level:
Raoul-Gabriel Urma, Mario Fusco, Alan Mycroft, Modern Java in Action (Manning, 2018), www.manning.com/books/modern-java-in-action.
To quote this book’s introduction, “This is not a data structures and algorithms textbook.” There is little use of big-O notation in this book, and there are no mathematical proofs. This is more of a hands-on tutorial to important computational problem-solving techniques, and there is value in having a real textbook too. Not only will it provide you with a more formal explanation of why certain techniques work, but it will also serve as a useful reference. Online resources are great, but sometimes it is good to have information that has been meticulously vetted by academics and publishers.
Thomas Cormen, Charles Leiserson, Ronald Rivest, and Clifford Stein, Introduction to Algorithms, 3rd ed. (MIT Press, 2009), https://mitpress.mit.edu/books/introduction-algorithms-third-edition.
This is one of the most-cited texts in computer science--so definitive that it is often just referred to by the initials of its authors: CLRS.
Robert Sedgewick and Kevin Wayne, Algorithms, 4th ed. (Addison-Wesley Professional, 2011), http://algs4.cs.princeton.edu/home/.
Steven Skiena, The Algorithm Design Manual, 2nd ed. (Springer, 2011), www.algorist .com.
Aditya Bhargava, Grokking Algorithms (Manning, 2016), www.manning.com/books/grokking-algorithms.
Artificial intelligence is changing our world. In this book, you not only were introduced to some traditional artificial intelligence search techniques like A* and minimax, but also to techniques from its exciting subdiscipline, machine learning, like k-means and neural networks. Learning more about artificial intelligence is not only interesting, but also will ensure you are prepared for the next wave of computing.
Stuart Russell and Peter Norvig, Artificial Intelligence: A Modern Approach, 3rd ed. (Pearson, 2009), http://aima.cs.berkeley.edu.
Stephen Lucci and Danny Kopec, Artificial Intelligence in the 21st Century, 2nd ed. (Mercury Learning and Information, 2015), http://mng.bz/1N46.
Andrew Ng, “Machine Learning” course (Stanford University), www.coursera .org/learn/machine-learning/.
Java can be programmed in a functional style, but it wasn’t really designed for that. Delving into the reaches of functional programming is possible in Java itself, but it can also be helpful to work in a purely functional language and then take some of the ideas you learn from that experience back to Java.
Harold Abelson and Gerald Jay Sussman with Julie Sussman, Structure and Interpretation of Computer Programs (MIT Press, 1996), https://mitpress.mit.edu/sicp/.
Michał Płachta, Grokking Functional Programming (Manning, 2021), www.manning .com/books/grokking-functional-programming.
Pierre-Yves Saumont, Functional Programming in Java (Manning, 2017), www .manning.com/books/functional-programming-in-java.
18.225.255.134