YoVDO

Algorithms (2019)

Offered By: Brilliant

Tags

Algorithms and Data Structures Courses QuickSort Courses Insertion Sort Courses Radix Sort Courses Graph Algorithms Courses Dynamic programming Courses Recursion Courses

Course Description

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

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

Related Courses

4ever-clojure
Independent
Mastering Programming with MATLAB
Vanderbilt University via Coursera
Advanced Relational Database and SQL
Coursera Project Network via Coursera
算法设计与分析 Design and Analysis of Algorithms
Peking University via Coursera
算法基础 | Fundamental Algorithms
Peking University via edX