What is Python?
Why Learn Python?
Python vs. Other Languages
Installing Python
What's an IDE?
Installing VS Code
VS Code for Python
Hello, Python!
Basic Python Syntax
What are Comments?
Multi-line Comments
Why Comment Your Code?
Running from Terminal
Using the VS Code Run Button
Common Setup Issues
Hello, Console!
Printing Variables
Multiple Prints, One Line
Escape Characters
Raw Strings
Your Program Listens
Input is Always Text
Converting Input to Numbers
Combining Input & Output
Interactive Story Time
Intro to F-Strings
F-Strings: Expressions
F-Strings: Formatting Numbers
F-Strings: Alignment & Padding
Old School Formatting
Why Loops?
Your First 'for' Loop
Looping Through Strings
Looping Through Lists
The `range()` Function
Looping with `range()`
Nested 'for' Loops
The `break` Statement
The `continue` Statement
Looping with `else`
Looping Through Tuples
Looping Through Dictionaries
Looping Through Sets
The `enumerate()` Function
Looping Best Practices
Meet the While Loop
Your First While Loop
The Loop Condition
Updating Variables in Loops
Counting with While Loops
Break Out!
Skip Ahead with Continue
Else with While Loops
Nested While Loops
Input Validation Loops
Beware: Infinite Loops!
Guarding Against Infinity
For vs. While: When to Use?
While Loop Practice
Looping Through Menus
What's a List?
Creating Your First List
List of Lists
Indexing: Getting Items
Slicing: Getting Sub-Lists
Checking for Items
Changing List Items
Adding Items: append()
Adding Items: insert()
Adding Items: extend()
Removing Items: del
Removing Items: pop()
Removing Items: remove()
Clearing a List
List Length & Count
Sorting Lists
Reversing Lists
Copying Lists
Why Functions?
Defining Your First Function
Calling Functions
Function Parameters
Function Arguments
Returning Values
Functions with No Return
Multiple Return Values
Default Parameters
Keyword Arguments
Local Scope
Global Scope
Global Keyword
Docstrings for Functions
Function Design Tips
What are Errors?
Common Python Errors
The Problem with Crashes
Introducing try and except
Handling Specific Errors
Catching Multiple Errors
The 'else' Block
The 'finally' Block
General Exception Handling
Raising Exceptions
Creating Custom Errors
When to Raise vs. Handle
Logging Errors
Graceful Degradation
Error Handling Review
Why Files?
Opening Files: The Basics
Closing Files: Why & How
Writing to Files
Appending to Files
Reading All at Once
Reading Line by Line
Iterating Through Lines
Reading Specific Chars
File Not Found Errors
The 'with' Statement
File Modes Deep Dive
Working with Paths
Checking File Existence
Mini-Project: Simple Logger
What are Modules?
Importing Modules
Selective Imports
Aliasing Imports
Built-in Modules
What are Packages?
Introducing Pip
Installing Packages
Using Installed Packages
Listing & Uninstalling
Updating Packages
Package Documentation
Common Package Examples
Virtual Environments
Using Virtual Environments
What's a Project?
Choosing Your First Project
Breaking Down the Problem
Designing Your Project
Setting Up Your Project
Building the Foundation
Adding Logic with Conditionals
Repeating Actions with Loops
Storing Data with Lists
Organizing Data with Dictionaries
Modularizing with Functions
Saving Data to Files
Handling Project Errors
Debugging Your Project
Testing and Refining