In this Introduction to Algorithms in Python course, you’ll learn about algorithm basics like recursion and then go all the way to working with concepts like dynamic programming.

The 5 main course segments include simple recursive algorithms, data structures, divide & conquer, greedy algorithms, and dynamic programming.

â?ï¸ Joy Brock developed this course in collaboration with realtoughcandy.io. Check out Joy’s channel: https://www.youtube.com/c/PythonLearningChannel

� Sign up for the RealToughCandy newsletter and get a free ebook plus coding challenges, exclusive promo codes and more delivered directly to your inbox. �️ https://realtoughcandy.com/newsletter-and-free-ebook/

⭐️ Code Samples ⭐️
ð??? https://github.com/joyb0218/intro_to_algorithms/blob/main/1_recursive_algorithms
ð??? https://github.com/joyb0218/intro_to_algorithms/blob/main/2_data_structures
ð??? https://github.com/joyb0218/intro_to_algorithms/blob/main/3_divide_conquer
ð??? https://github.com/joyb0218/intro_to_algorithms/blob/main/4_greedy_algorithms
ð??? https://github.com/joyb0218/intro_to_algorithms/blob/main/5_dynamic_programming

⭐️ Course Contents ⭐️
�️ (0:00:00) Intro & course overview
�️ (0:07:07) Factorials refresher
�️ (0:10:04) CODING CHALLENGE: Factorial program using iteration, recursion
�️ (0:14:57) What is a permutation?
�️ (0:16:34) CODING CHALLENGE: Recursive permutation
�️ (0:20:13) Iterative permutation example
�️ (0:22:17) 8/N queens problem: theory & explanation
�️ (0:23:57) Real world example of permutations
�️ (0:24:49) Lesson recap
�️ (0:26:11) What are data structures?
�️ (0:27:53) What is a one-dimensional array?
�️ (0:29:01) Search & sort
�️ (0:30:39) CODING CHALLENGE: Linear search
�️ (0:31:00) Binary search
�️ (0:32:06) CODING CHALLENGE: Iterative binary search
�️ (0:33:31) Coding a recursive binary search
�️ (0:34:47) Bubble sort
�️ (0:36:42) CODING CHALLENGE: Bubble sort
�️ (0:38:02) Insertion sort
�️ (0:39:24) CODING CHALLENGE: Insertion sort
�️ (0:40:36) Linked lists
�️ (0:44:01) CODING CHALLENGE: Linked list (traverse, search, add, delete, header, nodes, tail)
�️ (0:52:12) Hash tables
�️ (0:56:27) Lesson recap
�️ (0:57:42) Divide & conquer algorithm paradigm: uses, benefits and more
�️ (1:00:43) Merge sort
�️ (1:02:48) CODING CHALLENGE: An efficient merge sort
�️ (1:05:48) Getting judged mercilessly on LeetCode
�️ (1:06:47) Getting Python to do the work for us with sorted()
�️ (1:07:33) Matrix multiplication
�️ (1:10:06) CODING CHALLENGE: Matrix multiplication
�️ (1:11:20) Strassen algorithm
�️ (1:14:45) CODING CHALLENGE: Strassen algorithm
�️ (1:16:27) Lesson recap
�️ (1:17:21) What is a greedy algorithm?
�️ (1:19:20) Assign mice to holes conceptual overview
�️ (1:21:45) CODING CHALLENGE: Assign mice to holes
�️ (1:23:10) Fractional knapsack
�️ (1:23:36) Understanding the fractional knapsack problem with a (light-hearted) dystopian apocalypse example
�️ (1:25:54) Coding challenge prep
�️ (1:27:13) CODING CHALLENGE: Fractional knapsack
�️ (1:31:49) Egyptians fractions
�️ (1:34:03) CODING CHALLENGE: Egyptian fractions
�️ (1:37:06) Lesson recap
�️ (1:38:15) What is dynamic programming (also called DP)?
�️ (1:41:55) What is the principle of optimality?
�️ (1:42:20) The 3-step process to solving a problem with optimal substructure
â?¨ï¸ (1:43:55) Introduction to â??ugly numbersâ?
�️ (1:47:19) CODING CHALLENGE: Ugly numbers
�️ (1:51:41) Traveling salesman problem (TSP)
�️ (1:55:49) CODING CHALLENGE: Traveling salesman problem
�️ (1:59:52) Palindromic matrix paths
�️ (2:03:11) CODING CHALLENGE: Palindromic matrix paths
�️ (2:08:37) Lesson recap
�️ (2:10:03) Course wrap up (and the importance of coding every day)

ð??? Thanks to our Champion and Sponsor supporters:
ð??¾ Raymond Odero
ð??¾ Agustín Kussrow
ð??¾ aldo ferretti
ð??¾ Otis Morgan
ð??¾ DeezMaster

Learn to code for free and get a developer job: https://www.freecodecamp.org

Read hundreds of articles on programming: https://freecodecamp.org/news