Welcome to the Algorithm Study project.

There are a lot of algorithms and data structures in the world of computer science; Some are common knowledge, some are less well-known. Many books discuss said algorithms, usually with a large dose of math and theory.

The algorithm study project provides tools and resources to augment the traditional study of algorithms, specifically: 1) real implementations of common and less-common algorithms in a variety of languages, and 2) visualization tools to help in gaining a deeper understanding of the algorithms.

The Implementations

Each implementation is accompanied by a discussion of the big O run time and memory limits of the algorithm. Some implementations include discussion of how the algorithm / data structure is commonly used and comparisons with similar algorithms / data structures. All implementations have test cases that exercise their functionality.

Current algorithms include list, heap and sorting algorithms. Some future categories of algorithms will include: queues, stacks, trees, graphs, searching, string manipulation and dynamic programming. The first language of implementation is Java.

The Visualizations

Seeing an algorithm do its work can be a powerful learning tool. The Algorithm Visualizer (see the link to the left), displays visually what happens as various algorithms do their work. Algorithm Visualizer currently shows a few sorting algorithms at work. Future visualizations will include lists, queues, trees, graphs and dynamic programming algorithms.

The Details

For more details about the Algorithm Study project, please look to the menu on the left. If you still have questions, send an email to the Algorithm Study mailing list.