Algorithm Course

Steven Skiena, Analysis of Algorithms
This online course includes slides and exercises.
Steven Skiena's introductory book on algorithms,
Programming Challenges, is recommended by
the University of Waterloo to students who
enter the Canadian Computing Competition.

Binary Stars: The Friendship That Made Google Huge
An insightful account of the relationship between hardware
and coding. It surveys developments from 2000 to current
efforts in machine learning.

What are algorithms?

Programming Challenges: The Programming Contest Training Manual. Steven S. Skiena and Miguel A. Revilla, New York: Springer, 2003.

This excellent introduction to algorithms is recommended by the Centre for Education in Mathematics and Computing. Studying algorithms is a highly effective way to improve your coding skills. The book offers a wealth of programming problems. The online judge responds to programs written in C, C++, Pascal and Java. Test your solutions at

Mr. Graham Langston — Algorithm Workshop Notes

  1. Linear & Binary Search, January 30, 2014

  2. Sorting, February 6, 2014

  3. Flood Fill, February 13, 2014

  4. CCC Practice, February 20, 2014

  5. Queues & Stacks, February 27, 2014

  6. Dijkstra's Algorithm, March 6, 2014

    My version is actually a bit different from the version on that page. Instead of finding the cost of all nodes and remembering what the best path to each actually is, it stops after finding the cost of a single destination node and simply returns the cost of the best path to that node (I'm thinking of leaving the implementation of the other features as take-home questions). Also, instead of keeping a distinct set of nodes remaining to check, it uses the original set of nodes and an array indicating which ones have already been visited. These are pretty minor differences, and the core logic remains intact.

  7. Encryption, March 13, 2014

  8. Spans, April 3, 2014

  9. Graphics, April 10, 2014

  10. DFA (Deterministic Finite Automation), April 17, 2014

  11. , April 24, 2014

  12. , May 1, 2014


The Algorithm Design Manual. Second Edition. 2008 Skiena, Steven, New York: Springer-Verlag.

Competitive Programming 3: The New Lower Bound of Programming Contests. 2011, Steven Halim and Felix Halim.

Algorithm Tutorial

An Advanced Book

Looking For A Challenge? The Ultimate Problem Set From the University of Warsaw Programming Competitions. Krzysztof Diks, Tomasz Idziaszek, Jacob Lacki and Jakub Radoszewski, Editors, 2012 (2012978-83-920897-2-8)

Codility, We Test Coders