
Learn to download and install Python locally with Anaconda, which includes Jupyter Notebook, and compare local setup with online execution while following the anaconda.com download steps.
This video is just for Mac users.
Install Anaconda on Windows by following the default setup, keep the home folder called Anaconda three, optionally add Anaconda three to your path, and finish through Anaconda Navigator.
Open the Anaconda Navigator to access Python tools, starting with the Jupyter Notebook. Move to VS Code for more professional development as your programming grows.
Launch a Jupyter notebook, rename it, write your first Python lines in a code cell, execute with shift+enter, and save or quit in Anaconda Navigator.
Open finder on mac, add the home directory to favorites, then create a dunder data courses folder in your home directory to centralize all course materials.
Create the Dunder Data courses directory in your home directory on Windows with File Explorer, then pin it to quick access for the common folder of all participants.
Download the zip from the resources section, unzip it, then move the folder to the Dunder Data courses directory.
Explore the course contents of Master the fundamentals of Python, including 20 modules, Jupyter notebooks and Python files, plus book PDFs and guidance on using Jupyter and VS Code.
Explore using Jupyter notebooks for Python programming, starting from the file system view to open notebooks and combine text, images, links, videos, and code for tutorials.
Learn the fundamentals of Jupyter notebooks by exploring cell types—code and markdown—how to run code with shift+enter, and how inputs and outputs appear for Python work.
master the two modes of a Jupyter notebook cell—edit mode with a blinking cursor and pencil icon, and command mode with a blue outline; switch with enter and escape.
Master command mode shortcuts to edit notebooks: escape to enter command mode, A or B to add cells, X to delete, and M or Y to switch markdown and code.
Learn practical Jupyter notebook tips for Python, including execute and stay in a cell with shortcuts, understanding output behavior, and using last-line output and print effectively.
Master Markdown basics by converting code cells to Markdown, add text, headers with #, and bullet points with * to enhance your notebook.
Understand how notebooks auto save every 15 seconds, preserve variables and executed cells when you exit browser tab, and how to reopen or shut down the notebook using localhost 8888.
Practice completing exercises by adding and managing cells in notebooks, using shift enter to run, and knowing when to add or delete cells as exercises grow more complex.
Create a new notebook using the file menu or file system view with Python 3. Rename Untitled notebooks and delete or reopen them as you review the notes.
Windows users - watch the next video if there are only a few extensions listed.
Windows users - run the following command in your terminal: jupyter contrib nbextension install --user
Learn how to program in Python using Jupyter notebooks, including two kinds of cells (markdown and code), edit and command modes, and essential keyboard shortcuts.
Launch the Jupyter notebook, explore the notes and formal notebooks for module one operators, and practice coding by pausing to write and modify your own notebooks.
Explore Python arithmetic operators, including addition, subtraction, multiplication, and division, that always produce a new value from two operands, with numbers on the left and right of the operator.
Explore more arithmetic operators in Python, including exponentiation with **, floor division //, modulus %, and matrix multiplication @, and see practical examples and usage.
Explore how Python evaluates expressions with multiple arithmetic operators by applying operator precedence from exponentiation to addition and subtraction, including floor division and modulus.
Learn how to change operator precedence with parentheses in Python by evaluating inside parentheses first and applying the order of operations to exponentiation, division, and subtraction.
Discover how Python's comparison operators work, including >, <, >=, <=, ==, and !=, and how they evaluate to true or false using two-argument examples.
Combine comparison and arithmetic operators in Python expressions, showing arithmetic runs first due to precedence, then the comparison, as shown by 45 times 99 greater than 43 times 103.
Explore chained comparison operators in Python, where multiple comparisons are evaluated together, not left to right. Learn how booleans map to 1 and 0 and how entire chain is evaluated.
Explore unary plus and minus operators, single-argument operators with precedence below exponentiation, and observe how Python evaluates zero minus five squared as -25.
Master the fundamentals of Python boolean operators, including and, or, not, and learn how true and false booleans drive binary operators, operator precedence, and truth table evaluations.
Explore the binary or operator in Python, understanding boolean values and how true or false expressions evaluate, including that one of them is true, precedence, and a truth table.
Explain the unary not operator as a unitary boolean operation that takes one argument and returns its negation, with a simple truth table of true and false.
Explore how boolean and other operators combine in Python, learn operator precedence where not higher than and, which is higher than or, and use parentheses to control evaluation of expressions.
Learn how to assign values to variable names with assignment statements, reuse results, and follow valid naming rules such as letters, digits, and underscores, while noting single versus double equals.
Learn to create multiple variables in python on separate lines, perform arithmetic (addition, exponentiation, subtraction), view outputs with comma-separated values, and note that the right-hand side evaluates before assignment.
Learn how to use Python comments by placing text after the hash symbol in a code cell, which Python will ignore, and discover how to comment out code in Jupyter.
Augmented assignment statements combine arithmetic operations with assignment to update an existing variable using operators like +=, -=, *=, /=, //=, %=, **=, with the right-hand side evaluated before updating.
Learn about advanced Python operators beyond arithmetic, including bitwise operators for bit-level calculations, and the in and is operators that test membership and object identity.
Open the module one project notebook in the file system view, complete all ten exercises, and then preview the solutions in the next video.
Apply Python fundamentals through hands-on project solutions that use floor division, modulus, exponentiation, and chained comparisons while practicing variables, unary and boolean operators, and augmented assignment.
Explore Python's basics through a bird's-eye view of the language, its interpretation, specification, and syntax, and learn about Guido van Rossum and the Monty Python naming origin.
Discover how computer programs in languages such as Python provide instructions to complete tasks, and how source code becomes machine code through compilers or interpreters.
Programming language implementations show how a computer can complete a task using different programs, with Python not compiled down directly into machine code, yet delivering identical results.
Explore how Python can implement a single task, like 34 times 99, in multiple ways—addition, near-multiplication methods, and one line of code with diverse implementations.
Explore language specification and its role as the precise ground truth for programming tasks. See how specification differs from implementation, with Python's language reference showing exact meanings.
Explain how various Python implementations read code and execute tasks by converting them into CPU instructions, including C Python, Iron Python, and G Python for Java Pi Pi.
Explore Python syntax rules, syntax errors, and examples of assignments, variable names that cannot begin with numbers, multi-character operators, and parentheses affecting order of operations.
Explore the core components of Python, including keywords, operators, and built-in functions, and learn how parentheses, brackets, and braces shape code structure and execution.
Explore how Python treats whitespace and indentation, showing that spaces are ignored except within tokens and at line starts; avoid indentation errors and understand valid block formatting.
Master how to break long lines of code in Python into multiple lines using a backslash or parentheses, and distinguish physical from logical lines of code while noting whitespace rules.
Discover how Python is an interactive language that executes one line at a time, providing immediate feedback in environments like Jupyter notebooks, the Python shell, and IPython.
Learn to run an entire python program from a file using the terminal or anaconda prompt, navigate directories with cd, and run python guess_number.py to play a number guessing game.
Python's popularity yields lots of help, tutorials, and job opportunities. As a high-level, general-purpose language with simple syntax, it enables web development, scientific computing, automation, and games, with less code.
Complete module two by implementing a Python command to bake a chocolate cake, exploring multiple correct implementations, understanding the ground truth of a language, and validating Python syntax.
Explore how every Python value is an object and how objects and types relate, using real-world analogies to distinguish object instances from their types.
Learn how the type function reveals an object's type in Python, focusing on int as the integer type and the idea of an instance.
Learn how to write integers in Python using digits, with underscores for readability. Use type function to verify integers, and remember underscores cannot be consecutive and do not affect value.
Explore Python's boolean type, a distinct bool with two values, true and false, verifiable via the type function, and see booleans in arithmetic as 1 and 0.
Explore the float type, a numeric type with decimals that differs from integers, using examples like 8.5 and 99. to illustrate decimals and type checks.
Learn how Python uses the complex type to represent imaginary numbers, using the j suffix, and how real and imaginary parts compose a complex number.
Explore the none object, a Python singleton that represents nothingness or absence of a value, a keyword with a single none type instance.
Assign a value and pass the variable into the type function to reveal its type, such as a = 124.77 showing A is a float and type returns float.
Discover how Python uses the id function to reveal an object's memory address. See that variables are labels for values, and reassigning them changes the object the label points to.
Explore dynamic typing in Python, where a variable can change type from int to bool to float. Compare with static typing and weigh quick testing against potential type errors.
Explore the built-in types that ship with Python, such as int, float, complex, strings, lists, sets, dictionaries, and ranges, and learn why these fundamentals underpin most programs.
Explore Python objects by examining attributes as single pieces of information and methods as actions, using a car and person analogies to illustrate driving, parking, eating, and sleeping.
Use dot notation to access attributes such as year and call methods like drive_forward on a Python object, with parentheses for methods and arguments to modify behavior.
Explain that not every element in Python is an object; only values assignable to a variable are objects. Distinguish operators and syntax like multiplication, assignment, and parentheses as non-objects.
Every value is an object with a type; type function reveals it. Lesson covers int, bool, float, dynamic typing, id function for addresses, and dot notation for attributes and methods.
Explore module 3 project exercises in Python, validating types with type(), understanding booleans as integers, using 1e6, underscores for readability; learn how division yields floats and // yields integers.
Introduce strings as Python's built-in data type and a sequence of characters, distinct from int, float, and bool, created with single or double quotes, and verified with type().
Learn to define Python strings containing quotes using double, single, and triple quotes, enabling multi-line strings and embedding both single and double quotes.
Learn how strings use escape characters in Python, including backslash n for new lines, backslash t for tabs, and escaping quotes, with print showing the formatted output.
Create empty strings in Python by assigning quotes with no characters, using single, double, or triple quotes. Distinguish an empty string from a string containing a single space.
Learn Unicode as the character encoding system, understand code points and their numeric values, and see how Python uses ord and chr to go between characters and code points.
Learn how string comparisons rely on Unicode code points and case, then see that strings concatenate with addition, repeat with integer multiplication, and subtraction or non-integer multiplication is invalid.
Explore string methods via dot notation, including upper, count, split, and replace, and learn that methods return new strings without changing the original.
Master method chaining in Python by applying a sequence of string methods—strip, lower, replace, and count—without intermediate variables, and learn to format the chain across lines for readability.
Learn to find a string’s length with Python’s built-in len function, since strings are sequences and have no length method, and len works for lists, tuples, dictionaries, and sets.
Learn how to interpolate variables into strings using f strings, substituting name, occupation, and salary with curly braces, and compare with the format method.
Learn to select substrings in Python by indexing strings with square brackets, using zero-based indices and negative indices, and handle index errors when a position is out of range.
Learn slice notation to select substrings with start, stop, and optional step in Python. Understand negative indices, omitted bounds, and reversing a string with [::-1].
Explore why strings are immutable and how operations create new strings instead of editing the original. See examples of assignment errors, slicing, and concatenation illustrating immutable behavior.
Learn to test for substrings in Python using the in and not in operators and the find method, returning true, false, or an index when not found.
Master the Python strings content, including string type and Unicode mapping, quotes and escapes, concatenation and repetition, indexing, slicing, immutability, and core methods like upper, lower, split, and find.
Explore Python strings through extensive exercises: creating quotes with single/double/triple quotes, using escape characters, comparing values, slicing, concatenating, stripping, finding, and building f-strings.
Learn python lists as a collection of objects using square brackets and commas, including integers, floats, booleans, strings, and nested lists. Create, print, and verify types in a notebook.
Explore how square brackets in Python take on new meanings, enabling substring selection with slice notation when appended to a string, or creating a list when used alone.
Explore how lists serve as a versatile data structure in Python, capable of holding heterogeneous data and forming a cornerstone of data organization among sets, dictionaries, and tuples.
Select Python list items using zero-based indices and slice notation to retrieve single elements or create sublists, including negative indices and reverse with negative steps.
Mutate lists by assigning new objects to indices, proving that lists are mutable while strings are immutable. Learn to remove, add, and insert items to change list content.
Learn how mutable objects behave in Python by examining how lists share references, where assigning one list creates a new name for the same object, not a new copy.
Master the fundamentals of Python by using the id function to confirm memory addresses, then apply the is operator to check object identity, and distinguish it from the equality operator.
Create a unique list copy in Python by using the copy method to produce a new list object with the same values at a different memory location.
Discover how to explore python list methods using dot notation and tab completion, then apply methods like append to modify lists, with guidance on reading documentation.
Learn how the append method mutates a list in place by adding a new item at the end, supporting any type, including other lists.
Explains how the extend method adds many items to a list in place using iterable objects, contrasts it with append, and notes strings are iterable.
Learn how the insert method places an item at a specific index, mutating the list in place, with examples at index four and at zero.
Learn how remove deletes the first matching item, pop returns the removed item by index or from the end, and clear empties the list in place.
Explore the reverse and sort methods in Python, mutating lists in place to reverse order or sort elements from least to greatest, with an option to sort in descending order.
Compare reversing a list with slice notation and the reverse method. Slice notation creates a new list and does not mutate the original, while reverse mutates the list in place.
Learn the count and index methods for Python lists: count returns the number of occurrences without mutating the list, while index returns the first position or errors if not present.
Discover how to obtain a list's length using the built-in len function. Compare lists and strings, learn that neither has a length method, and apply len to various data structures.
Concatenate lists with the addition operator, including multiple lists, while originals remain unchanged; repeat lists with the multiplication operator using an integer, for numbers or strings.
Learn how the equality operator compares lists by value, returning a boolean true only when lists have the same length, the same values, and in the same order.
Explore how to check item membership in a list using the in and not in operators in Python, with examples like numbers and strings returning true or false.
Explore how to create a list of lists and access nested items through indexing and chained selection, including lengths and multi-level retrieval.
Learn how to join a list of strings into a single Python string using the join method, with a separator such as a space or 01110.
Explore Python lists, a mutable data structure using square brackets to store heterogeneous data. Learn indexing, slicing, and essential methods like append, extend, insert, remove, reverse, sort.
Practice Python list operations in module five project: create diverse lists, index and mutate items, concatenate and extend, slice and reverse inner lists, and join strings.
Explore the range object, a sequence of integers defined by start, stop, and step, created with the range constructor. Access its attributes start, stop, and step via dot notation.
The range constructor acts as a factory that creates range objects, such as 0 to 10 or 100 to 200 by 3.
Learn how range objects define sequences in Python and how to view them by passing them to the list constructor, with start, stop, and step values (stop is not included).
Explore how the bool constructor converts inputs to booleans in Python, returning true for nonzero numbers and non-empty strings or lists, and false for zero, none, empty strings and lists.
Explore how the int constructor creates integers in Python by converting booleans, floats, and strings; booleans yield 1 or 0, floats are truncated, and digit strings convert.
Learn how the float constructor creates floats from booleans, integers, strings, and existing floats. Booleans become 0 or 1; integers become their decimal form; strings like '15' become 15.0.
Explore how the str constructor converts diverse objects—booleans, numbers, floats, lists, and ranges—into strings, revealing differences from their original types and the power of stringifying objects.
Discover advanced range functionality in Python by using len to measure length, in/not in for membership, and indexing items within a range from 17 to 895 by 41.
Master range objects and the range constructor, learning start, stop, and step, viewing sequences with the list constructor, and explore bool, int, float, and string constructors, plus len and in.
Master python ranges and sequence exercises in module six, including start-stop-step patterns, indexing, and summing digits via string and int conversions.
Explore control flow in Python by learning how the if statement directs execution based on conditions, with true or false outcomes and conditional branches.
Learn to write Python if statements with the if keyword, a condition, and a colon, then indent a code block that runs when true, using comparisons.
Master how Python uses indentation to define code blocks instead of braces. See how blocks end when indentation returns to the previous level, with if statements and loops.
Explore how else statements create the second branch in Python's conditional flow, enabling a different code block when a condition is not met, after an if block.
Explore how to create branches with elif statements in Python, mapping weather to activities and printing results with f-strings. Learn that only one branch executes and unknown conditions are handled.
Create a Python dice betting game using if and elif to adjust money 100 with 5 bet, based on six-sided outcomes: six doubles, five wins, neutral, one or two lose.
Explore multiple boolean conditions with and or operators to test complex criteria, such as an even number between 50 and 60, using modulus and chain comparisons.
Learn how nested conditional statements work by branching on whether X is even or odd and on Y's range, performing sums, triples, or subtracting values.
Discover the ternary conditional operator as a compact one-line form of if-else in Python, learn its syntax and how it selects branch one or branch two based on a condition.
Explore the in operator with strings and lists, use if/else blocks to test membership, and compare is versus equals for object identity and value.
Master implied truth values in Python across numbers, the none type, strings, and lists, recognizing zero is false, nonzero and nonempty values are true, and empties are false.
Explore Python control flow with if, elif, else branches, indentation, and nesting. Learn the ternary operator and the is operator with implied truth values.
Explore if statement syntax, indentation after a colon, and print usage; examine string methods count and find, boolean expressions, and a rent calculation with if-elif-else and f-strings.
Master the Fundamentals of Python is an extremely comprehensive course targeted for beginners who want to build their skills slowly and thoroughly without knowledge gaps. This course is packed full of material to ensure your understanding, regardless of your learning style, and includes the following:
Interactive Video Lessons
More than 25 hours of hands-on, interactive video lessons are provided. We will be programming together in the excellent Jupyter Notebook as we complete each module. Eventually, we will graduate to using Visual Studio Code, a more professional coding environment.
A Digital Book
You'll get a 300+ page downloadable PDF of the book Master the Fundamentals of Python. This allows you to access all of the course contents in a single document, even when offline.
Exercises and Solutions
More than 200 exercises with detailed solutions are available for you to practice what you've learned.
Projects
There are several projects available where you'll build larger programs that combine together multiple different topics. Some of the projects include Choose Your Own Adventure, Tic-Tac-Toe, and Texas Hold'em Poker with artificial intelligence.
Certification Exam
After covering all of the material in the course, you will be given a challenging certification exam to prove your mastery of the material. Passing this exam awards you a certificate of completion.
About the Instructor
This course is taught by expert instructor Teddy Petrou who is author of multiple books, including:
Pandas Cookbook
Master Data Analysis with Python
Master the Fundamentals of Python
Build an Interactive Data Analytics Dashboard with Python
Teddy has taught hundreds of students Python and data science during in-person classroom settings. He sees first hand exactly where students struggle and continually upgrades his material to minimize these struggles by providing a simple and direct path forward.
Teddy has demonstrated his deep fluency in Python by developing open source Python libraries and is the creator of dexplo, a suite of data science packages that include bar_chart_race, dexplot, jupyter_to_medium, and dataframe_image. He holds a Master's degree in Statistics from Rice University.
Course Curriculum
Operators
Syntax
Objects and types
Strings
Lists
Ranges and constructors
Conditional statements
Writing entire programs
Looping
List comprehensions
Built-in functions
User-defined functions
Tic-Tac-Toe
Tuples, sets, dictionaries
Modules
User-defined modules
Errors and exceptions
Files
Classes
Texas hold’em poker