Useful websites for algorithm designers and programmers

I’ve been lax the last six months on my blog, working instead on Campy (a C#/GPU programming language extension). Now that that is slightly under control, time to get back to the blog. And, by the way, the whole reason for Campy is to implement popular algorithms to run on a GPU, I thought I’d take some time to review what information is available on the internet on algorithms. The following is a list I’ve been working on for a few months. It is by no means a complete list. But, I hope it covers some of the more popular sites. The entries are not in any particular order. Note, this list does not include parallel algorithms, which will be a post unto itself, nor the seemingly required AI algorithms you must have nowadays.

In all resources, it’s important to evaluate the website for authority, search functionality, the range of implementation languages, and the number of algorithms listed. And a bit of skepticism, as I found over the years, many algorithms have typos and errors.

Compendiums

https://www.programmingalgorithms.com/

The home page of this website displays recently submitted implementations. However, at the top, the menu provides categorized implementations. The implementations provided are in a variety of programming languages, with examples. The code is not complete, and as is, won’t compile and run without driver code and framework. There are some glaring omissions. For example, binary and general tree algorithms are not at all included, and Tarjan’s SCC.

https://rosettacode.org/wiki/Rosetta_Code

This huge website has over 847 algorithms, implemented in hundreds of languages. A discussion of the algorithm is presented for each.

https://en.wikipedia.org/wiki/Rosetta_Code

https://en.wikibooks.org/wiki/Algorithms

This website is more like an introductory text on algorithm design and derivation instead of a website that enumerates algorithms. As such, it is difficult to find specific algorithms one may want to find.

https://www.toptal.com/developers/sorting-algorithms

A nice demonstration of different sorting algorithms with pseudo code.

http://bigocheatsheet.com/

A website describing the complexity of some basic data structures and sorting algorithms. Links to Wikipedia pages for the algorithms.

https://projecteuler.net/

As noted on the website, “Project Euler is a series of challenging mathematical/computer programming problems that will require more than just mathematical insights to solve.” This site is a great reference for a class instructor looking for some standard problems to present.

https://dmoztools.net/Computers/Algorithms/

A directory of links to various websites on algorithms, mostly undergraduate and graduate class material.

https://xlinux.nist.gov/dads/

An excellent compendium of algorithms. Includes a Google search. Each algorithm description follows a standard format, and includes links to various implementations.

http://www.softpanorama.org/Algorithms/index.shtml

A website that is dedicated to help the motivated software developer in continuing education and dealing with various job-related problems. The list of algorithms is fairly nice, but it is directory oriented with no search.

http://www.geeksforgeeks.org/fundamentals-of-algorithms/

Similar to Softpanorama, and more with a more up-to-date feel, GeeksForGeeks has a good list of algorithms and implementations. The site has a number of self-study guides.

http://calgo.acm.org/

A list of algorithms collected over the years. Some of the algorithms are hard to follow, using archaic programming languages and pseudo-code.

http://www.netlib.org/

A collection of mathematical software, papers, and databases.

https://en.wikipedia.org/wiki/Algorithm

https://en.wikipedia.org/wiki/List_of_algorithms

What can be said about Wikipedia? A great resource for anyone.

 

Products

http://demonstrations.wolfram.com/index.html

As it says in its website, “the Wolfram Demonstrations Project is an open-code resource that uses dynamic computation to illuminate concepts in science, technology, mathematics, art, finance, and a remarkable range of other fields.” Although the implementations are in the Wolfram Language, they are an interesting read.

https://en.wikipedia.org/wiki/Wolfram_Research

http://www.algorithmic-solutions.com/

The LEDA system. Source code for free system available with purchase.

Textbook companions

http://www3.cs.stonybrook.edu/~skiena/combinatorica/

Companion website for Computational Graph Theory with Combinatorica.

http://jeffe.cs.illinois.edu/teaching/algorithms/

On online textbook of algorithms for a undergrad/grad class. No search.

http://algs4.cs.princeton.edu/home/

This is the companion website to Sedgewick’s book on algorithms (Amazon). It is a great website describing many important algorithms, although the implementations are not easy to read, and mostly in Java, which you have to sometimes fish around to find. But, there is a nice search text box tool in the main page, which can help you find specific algorithms.

http://www3.cs.stonybrook.edu/~algorith/

Companion website to The Algorithm Design Manual contains 70 of the most popular algorithms.

https://mitpress.mit.edu/books/introduction-algorithms

This book, known as CLRS, is a famous textbook used in countless courses. The book can be found online and employes pseudo-code to describe algorithms. It is an essential reference for any programmer or algorithm designer.

 

Reference aggregator and database websites

https://scholar.google.com/

https://dl.acm.org/

http://ieeexplore.ieee.org/Xplore/home.jsp

https://arxiv.org/

 

 

Posted in Tip