Algorithm Fundamentals

Go to class
Write Review

Algorithm Fundamentals provided by Brilliant is a comprehensive online course, which lasts for 10-20 hours worth of material. Upon completion of the course, you can receive an e-certificate from Brilliant. The course is taught in Englishand is Paid Course. Visit the course page at Brilliant for detailed price information.

Overview
  • 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.

Syllabus
    • 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.