-
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.
Overview
Syllabus
-
- Algorithms: A quick introduction to what an algorithm is and how to measure its performance.
- Intro to Computation: As a computer scientist, you think about how hard it is to come up with the answer, not just about the answer itself.
- Using Recursion: With recursion, you can solve big problems by using solutions to small problems.
- Algorithms in the World: Clever algorithms may be needed for simple tasks, like helping new social network users pick a username.
- Sorting: A powerful tool for organizing data, from the basic intuition with insertion sort to practical algorithms like Mergesort.
- Introduction to Sorting: Why do computer scientists worry so much about sorting?
- Insertion Sort: Start slow! Insertion sort is a simple and effective way of sorting a small list of numbers.
- Mergesort: What's easier than sorting one big sequence? Creating a sorted sequence from two smaller sorted sequences!
- Quicksort: Quicksort, like Mergesort, uses the divide-and-conquer strategy to quickly sort arrays.
- Radix Sort: By sorting digits and characters—instead of numbers and words—radix sort can outpace all the rest.
- Graphs: Algorithms for these useful representations of connections among data.
- Introduction to Graphs: Graphs are a fundamental tool for representing the world around you on a computer.
- Trees: Trees are graphs without cycles, making them much easier to navigate.
- Breadth-First Search: Breadth-first search is a way of finding the shortest connections in a graph.
- Minimum Spanning Trees: Minimum spanning trees help you find the most helpful tree in a complicated graph.
- Strings: Strings are simple, but the algorithms to analyze them are not!
- Introduction to String Algorithms: Strings are sequences of characters.
- Substring Search Algorithms: Finding one string inside another string is tricker than it first appears!
- Deterministic Finite Automaton: Finite automata are an important tool for writing algorithms on strings.
- Knuth-Morris-Pratt Algorithm: The very best way to search for substrings.
- Dynamic Programming: Remembering what you already know to solve problems faster.
- Dynamic Programming Introduction: A little memory goes a long way towards solving problems quickly.
- Tiling Problem: How many ways can different tiles decorate a floor? Find out with dynamic programming.
- Binary Tree: The dynamic programming solution to a binary tree puzzle.
- Envelopes: Bring dynamic programming into the second dimension with this envelope fitting puzzle.