Classic Computer Science Problems in Java
David Kopec
  • MEAP began June 2020
  • Publication in January 2021 (estimated)
  • ISBN 9781617297601
  • 225 pages (estimated)
  • printed in black & white
Sharpen your coding skills by exploring established computer science problems! Classic Computer Science Problems in Java challenges you with time-tested scenarios and algorithms. You’ll work through a series of exercises based in computer science fundamentals that are designed to improve your software development abilities, improve your understanding of artificial intelligence, and even prepare you to ace an interview. As you work through examples in search, clustering, graphs, and more, you'll remember important things you've forgotten and discover classic solutions to your "new" problems!

About the Technology

In any computer science classroom you’ll find a set of tried-and-true algorithms, techniques, and coding exercises. These techniques have stood the test of time as some of the best ways to solve problems when writing code, and expanding your Java skill set with these classic computer science methods will make you a better Java programmer.

About the book

Classic Computer Science Problems in Java will teach you techniques to solve common-but-tricky programming issues. You’ll explore foundational coding methods, fundamental algorithms, and artificial intelligence topics, all through code-centric Java tutorials and computer science exercises. As you tackle examples for search algorithms, graph algorithms, neural networks, and more, you’ll see how cutting-edge fields like AI remain based in the core disciplines of computer science. With each new problem you crack, you’ll better understand the connections between classic computer science and the real-world challenges you face every day.
Table of Contents detailed table of contents

0 Introduction

0.1 Why should Java programmers read this book?

0.2 What is a classic computer science problem?

0.3 What kinds of problems are in this book?

0.4 Who is this book for?

0.5 Java versioning, source code repository, and Eclipse

0.6 No graphics, no UI code, just the standard library

0.7 Part of a series

1 Small Problems

1.1 The Fibonacci sequence

1.1.1 A first recursive attempt

1.1.2 Utilizing base cases

1.1.3 Memoization to the rescue

1.1.4 Keep it simple, Fibonacci

1.1.5 Generating Fibonacci numbers with a stream

1.2 Trivial compression

1.3 Unbreakable encryption

1.3.1 Getting the data in order

1.3.2 Encrypting and decrypting

1.4 Calculating pi

1.5 The Towers of Hanoi

1.5.1 Modeling the towers

1.5.2 Solving the Towers of Hanoi

1.6 Real-world applications

1.7 Exercises

2 Search Problems

2.1.1 Storing DNA

2.1.4 A generic example

2.2 Maze solving

2.2.1 Generating a random maze

2.2.2 Miscellaneous maze minutiae

2.3 Missionaries and cannibals

2.3.1 Representing the problem

2.3.2 Solving

2.4 Real-world applications

2.5 Exercises

3 Constraint Satisfaction Problems

3.1 Building a constraint-satisfaction problem framework

3.2 The Australian map-coloring problem

3.3 The eight queens problem

3.5 SEND+MORE=MONEY

3.6 Circuit board layout

3.7 Real-world applications

3.8 Exercises

4 Graph Problems

4.1 A map as a graph

4.2 Building a graph framework

4.2.1 Working with Edge and UnweightedGraph

4.3 Finding the shortest path

4.3.1 Revisiting breadth-first search (BFS)

4.4 Minimizing the cost of building the network

4.4.1 Workings with weights

4.4.2 Finding the minimum spanning tree

4.5 Finding shortest paths in a weighted graph

4.5.1 Dijkstra’s algorithm

4.6 Real-world applications

4.7 Exercises

5 Genetic Algorithms

5.1 Biological background

5.2 A generic genetic algorithm

5.3 A naive test

5.4 SEND+MORE=MONEY revisited

5.5 Optimizing list compression

5.6 Challenges for genetic algorithms

5.7 Real-world applications

5.8 Exercises

6 K-Means Clustering

 === 6.1 Preliminaries
=== 6.2 The k-means clustering algorithm
=== 6.3 Clustering governors by age and longitude
=== 6.4 Clustering Michael Jackson albums by length
=== 6.5 K-means clustering problems and extensions
=== 6.6 Real-world applications
=== 6.7 Exercises

7 Fairly Simple Neural Networks

7.1 Biological basis?

7.2 Artificial neural networks

7.2.1 Neurons

7.2.2 Layers

7.2.3 Backpropagation

7.2.4 The big picture

7.3 Preliminaries

7.3.1 Dot product

7.3.2 The activation function

7.4 Building the network

7.4.1 Implementing neurons

7.4.2 Implementing layers

7.4.3 Implementing the network

7.5 Classification problems

7.5.1 Normalizing data

7.5.2 The classic iris data set

7.5.3 Classifying wine

7.6 Speeding up neural networks

7.7 Neural network problems and extensions

7.8 Real-world applications

7.9 Exercises

8 Adversarial Search

8.1 Basic board game components

8.2 Tic-tac-toe

8.2.1 Managing tic-tac-toe state

8.2 2 Minimax

8.2.3 Testing minimax with tic-tac-toe

8.2.4 Developing a tic-tac-toe AI

8.3 Connect Four

8.3.1 Connect Four game machinery

8.3.2 A Connect Four AI

8.3.3 Improving minimax with alpha-beta pruning

8.4 Minimax improvements beyond alpha-beta pruning

8.5 Real-world applications

8.6 Exercises

9 Miscellaneous Problems

9.1 The knapsack problem

9.2 The Traveling Salesman Problem

9.2.1 The naive approach

9.2.2 Taking it to the next level

9.3 Phone number mnemonics

9.4 Real-world applications

9.5 Exercises

10 Interview with Brian Goetz

Appendixes

Appendix A: Glossary

Appendix B: More Resources

B.1 Java

B.2 Data structures and algorithms

B.3 Artificial intelligence

B.4 Functional programming

What's inside

  • Recursion, memoization, bit manipulation
  • Search algorithms
  • Constraint-satisfaction problems
  • Graph algorithms
  • K-means clustering
  • Genetic algorithms
  • Simple neural networks
  • Adversarial search

About the reader

For intermediate Java programmers

About the author

David Kopec is an assistant professor of computer science and innovation at Champlain College in Burlington, Vermont. He is the author of Dart for Absolute Beginners (Apress, 2014), Classic Computer Science Problems in Swift (Manning, 2018), and Classic Computer Science Problems in Python (Manning, 2019).

We interviewed David as a part of our Six Questions series. Check it out here.


placing your order...

Don't refresh or navigate away from the page.
Manning Early Access Program (MEAP) Read chapters as they are written, get the finished eBook as soon as it’s ready, and receive the pBook long before it's in bookstores.
print book $24.99 $49.99 pBook + eBook + liveBook
Additional shipping charges may apply
Classic Computer Science Problems in Java (print book) added to cart
continue shopping
go to cart

eBook $19.99 $39.99 3 formats + liveBook
Classic Computer Science Problems in Java (eBook) added to cart
continue shopping
go to cart

Prices displayed in rupees will be charged in USD when you check out.
customers also reading

This book 1-hop 2-hops 3-hops

FREE domestic shipping on three or more pBooks