Table of Content

Master Algorithmic Programming Techniques. Learn algorithms through programming and advance your software engineering or data science career

Offered By


Course 1: Algorithmic Toolbox

The course covers basic algorithmic techniques and ideas for computational problems arising frequently in practical applications: sorting and searching, divide and conquer, greedy algorithms, dynamic programming. We will learn a lot of theory: how to sort data and how it helps for searching; how to break a large problem into pieces and solve them recursively; when it makes sense to proceed greedily; how dynamic programming is used in genomic studies. You will practice solving computational problems, designing new algorithms, and implementing solutions efficiently (so that they run in less than a second). 5 hours to complete 6 videos (Total 48 min), 4 readings, 2 quizzes

WEEK 1: Programming Challenges

Welcome to the first module of Data Structures and Algorithms! Here we will provide an overview of where algorithms and data structures are used (hint: everywhere) and walk you through a few sample programming challenges. The programming challenges represent an important (and often the most difficult!) part of this specialization because the only way to fully understand an algorithm is to implement it. Writing correct and efficient programs is hard; please don’t be surprised if they don’t work as you planned—our first programs did not work either! We will help you on your journey through the specialization by showing how to implement your first programming challenges. We will also introduce testing techniques that will help increase your chances of passing assignments on your first attempt. In case your program does not work as intended, we will show how to fix it, even if you don’t yet know which test your implementation is failing on.

  • 6 videos

    Welcome! 3m

    Solving the Sum of Two Digits Programming Challenges (screencast) 6m

    Solving the Maximum Pairwise Product Programming Challenge: Improving the Naive Solution, Testing, Debugging 13m

    Stress Test - Implementation 8m

    Stress Test - Find the Test and Debug 7m

    Stress Test - More Testing, Submit and Pass! 8m

  • 4 readings

    Companion MOOCBook 10m

    What background knowledge is necessary? 10m

    Optional Videos and Screencasts 10m

    Acknowledgements 2m

  • 1 practice exercise

    Solving Programming Challenges 20m