In part 2 of this course, we will study advanced algorithmic techniques such as divide-and-conquer and dynamic programming. As the central part of the course, students will implement several algorithms in Python that incorporate these techniques and then use these algorithms to analyze two large real-world data sets. The main focus of these tasks is to understand interaction between the algorithms and the structure of the data sets being analyzed by these algorithms.
Once students have completed this class, they will have both the mathematical and programming skills to analyze, design, and program solutions to a wide range of computational problems. While this class will use Python as its vehicle of choice to practice Algorithmic Thinking, the concepts that you will learn in this class transcend any particular programming language.
Course 6 of 7 in the Fundamentals of Computing Specialisation
Module 3 - Core Materials
Sorting, searching, big-O notation, the Master Theorem
Module 3 - Project and Application
Closest pairs of points, clustering of points, comparison of clustering algorithms
Module 4 - Core Materials
Dynamic programming, running time of DP algorithms, local and global sequence alignment
Module 4 - Project and Application
Computation of sequence alignments, applications to genomics and text comparison