## Algorithmic Problem Solving

### Idea

Algorithms and algorithmic problem solving occupy a central place in computer science and engineering. Algorithmic problem solving is a great starting point for students beginning their computer science and engineering studies. While students may have been exposed to problem solving techniques during their middle and high school, they would gain a new perspective by focusing on algorithmic aspects.

Algorithmic problem solving can be approached starting with an informal notion of an algorithm. Students do not need any experience with computer programming to develop their algorithmic thinking skills. Simple English language constructions and mathematical notation are sufficient to express sophisticated algorithms.

### Organization

The material in this website is organized along several courses. Each course is a sequence of problem sets. Each problem set introduces new algorithmic ideas and builds upon the previous ones. Students are expected to write complete solutions to each problem in the set. Hints and a few sample solutions are provided.

### Resources

Algorithmic Puzzles by Anany Levitin and Maria Levitin

Mathematics for Computer Science by Lehman, Leighton and Meyer

### Acknowledgments

Most of the problems on this website are from the book, **Algorithmic Puzzles** by Anany Levitin and Maria Levitin.