Algorithms for the Real World
About the course:
This undergraduate course teaches the fundamentals of algorithms and problem solving (with proofs) together with their implementation in C++. Real-world applications of these algorithms are emphasized wherever possible.
Correctness proofs and complexity analysis are stressed together with efficient C++ implementation. The courses uses problems from UVa Online judge to supplement the algorithmic concepts learnt. The lecture notes and C++ code can be used for self-study for anybody interested in algorithms and programming. A basic background in discrete mathematics and programming is all that is needed. See ``Introduction" in the lecture notes below for more information.
Lecture Notes and C++ code:
UVa Programming Assignments and C++ code solutions
Factors and Factorials solution code
Ugly Numbers solution code
3n+1 Problem (Recursion and Table Lookup) solution code
Shellsort (A Sorting problem) solution code
Critical Links (Depth-First-Search) solution code
Playing with Wheels (Breadth-First-Search) solution code
Forwarding Emails solution code