Appendix B. More resources

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.

Java

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.

    • Covers lambdas, streams, and modern functional mechanisms in Java

    • Examples use the latest LTS (long-term-support) version of Java, Java 11

    • Covers wide variety of modern Java topics, which will help many developers who learned Java in the pre-Java 8 era

Data structures and algorithms

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.

    • Comprehensive and rigorous in its coverage.

    • Its teaching style is sometimes seen as less approachable than other texts, but it is still an excellent reference.

    • Pseudocode is provided for most algorithms.

    • A fourth edition is being developed, and because this book is expensive, it may be worth looking into when the fourth edition is due to be released.

  • Robert Sedgewick and Kevin Wayne, Algorithms, 4th ed. (Addison-Wesley Professional, 2011), http://algs4.cs.princeton.edu/home/.

    • An approachable yet comprehensive introduction to algorithms and data structures

    • Well organized with full examples of all algorithms in Java

    • Popular in college algorithm classes

  • Steven Skiena, The Algorithm Design Manual, 2nd ed. (Springer, 2011), www.algorist .com.

    • Different in its approach from other textbooks in this discipline

    • Offers less code but more descriptive discussion of appropriate uses of each algorithm

    • Offers a “choose your own adventure”-like guide to a wide range of algorithms

  • Aditya Bhargava, Grokking Algorithms (Manning, 2016), www.manning.com/books/grokking-algorithms.

    • A graphical approach to teaching basic algorithms, with cute cartoons to boot

    • Not a reference textbook, but instead a guide to learning some basic selected topics for the first time

    • Very intuitive analogies and easy-to-understand prose

    • Example code is in Python

Artificial intelligence

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.

    • The definitive textbook on AI, often used in college courses

    • Wide in its breadth

    • Excellent source code repositories (implemented versions of the pseudocode in the book) available online

  • Stephen Lucci and Danny Kopec, Artificial Intelligence in the 21st Century, 2nd ed. (Mercury Learning and Information, 2015), http://mng.bz/1N46.

    • An approachable text for those looking for a more down-to-earth and colorful guide than Russell and Norvig

    • Interesting vignettes on practitioners and many references to real-world applications

  • Andrew Ng, “Machine Learning” course (Stanford University), www.coursera .org/learn/machine-learning/.

    • A free online course that covers many of the fundamental algorithms in machine learning

    • Taught by a world-renowned expert

    • Often referenced as a great starting point in the field by practitioners

Functional programming

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/.

    • A classic introduction to functional programming often used in introductory computer science college classes

    • Teaches in Scheme, an easy-to-pick-up, purely functional language

    • Available online for free

  • Pierre-Yves Saumont, Functional Programming in Java (Manning, 2017), www .manning.com/books/functional-programming-in-java.

    • Gives a basic introduction to some functional programming utilities in the Java standard library

    • Shows you how to use Java in a functional way

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
18.225.255.134