Introduction
  • Welcome to the Foundations of Computer Science!
  • Python, why we're using it in this course
  • Scalar objects, the simple types
  • The types of objects in Python
  • On types
  • Arithmetic operators
  • Arithmetic Operators
  • Variables, using names instead of just values
  • Operator precedence
  • Calculate the sum of two numbers
  • Handling input and output
  • Comparisons
Part 1 (Difficulty: Beginner)
  • Introducing Strings
  • Logic Operators
  • Control Flow - If statement
  • Selection
  • 2.1- Square Root
  • Control Flow - Loops (while, for)
  • Control Flow - Break
  • Control Flow - While vs For
  • Repetition
  • 2.2 - Odd elements
  • 2.3 – Square of an Integer
  • 2.5 - Cubic Root
  • 2.4 - Perfect Number
  • Strings slicing and encoding
  • Variable scope and functions
  • Strings in depth
  • Introducing functions
  • Functions and recursion
  • Find sum recursively
  • Count digits recursively
  • Reverse a number
  • 2.1 - Palindrome Strings
  • 2.4 - Coprimes
  • Data structures introduction
  • Lists (part 1)
  • Tuples
  • Lists (part 2) - Aliases and Sorting
  • Dictionaries
  • 3.4 - Boiling Point
  • 3.2 - List Jumps
  • 3.1 - Sieve of Eratosthenes
  • 3.5 - Cycles
Part 2 (Difficulty: Beginner-Intermediate)
  • Exponential and Logarithmic Function Review
  • Algorithmic Complexity Rationale
  • Big O Notation (Part 1)
  • Big O Notation (Part 2) - Quadratic Complexity Example
  • 4.2 - Permuted Strings
  • 4.4 - Euclidean Distance
  • 2.3 - Wolves and Deer
  • 1.4 - Spiral Index
  • Bisection Search
  • Sorting Algorithms Intro
  • Bubble Sort
  • Selection Sort
  • 5.2 - Permutation Cycle Length
  • 5.4 - Matrix Search
  • 5.3 - Fair Partition
Part 3 (Difficulty: Intermediate)
  • Introduction to Classes
  • Linked List
  • Stack
  • Queue
  • Priority Queue
  • 6.1 - List Mode
  • 6.2 - Filtering Linked List
  • 6.3 - Well Formed String
  • 6.4 - Linked List Equality
  • 6.5 - Lowest-K Elements
  • 6.6 - Merging Linked Lists
  • Hash Table
  • Trees
  • Binary Search Tree (BST)
  • 7.1 - BST Descending Order Traversal
  • 7.2 - BST Element Filtering
  • 7.3 - Reverse BST in Place
  • 7.4 - BST Levels
  • 7.5 - Balanced BST
  • Graphs
  • Depth First Search (DFS)
  • Breadth First Search (BFS)
  • 8.4 - Depth in Graph
  • 8.1 - Maze
  • 8.3 - Clique
  • 8.2 - Graph Cycle