Algorithms (ArsDigita University). Taught by Shai Simonson, this course discusses the design and analysis of algorithms. The design of algorithms is studied, according to methodology and application. Methodologies include: divide and conquer, dynamic programming, and greedy strategies. Applications involve: sorting, ordering and searching, graph algorithms, geometric algorithms, mathematical (number theory, algebra and linear algebra) algorithms, and string matching algorithms. Analysis of algorithms is studied - worst case, average case, and amortized - with an emphasis on the close connection between the time complexity of an algorithm and the underlying data structures. NP-Completeness theory is examined along with methods of coping with intractability, such as approximation and probabilistic algorithms. (from

Lecture 01 - Algorithms - Overview
Lecture 02 - Sorting
Lecture 03 - Sorting II
Lecture 04 - Searching and Data Structures
Lecture 05 - Red-Black Trees
Lecture 06 - Graph Algorithms I: Topological Sorting, Prim's Algorithm
Lecture 07 - Graph Algorithm II: DFS, BFS, Kruskal's Algorithm, Union Find Data Structure
Lecture 08 - Graph Algorithm III: Shortest Path
Lecture 09 - Graph Algorithm IV: Intro to Geometric Algorithms
Lecture 10 - Geometric Algorithms: Graham & Jarvis
Lecture 11 - Dynamic Programming I
Lecture 12 - Dynamic Programming II
Lecture 13 - Parsing
Lecture 14 - Knapsack, Bandwidth Min. Intro - Greedy Algorithms
Lecture 15 - Greedy Algorithms II. Intro to NP Completeness
Lecture 16 - NP Completeness II & Reductions
Lecture 17 - NP Completeness III - More Reductions
Lecture 18 - NP Completeness IV
Lecture 19 - Approximation Algorithms
Lecture 20 - Alternate Models of Computation

Instructor: Shai Simonson. Course Description. Lecture and Courseware. Student Evaluations. The design of algorithms is studied, according to methodology and application.