Algorithmic Thinking

This class consists of two parts that are each four weeks long and cover two Modules. For each Module, you will watch a set of videos and complete three assessments. First, you will complete a Homework that covers the theory portion of the Module. This assessment is delivered as a standard Coursera-style quiz. Next, you will implement a Project in Python using the algorithms covered in the Module. This Project will be assessed by a machine-grader developed for the class. Finally, you will complete an Application in which you use the theory that you have learned as well as your implementation to analyze a problem of practical significance. This portion of the Module is peer-assessed.

Part Module Homework Project Application
1 1 Graphs and brute-force algorithms Degree distributions for graphs Analysis of citation graphs
1 2 Algorithmic efficiency and BFS Connected components and graph resilience Analysis of a computer network
2 3 Divide and conquer Closest pairs and clustering algorithms Comparison of clustering algorithms
2 4 Dynamic programming Alignment of sequences Applications to genomics and beyond