Algorithm Analysis

Programming is a complex task for several reasons including

  1. Large projects involving many people (software engineering).
  2. Program may involve storing and accessing large quantities of data (data structures and databases)
  3. Program may involve solving complex computational problems for which the obvious solutions are inadequate (algorithms).

The emphasis in an algorithms course is on studying efficient algorithms for solving common programming problems. Efficiency is determined using asymptotic analysis which provided an estimate on how fast the time to solve a problem increases as the size of the problem increases. As we will soon see a faster computer cannot rescue a bad algorithm. Along the way we will look at some of the following general strategies:

Fundamentals

Searching

Sorting

Graphs

Note the graph code provided below includes the DFS, BFS and topological sort.  We will be adding code for finding the shortest path and minimum spanning tree.

Quizzes and Projects

Presentation

Final Exam

Internet Resources

Courses

Dictionaries

Libraries

Animations

Miscellaneous