
Algorithmic Thinking
Master the fundamentals of designing algorithms, the key to solving problems with computers.
The Scheduling Problem
Solving Instances
Describing Algorithms
Multiple Solutions
Identifying Invariants
Finding Counterexamples
Adapting to New Criteria
Testing Algorithms
Modifying an Algorithm
Controlling Order
Verifying Correctness
Finding an Algorithm's Limits
Updating a Strategy
Proving Incorrectness
Updating an Algorithm
Reasoning about Criteria
Testing the Strategy
Optimizing
Crafting Counterexamples
Greedy Optimization
Optimal Substructures
Problem Equivalence
Up next
Computer Science Fundamentals
Learn how to make a computer do what you want, elegantly and efficiently.
Course description
This course will help you start thinking like a computer scientist. You'll work through instances of a problem and convert mental strategies into algorithms. Through a sequence of scheduling puzzles, you'll explore how different problem constraints lead to different greedy strategies — and when those strategies fail. You'll be introduced to formal tools like loop invariants and counterexamples gradually, to help you build the habits of algorithmic reasoning from the ground up.
Topics covered
- Instances of a Problem
- Greedy Algorithms
- Multiple Solutions
- Loop Invariants
- Counterexamples
- Describing Algorithms
- Modifying Algorithms
- Reasoning about Correctness
- Reasoning about Incorrectness
- Optimization
- Greedy Choice Property
- Optimal Substructure
- Problem Equivalence
Prerequisites and next steps
This is a great course if you're comfortable with the basics of programming in pseudocode, including variables, loops, lists, and conditional statements. No prior knowledge of algorithms or data structures is assumed. Use this course to develop your ability to confidently design algorithms that correctly solve problems.