Algorithm Design

About This Module

Prework

Prework Reading

Pre-lecture Reflections

Lecture

Learning Objectives

Big picture

Review a few approaches to algorithm design:

  • Greedy approach
  • Divide and conquer

Others:

  • Dynamic Programming
  • Branch and Bound
  • Backtracking

You'll likely see these in DS320 -- Algorithms for Data Science

Why do we care about algorithm design?

  • Many problems share similar structure
  • Having an algorithmic approach for a certain style of problem makes things a lot easier!
  • Different approaches have tradeoffs depending on what you want to prioritize

Algorithms to Live By

From book page.

A fascinating exploration of how computer algorithms can be applied to our everyday lives, helping to solve common decision-making problems and illuminate the workings of the human mind.

All our lives are constrained by limited space and time, limits that give rise to a particular set of problems. What should we do, or leave undone, in a day or a lifetime? How much messiness should we accept? What balance of new activities and familiar favorites is the most fulfilling? These may seem like uniquely human quandaries, but they are not: computers, too, face the same constraints, so computer scientists have been grappling with their version of such problems for decades. And the solutions they’ve found have much to teach us.

In a dazzlingly interdisciplinary work, acclaimed author Brian Christian and cognitive scientist Tom Griffiths show how the simple, precise algorithms used by computers can also untangle very human questions. They explain how to have better hunches and when to leave things to chance, how to deal with overwhelming choices and how best to connect with others. From finding a spouse to finding a parking spot, from organizing one’s inbox to understanding the workings of human memory, Algorithms to Live By transforms the wisdom of computer science into strategies for human living.

Technical Coding Challenge

Coding Challenge

Coding Challenge Review