- Level Professional
- Duration 40 hours
- Course by University of California San Diego
-
Offered by
About
This online course covers basic algorithmic techniques and ideas for computational problems arising frequently in practical applications: sorting and searching, divide and conquer, greedy algorithms, dynamic programming. We will learn a lot of theory: how to sort data and how it helps for searching; how to break a large problem into pieces and solve them recursively; when it makes sense to proceed greedily; how dynamic programming is used in genomic studies. You will practice solving computational problems, designing new algorithms, and implementing solutions efficiently (so that they run in less than a second).Modules
Welcome
1
Videos
- Welcome!
3
Readings
- Ace Your Next Coding Interview
- What background knowledge is necessary?
- Social Networks and Microlearning
Programming Assignment 1: Programming Challenges
- Programming Assignment 1: Sum of Two Digits
1
Videos
- Solving the Sum of Two Digits Programming Challenge (screencast)
(OPTIONAL) Solving The Maximum Pairwise Product Programming Challenge in C++
4
Videos
- Solving the Maximum Pairwise Product Programming Challenge: Improving the Naive Solution, Testing, Debugging
- Stress Test - Implementation
- Stress Test - Find the Test and Debug
- Stress Test - More Testing, Submit and Pass!
2
Readings
- Optional Videos and Screencasts
- Alternative testing guide in Python
Maximum Pairwise Product Programming Challenge
- Programming Assignment 1: Maximum Pairwise Product
1
Assignment
- Solving Programming Challenges
1
Readings
- Maximum Pairwise Product Programming Challenge
Using PyCharm to solve programming challenges (optional experimental feature)
1
Readings
- Using PyCharm to solve programming challenges
Acknowledgements (Optional)
1
Readings
- Acknowledgements
Why Study Algorithms?
2
Videos
- Why Study Algorithms?
- Coming Up
Fibonacci Numbers
3
Videos
- Problem Overview
- Naive Algorithm
- Efficient Algorithm
1
Readings
- Resources
Greatest Common Divisor
2
Videos
- Problem Overview and Naive Algorithm
- Efficient Algorithm
1
Readings
- Resources
Big-O Notation
3
Assignment
- Logarithms
- Big-O
- Growth rate
1
Labs
- Big-O Notation: Plots
4
Videos
- Computing Runtimes
- Asymptotic Notation
- Big-O Notation
- Using Big-O
1
Readings
- Resources
Course Overview
1
Videos
- Course Overview
Programming Assignment 2
- Programming Assignment 2: Algorithmic Warm-up
1
Readings
- Interview Questions
The Main Idea of Greedy Algorithms
4
Videos
- Largest Number
- Queue of Patients
- Implementation and Analysis
- Main Ingredients of Greedy Algorithms
Celebration Party
3
Videos
- Celebration Party Problem
- Greedy Algorithm
- Implementation and Analysis
Maximum Value of the Loot
3
Videos
- Maximizing Loot
- Implementation and Analysis
- Review
(Optional) Readings
2
Assignment
- Largest Concatenate
- Money Change
9
Readings
- Examples
- Local vs Global Optimum
- Proving Correctness of Greedy Algorithms
- Implementation
- Money Change
- Solution: Use the Largest Denomination First
- Proving Correctness
- Maximizing the Value of the Loot Problem
- Solution: Take as Much of the Most Expensive Compound as You Can
Programming Assignment 3
- Programming Assignment 3: Greedy Algorithms
3
Assignment
- Puzzle: Balls in boxes
- Puzzle: Activity Selection
- Puzzle: Touch All Segments
Introduction
3
Assignment
- Linear Search and Binary Search
- Puzzle: 21 questions game
- Puzzle: Two Adjacent Cells of Opposite Colors
4
Videos
- Intro
- Linear Search
- Binary Search
- Binary Search Runtime
1
Readings
- Resources
Polynomial Multiplication
1
Assignment
- Polynomial Multiplication
3
Videos
- Problem Overview and Naïve Solution
- Naïve Divide and Conquer Algorithm
- Faster Divide and Conquer Algorithm
1
Readings
- Resources
Master Theorem
1
Assignment
- Master Theorem
2
Videos
- What is the Master Theorem?
- Proof of the Master Theorem
1
Readings
- Resources
Sorting Problem
1
Assignment
- Sorting
5
Videos
- Problem Overview
- Selection Sort
- Merge Sort
- Lower Bound for Comparison Based Sorting
- Non-Comparison Based Sorting Algorithms
1
Readings
- Resources
Quick Sort
1
Assignment
- Quick Sort
6
Videos
- Overview
- Algorithm
- Random Pivot
- Running Time Analysis (optional)
- Equal Elements
- Final Remarks
1
Readings
- Resources
Programming Assignment 4
- Programming Assignment 4: Divide and Conquer
1
Assignment
- Puzzle: Local Maximum
Change Problem
4
Assignment
- Change Money
- Puzzle: Number of Paths
- Puzzle: Two Rocks Game
- Puzzle: Three Rocks Game
1
Videos
- Change Problem
1
Readings
- Resources
String Comparison
1
Assignment
- Edit Distance
3
Videos
- The Alignment Game
- Computing Edit Distance
- Reconstructing an Optimal Alignment
1
Readings
- Resources
Programming Assignment 5
- Programming Assignment 5: Dynamic Programming 1
1
Assignment
- Puzzle: Primitive Calculator
Knapsack
1
Assignment
- Knapsack
4
Videos
- Problem Overview
- Knapsack with Repetitions
- Knapsack without Repetitions
- Final Remarks
2
Readings
- Polynomial vs Pseudopolynomial
- Resources
Placing Parentheses
1
Assignment
- Maximum Value of an Arithmetic Expression
4
Videos
- Problem Overview
- Subproblems
- Algorithm
- Reconstructing a Solution
Programming Assignment 6
- Programming Assignment 6: Dynamic Programming 2
Auto Summary
The Algorithmic Toolbox course on Coursera delves into essential algorithmic techniques for IT and Computer Science, focusing on sorting, searching, divide and conquer, greedy algorithms, and dynamic programming. Taught at a professional level, it blends theory with practical problem-solving and efficient algorithm design. With a duration of 2400 minutes, learners can choose from Starter, Professional, or Paid subscription options. Ideal for those looking to enhance their computational problem-solving skills.

Neil Rhodes

Daniel M Kane
Michael Levin

Michael Levin

Pavel Pevzner

Alexander S. Kulikov