Introduction
Importance of algorithmic thinking
()
What you should know
()
Use GitHub Codespaces with this course
()
1. Warm Up
Challenge: 100 doors
()
Solution: 100 doors
()
FizzBuzz
()
2. Tools to Help Understand the Flow of Algorithms
Tracing algorithms using an online visualization tool
()
Tracing algorithms using code or a debugger
()
Algorithm animations
()
Pseudocode
()
Using a whiteboard to explore algorithms
()
3. Brute Force Algorithms
Introduction to brute force algorithms
()
Linear search
()
Selection Sort introduction
()
Challenge: Selection Sort in Python
()
Solution: Selection Sort in Python
()
4. Analysis of Time-Space Complexity
Introduction to analysis of time-space complexity
()
Challenge: Big-O notation practice
()
Solution: Big-O notation practice
()
Examples of time complexity with Python
()
Memory considerations when implementing algorithms
()
5. Greedy Algorithms
Introduction to greedy algorithms
()
Introduction to the change making problem
()
Solution to the change making problem
()
Dijkstra's algorithm
()
Challenge: Dijkstra's algorithm
()
Solution: Dijkstra's algorithm
()
Dijkstra's algorithm: Python implementation
()
6. Decrease and Conquer
Ferrying soldiers
()
Introduction to decrease and conquer
()
Binary search
()
Challenge: Binary search
()
Solution: Binary search
()
Conclusion
Exploring algorithmic thinking with Python
()