
Explore Python from first principles, mastering variables, data types, control flow, and topics like functional and object oriented programming, plus CSV, JSON, REST APIs, NumPy, Pandas, and map plot lib.
Although a basic knowledge of the Windows command prompt (or Mac/Linux shell) is a pre-requisite for this course, here is a quick primer for Windows users who may not be entirely familiar with basic usage of the Windows command prompt.
Install python by copying its files into a single directory with the executable and standard library, enabling multiple versions and future virtual environments; two videos cover Windows and Mac installations.
Visit python.org to download and install Python on Mac or Linux, selecting the latest 3.9.1 or a specific release, then install and verify via the shell.
Install Python on a Windows machine using python.org downloads, choose a version such as 3.9.1 or 3.8.6, note the installation path, and verify with the command prompt.
Learn what a Python virtual environment is, why we need it, and how it uses a copied Python directory with project libraries.
Create and manage Python virtual environments on Windows with the Python launcher. Activate, deactivate, and use specific versions (3.11 or 3.9) inside your project folder to isolate Python and libraries.
Install third-party libraries in a Python virtual environment using pip and the Python Package Index, then pin versions with a requirements.txt and install with -r to reproduce environments.
Explore how Python runs code by compiling to bytecode and executing on a virtual machine, and compare interactive mode (read-eval-print loop), script mode, and tools like Jupyter notebooks and IDEs.
Explore how Python objects have state and functionality by building a custom account object with balance and deposit and withdrawal; see integers and floats as objects with operations.
Learn how Python uses variables as labels to objects, with assignment evaluating the right-hand side first, and apply snake case conventions and reserved words rules for clean, consistent code.
Master declaring variables with the assignment operator, using meaningful snake_case names, avoiding reserved words and built-ins, and improving readability with clear prints and labeled code.
Learn how Python arithmetic operators work on integers and floats, including unary minus and plus, and binary addition, subtraction, multiplication, division, and power, with operator overloading concepts.
Explore operator precedence in Python by examining expressions like two times ten plus five and two to the power of three. Use parentheses to remove ambiguity and ensure explicit evaluation.
Master operator precedence in Python by learning how plus, minus, multiplication, division, exponentiation bind, and when to use parentheses, including unary minus.
Explore Python's relational operators, including equality and ordering, and learn how is versus equals and in and not in affect booleans and membership decisions.
Explore Python's comparison operators, distinguishing value equality from identity equality, using equals equals and is. See how memory addresses, floats, and custom types define equality and ordering with vectors.
Explore boolean operators not, and, or and how they combine with comparison operators to form evaluations. Learn operator precedence and short-circuiting with practical bank withdrawal and division examples in Python.
Discover how Python if-else statements use colons and indentation to control code execution, apply boolean operators, and nest conditions with price-based examples.
Explore using elif and single-line if to replace nested ifs, improving readability. See grade thresholds and withdrawal logic as examples.
Explore Python lists as a mutable, ordered, heterogeneous container built from square-bracket literals; access, replace by index, check length with len, and handle empty lists and index errors.
Tuples in Python are immutable container types similar to lists, supporting heterogeneous elements. Access via indexing and len; you cannot add or remove elements; inner lists may be mutable.
Explore strings in python as immutable, homogeneous sequences of single unicode characters. Create strings with single or double quotes, including empty literals, then index and use len to find length.
Learn that Python strings are immutable sequence types, delimited by single or double quotes, with indexing, len, and escaping. Convert, repeat, and combine strings with lists and tuples.
Manipulate mutable sequences by inserting, deleting, and replacing elements in Python lists, including slice assignments and negative steps. Learn when to use append, extend, and insert for efficient list operations.
Learn how Python unpacking assigns sequence elements to variables, swaps values without a temp variable, and handles mismatched sizes while highlighting right-hand side evaluation and sequence flexibility.
Learn sequence unpacking in Python to assign tuple, list, or string elements to individual variables, swap values, and handle multiple return values, with care for mismatched lengths.
Explore unicode concepts, code points, and the relationship to ascii, plus common encodings like utf-8, utf-16, and utf-32, with Python examples.
Learn string interpolation in Python by using format and f-strings to embed variables and expressions, avoid type errors, and format historical data like open, high, low, and close.
Explore Python's range function, its range objects, and converting them to lists or tuples; learn start, end (exclusive), step, length, and using range for repeated operations.
Explore for loops in Python by iterating over any iterable and using indentation for the loop body, including nested loops and enumerate for index and element.
Explore how continue, break, and the for-else clause control Python loops, including for and while loops, to skip iterations, terminate early, or run code when no break occurs.
This introduction to dictionaries explains how they function as associative data structures in Python, linking names to objects and enabling lookups used in a phonebook, DNS, and book indexes.
Create and mutate dictionaries using literals of key-value pairs, with hackable keys like strings, perform lookups by key, insert and update keys, and understand hashes, tuples, and namespace storage.
Learn how to iterate dictionaries by keys, values, and items, using for loops and unpacking. Understand insertion order in Python 3.6 and you retrieve elements by key, not index.
Learn to iterate dictionaries in Python by looping over keys, values, and items, and unpack key value pairs for clean output. Understand how insertion order influences iteration and updates.
Explore common set operations in Python: test disjointness with is disjoint, compare equality, add or discard elements, remove non-existent items, and perform unions, intersections, and differences, including eliminating duplicates.
Learn how Python comprehensions transform iterables into new ones, using concise syntax to compute vector magnitudes from x,y coordinates and emphasize readability over complex code.
Master list, dictionary, and set comprehensions in Python to create new iterables from existing ones with concise syntax; understand generators that yield results on demand.
Learn list comprehensions in Python to compute vector magnitudes, filter strings by length, process dictionaries, and build matrices with nested and readable expressions.
Learn dictionary and set comprehensions, build dicts with widget sales data, filter with if, and use Counter for frequency analysis in Python.
This course teaches you to actually understand Python, not just copy code.
Most tutorials show you what to type. You follow along, it works, and then you're stuck the moment you try to do something on your own. That's because they never explain why things work the way they do. This course is different. I explain the reasoning behind every concept so you can think through problems yourself instead of constantly Googling for answers. If you want real understanding that sticks, not just syntax you'll forget next week, you're in the right place.
What makes this course different? You get over 30 hours of video instruction, but that's just the start. Every section includes fully annotated Jupyter notebooks that read like a textbook, complete with explanations, examples, and code you can run and modify. You also get all course slides as reference material. Between the videos, notebooks, and slides, you're getting a complete learning package, not just someone coding on screen.
What You'll Learn
Write clean, readable Python code following professional best practices
Master Python's core data structures: strings, lists, tuples, dictionaries, and sets
Create well-organized programs using functions, modules, and packages
Understand how Python actually works (variables, memory, scope) so debugging becomes intuitive
Handle files, errors, dates/times, and external APIs
Structure your code like a professional, not a beginner copying examples
What's Included
30+ hours of video instruction with clear explanations of both "how" and "why"
Fully annotated Jupyter notebooks for every topic, essentially a complete textbook you can run and experiment with
All course slides as downloadable reference material
Challenging exercises with solutions at the end of each section
Lifetime access to learn at your pace and revisit anytime
Direct Q&A support where I personally respond to questions
Topics Covered
Python Foundations, Numeric Types, Strings, Lists, Tuples, Dictionaries, Sets, Conditionals, Loops, Functions, File I/O, Exception Handling, Modules & Packages, Classes and OOP Basics, Working with APIs (requests library), Dates and Timezones.
Prerequisites
No prior Python experience required. You should be comfortable with basic computer tasks and have some familiarity with the command line. If you've never used a terminal, spend 20 minutes on a beginner tutorial first and you'll be ready.
Ready to learn Python the right way?
Enroll now and build the foundation that will serve your entire programming career.