# Algorithms

## 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.

https://www3.cs.stonybrook.edu/~skiena/373/

*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?

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

*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

http://www.programming-challenges.com

http://acm.cs.buap.mx/downloads/Programming_Challenges.pdf

## Mr. Graham Langston — Algorithm Workshop Notes

- Linear & Binary Search,
January 30, 2014

http://en.wikipedia.org/wiki/Collatz_conjecture - Sorting,
February 6, 2014

http://en.wikipedia.org/wiki/Sorting_algorithm - Flood Fill,
February 13, 2014

http://en.wikipedia.org/wiki/Flood_fill - CCC Practice, February 20, 2014
- Queues & Stacks, February 27, 2014
- Dijkstra's Algorithm,
March 6, 2014

http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm

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. - Encryption, March 13, 2014
- Spans, April 3, 2014
- Graphics, April 10, 2014
- DFA (Deterministic Finite Automation), April 17, 2014
- , April 24, 2014
- , May 1, 2014

## Resources

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

http://sist.sysu.edu.cn/~isslxm/DSA/textbook/Skiena.-.TheAlgorithmDesignManual.pdf

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

http://www.comp.nus.edu.sg/~stevenha/myteaching/competitive_programming/cp1.pdf

## Algorithm Tutorial

http://www.topcoder.com/tc?d1=tutorials&d2=alg_index&module=Static

## 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

http://codility.com/