
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 and run Python across Mac, Linux, and Windows; manage side-by-side versions, use virtual environments, and explore libraries like NumPy, pandas, and Matplotlib in interactive mode.
Explore what Python is as a language, its history, and its main implementations like CPython and PyPy, plus the role of its standard library.
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 virtual environments on mac and linux using Python 3.9 and venv, activate them to modify your path and switch between Python versions.
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 Python basics by learning integers, floats, booleans, and the concept of objects, then master arithmetic, division, modulus, comparisons, and boolean operators, including parentheses for precedence and evaluation rules.
Explore basic data types in Python, including integers, floats, booleans, and the decimal type, and learn how literals, underscores, and binary representation affect precision.
Explore Python's basic data types, including integers, floats, and booleans, covering literal representations, float precision limits, and using format for display, with how to compare numbers using tolerance.
Demonstrate how Python objects encapsulate state and behavior using a car example, with attributes and methods accessed via dot notation. Compare mutable and immutable objects, including ints and floats.
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 Python's arithmetic operators, including plus, minus, multiplication, division, and exponentiation, across ints, floats, and complex numbers, and see how custom vectors define addition and use encapsulation.
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.
Explain integer division and modulus in Python, using div and mod operators. Show how floor behavior affects negatives and how a mod b relates to a and a div b.
Master integer division and modulus with positive numbers; use floor as truncation, and div/mod to convert minutes to hours and minutes, and learn to report every 100 iterations.
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 in python: not, and, or—with truth tables and short-circuit evaluation, plus practical examples like conditional execution and avoiding costly calculations.
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.
Explore conditional execution and branching as fundamental constructs that run different code paths based on true or false expressions, including an optional else, and illustrate with an ATM withdrawal scenario.
Discover how Python if-else statements use colons and indentation to control code execution, apply boolean operators, and nest conditions with price-based examples.
The lecture demonstrates how to use Python's elif to replace nested if-else chains, using a grade-letter example to emphasize readability and mutually exclusive branches.
Explore using elif and single-line if to replace nested ifs, improving readability. See grade thresholds and withdrawal logic as examples.
Explains the Python ternary conditional operator and how it provides a three-part expression with short-circuit evaluation, using value1 if condition else value2 and practical examples.
Explore sequence types in Python, including ordered collections with zero-based indexing, and differentiate finite, homogeneous, and heterogeneous sequences. Learn lists (mutable), tuples (immutable), and strings (immutable, homogeneous).
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.
Explore Python lists as mutable, heterogeneous sequences created by literals, learn indexing (including negative indexing), len, and error handling, and modify elements or create empty lists.
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.
tuples are immutable sequence types in python, created with parentheses or comma, support indexing (including negative) and can contain mutable objects like lists that you can convert with tuple() or list().
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.
Master Python slicing of lists, tuples, and strings using start inclusive and end exclusive indices, returning a new sequence of the same type. Use steps to reverse sequences.
Learn how Python slicing selects multiple elements from sequences, with start inclusive and end exclusive, uses step values and negative indexing, and creates new objects while sharing elements.
Mutate lists by replacing elements and slices, deleting items, and inserting with append, extend, or insert. Compare slice assignment to single-index assignment across lists, tuples, and strings.
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.
Explore how to copy sequences, distinguish shallow and deep copies, and prevent shared mutations by using slice, list copy, and the copy module for nested structures.
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.
This lecture demonstrates extracting unicode code points for characters in Python, shows decimal and hex conversions, and explains using escape sequences to embed unicode in strings and identifiers.
Explore Python string methods, including case conversions, stripping, concatenation, splitting and joining, and substring finding with in, index, and find. Understand string immutability and dot notation, plus startswith and endswith.
Explore Python 3 string methods like upper, lower, title, and case folding for case-insensitive comparisons; learn strip, join, split, in containment, and index vs find, plus Unicode normalization.
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 practical string interpolation in Python by comparing concatenation, the format method, and f-strings; learn to display stock-like open, high, low, and close values with precise formatting.
Explore iteration in Python by contrasting deterministic and non deterministic repetition, learn how for loops iterate over iterables and sequences, and manage while loops to avoid infinite loops.
Explains the range function and range object in Python, showing how it yields integers one by one, is memory efficient, finite, and inspectable by converting to lists or tuples.
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.
Master for loops in Python by iterating lists, ranges, and strings, using enumerate for indices, and applying nested loops to matrices, ragged arrays, and identity matrices.
Learn how while loops repeat code as long as a condition stays true, evaluating the test at start of each iteration, including finite, no output, and infinite (while true) loops.
Learn how while loops run on a condition, with decrement and price tracking, and why they can become infinite. Explore safe list mutation using while loops.
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.
Use dictionaries as hash maps to map hashable keys to values, enabling fast key lookups regardless of size, with mutation through additions, updates, or deletions.
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 dictionary operations in Python, including accessing, assigning, inserting, and deleting key-value pairs. Test membership with in and not in, use get for default values, and merge dictionaries with update.
Discover how Python sets mirror mathematical sets: unordered, with unique elements and no guaranteed iteration order, and use union, intersection, difference, and membership tests.
Learn how Python sets relate to dictionary keys, appreciate their unordered, iterable nature, and use the set function to create sets from iterables for unique values.
Create sets with literals or the set function, learn they hold unique elements, do not guarantee order, and cover membership, iteration, empty set creation, and shallow versus deep copying.
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.
Explore common set operations in Python, including add, remove, discard, union, intersection, and difference, and apply them to strings, subsets, supersets, and case-insensitive comparisons.
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 in Python, using curly braces for keys and values, with filters and examples on widget sales and even squares.
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.