Read more about Think Data Structures: Algorithms and Information Retrieval in Java

Think Data Structures: Algorithms and Information Retrieval in Java

(3 reviews)

Allen B. Downey

Copyright Year: 2016

Publisher: Green Tea Press

Language: English

Formats Available

Conditions of Use

Attribution-NonCommercial-ShareAlike Attribution-NonCommercial-ShareAlike


Learn more about reviews.

Reviewed by Shruti Nagpal, Assistant Professor, Worcester State University on 6/30/20

This book is intended for a Data Structures in Java course that has a prerequisite of students having basic Java knowledge. With this viewpoint, it does a good job in coming straight to the point by starting where most CS2 or follow-up advanced... read more

Reviewed by Forrest Stonedahl, Associate Professor, Augustana College on 7/18/19

While this book covers most of the major topics (linked lists, stacks, queues, binary trees, graphs, searching, sorting, asymptotic complexity analysis) of an introductory data structures book, it does so in an unconventional way. The author made... read more

Reviewed by David Kramer, Lecturer, Metropolitan State University of Denver on 6/15/19

This book is intended for a CS 2 course. Despite its being shorter than other CS 2 books I am familiar with, this book covers key topics commonly found in CS 2 courses. See the "Organization" section for comments that also relate to... read more

Table of Contents

  • Chapter 1: Interfaces
  • Chapter 2: Analysis of Algorithms
  • Chapter 3: ArrayList
  • Chapter 4: LinkedList
  • Chapter 5: Doubly-linked list
  • Chapter 6: Tree traversal
  • Chapter 7: Getting to Philosophy
  • Chapter 8: Indexer
  • Chapter 9: The Map interface
  • Chapter 10: Hashing
  • Chapter 11: HashMap
  • Chapter 12: TreeMap
  • Chapter 13: Binary search tree
  • Chapter 14: Persistence
  • Chapter 15: Crawling Wikipedia
  • Chapter 16: Boolean search
  • Chapter 17: Sorting

Ancillary Material

About the Book

Data structures and algorithms are among the most important inventions of the last 50 years, and they are fundamental tools software engineers need to know. But in my opinion, most of the books on these topics are too theoretical, too big, and too bottom-up:

  • Too theoretical: Mathematical analysis of algorithms is based on simplifying assumptions that limit its usefulness in practice. Many presentations of this topic gloss over the simplifications and focus on the math. In this book I present the most practical subset of this material and eliminate the rest.
  • Too big: Most books on these topics are at least 500 pages, and some are more than 1000. By focusing on the topics I think are most useful for software engineers, I kept this book under 250 pages.
  • Too bottom-up: Many data structures books focus on how data structures work (the implementations), with less about how to use them (the interfaces). In this book, I go “top down”, starting with the interfaces. Readers learn to use the structures in the Java Collections Framework before getting into the details of how they work.

Finally, many present this material out of context and without motivation: it’s just one damn data structure after another!

I try to alleviate the boredom by organizing the topics around an application—web search—that uses data structures extensively, and is an interesting and important topic in its own right.

This application also motivates some topics that are not usually covered in an introductory data structures class, including persistent data structures, with Redis, and streaming algorithms.

This book also presents basic aspects of software engineering practice, including version control and unit testing. Each chapter ends with an exercise that allows readers to apply what they have learned. Each exercise includes automated tests that check the solution. And for most exercises, I present my solution at the beginning of the next chapter.

This book is intended for college students in computer science and related fields, as well as professional software engineers, people training in software engineering, and people preparing for technical interviews.

I assume that the reader knows Java at an intermediate level, but I explain some Java features along the way, and provide pointers to supplementary material.

People who have read Think Java or Head First Java are prepared for this book.

About the Contributors


Allen B. Downey is an American computer scientist, professor of computer science at the Franklin W. Olin College of Engineering and writer of free textbooks.

Downey received in 1989 his BS and in 1990 his MA, both in Civil Engineering from the Massachusetts Institute of Technology, and his PhD in Computer Science from the University of California at Berkeley in 1997.

He started his career as Research Fellow in the San Diego Supercomputer Center in 1995. In 1997 he became Assistant Professor of Computer Science at Colby College, and in 2000 at Wellesley College. He was Research Fellow at Boston University in 2002 and Professor of Computer Science at the Franklin W. Olin College of Engineering since 2003. In 2009-2010 he was also Visiting Scientist at Google Inc.