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 |