Class Central is learner-supported. When you buy through links on our site, we may earn an affiliate commission.

Algorithm Fundamentals

via Brilliant


An algorithm is a step-by-step process to achieve some outcome. When algorithms involve a large amount of input data, complex manipulation, or both, we need to construct clever algorithms that a computer can work through quickly.

By the end of this course, you’ll know methods to measure and compare performance, and you’ll have mastered the fundamental problems in algorithms.


  • Building Blocks: The nuts and bolts of how computer scientists communicate algorithmic ideas.
    • Pseudocode: Start your study of algorithms by learning about this key aspect of how computer scientists communicate.
    • Conditional Algorithms: All interesting algorithms perform tests, and react in different ways based on the results of those tests.
    • Manipulating Numbers: Most algorithms store and manipulate numbers using assignable variables.
    • Repetition: Performing simple actions repeatedly is at the heart of every interesting algorithm.
    • Arrays: Arrays are critical for understanding algorithms that manipulate collections of information.
  • Array Algorithms: Master repetition through understanding algorithms that manipulate arrays.
    • Searching an Array: Arrays can store lots of information. To find out what's there, you just have to look!
    • Binary Search: Looking in the middle of a sorted array requires a bit of cleverness, but it can save you a lot of work.
    • Sorting an Array: Sorting an array with selection sort unlocks the power of binary search.
    • Insertion Sort: There's more than one way to sort an array. Insertion sort is another classic algorithm for sorting.
  • The Speed of Algorithms: Part of the study of algorithms is learning to predict how fast or slow they run.
    • Timing Programs with a Stopwatch: In science, sometimes the best thing to do is run an experiment!
    • Counting Operations: Find out why computer scientists talk about "cost" instead of "time."
    • Best, Worst and Average Case: Algorithms don't always have predictable costs. To prepare for the worst or hope for the best, you need to know what those are!
    • Comparing Algorithms: Big O notation is a simple notation that helps computer scientists compare algorithms and implementations.
    • Understanding Big O: The flexibility of Big O can make it a bit tricky. But it's the trickiness that makes it so useful!
    • The Mathematics of Big O: Dive into the details to really understand why Big O notation works the way it does.
  • Stable Matching: You now have the tools to understand and reason about important algorithms, including algorithms that can change the course of people's lives.
    • The Stable Matching Problem: Discover a simple problem faced by every teaching hospital and medical student every year.
    • Using Greediness: An individual applicant can make the best decision with a greedy algorithm.
    • Deferred Acceptance Algorithm: The Gale-Shapley algorithm uses individual greedy decisions to produce a global matching.
    • Correctness: An algorithm for producing a stable matching is only good if it outputs a stable matching!
    • Termination: A good algorithm can't just promise that it will do the right thing if it finishes. A good algorithm actually has to deliver.
    • Running Time: The tools you've learned for describing the speed of algorithms apply to the Gale-Shapley deferred acceptance algorithm.
    • Variants: Transition from an oversimplified problem to one that's much more like the real world.
    • Who Benefits?: In order to really understand an algorithm, you need to think about more than just the mathematics.


Start your review of Algorithm Fundamentals

Never Stop Learning.

Get personalized course recommendations, track subjects and courses with reminders, and more.