
This course includes our updated coding exercises so you can practice your skills as you learn.
See a demo
Explore Python from basics to advanced topics, set up a professional development environment, and practice with notebooks to automate tasks, build web apps, and advance in machine learning.
Join our online classroom to boost accountability, connect with a learning community, and finish the course through peer support, accountability buddies, and collaborative chats.
Discover free Gtlm resources for the complete Python developer track, including coding challenges, open source projects, cheat sheets, industry newsletters, and a global community across Discord and YouTube.
Explore what a programming language is, how computers speak in zeros and ones, and how interpreters and compilers translate code into machine language, with Python as a primary example.
Learn how programming languages rely on translators like interpreters and compilers, download Python from Python.org, and how CPython turns Python source into bytecode executed by a virtual machine.
Learn to run Python code now with a browser interpreter and a professional setup using terminals, editors (Sublime Text, VS Code), IDEs (PyCharm, Spyder), and Jupyter notebooks.
Create your first Python program in main.py that prints your name, uses input to capture it, and runs on the interpreter to display a hello message.
Learn how Python 2 and Python 3 differ, including breaking changes like the print function, and why the community now prioritizes Python 3 and legacy code awareness.
Explore why many programming languages exist and how each excels at tasks from low-level systems to high-level options like Python, Java, and JavaScript, focusing on productivity and diverse applications.
Practice teaching others how Python works to deepen understanding: explain source code, the interpreter, and how Python runs on machines in simple terms.
Master Python by learning terms, statements, variables, and instantiation; explore data types and values; and practice storing, retrieving, and acting on data with best practices.
Master Python data types, from fundamental types like int, float, bool, and string to lists, tuples, sets, dicts, and None, and learn storage and manipulation concepts.
Explore ints and floats as Python's integer and floating point data types, perform arithmetic, print results, and observe how division, modulo, and type checks reveal data types.
Explore int and float data types in Python, perform modulo, floor division, and power operations, and use built-in math functions such as round and abs, plus printing results.
Focus on the 20% of Python concepts that get used 80% of the time, learning by using and googling when needed, not memorizing every syntax or function.
Explain operator precedence in Python using math-like rules: parentheses, power, multiplication and division, then addition and subtraction. Illustrate with examples like 20 minus 3 and 20 plus 3 times 4.
Explore the optional complex data type and learn how bin gives binary representations of integers, then convert binary to decimal to understand memory storage of numbers.
Explore Python variables, how to bind values to names and reuse them, and practice naming with snake_case while respecting case sensitivity and avoiding keywords.
Explore expressions and statements, distinguishing an expression that yields a value (100 divided by five equals 20) from a statement that assigns that value to a variable.
Explore augmented assignment operators in Python, using the shorthand += and *= to update a variable in place, illustrated by turning five into seven.
Explore Python strings as text, using single, double, and triple quotes, print and inspect type, and concatenate names with spaces for a login form example.
Master string concatenation by adding strings with plus, producing results like 'Hello, Andre,' and recognizing type errors when mixing strings with non-strings, with further exploration in the next video.
Explore type conversion in Python by turning numbers into strings and back, using str and int, and checking the resulting types with print and type.
Master Python escape sequences to embed quotes and special characters in strings, using backslashes to handle apostrophes, tabs, and newlines in printed output.
Learn to create dynamic messages with formatted strings in Python, using f-strings for clean variable insertion and exploring legacy dot format, type conversion, and proper placeholder ordering.
Learn how Python stores strings as ordered characters and uses index and slicing with start, stop, and step, including negative indices for reversing.
Explore string slicing in Python and the core concept of immutability. Learn why strings cannot be changed and how reassigning creates new strings and memory changes.
Discover built-in functions and string methods in Python, such as len, upper, find, and replace, plus string immutability and dot notation for slicing.
Explore booleans in Python, where true and false drive logical decisions, and learn how to convert integers and strings to boolean values to control program flow.
Explore type conversion in Python by turning user input into integers, calculating age from birth year, and using print statements and f-strings to display results.
practice purposeful commenting in python by keeping code self-explanatory, using comments sparingly to clarify complex logic, and improving variable names instead of cluttering with unnecessary notes.
Build a Python password checker that asks for a username and password, then prints a greeting and masks the password with stars matching its length.
Learn how lists, Python's ordered collections, store mixed types using square brackets, access items by index, and compare lists to arrays while exploring data structures.
Explore list slicing in Python to access items, understand mutability versus strings, and learn how copying with slicing creates a new list while direct assignment aliases memory.
Learn how matrices model two-dimensional lists, access nested elements with indices, and see how a simple zeros and ones image demonstrates pixel-level computation and basic array operations.
Explore Python list methods such as append, insert, extend, pop, remove, and clear, and learn how they modify lists in place with practical basket examples.
Explore Python list methods and string operations, including append, insert, extend, pop, remove, clear, and index. Use optional start and stop parameters, the in keyword, and count to track occurrences.
Learn how list methods sort in place, the difference between sort and the built-in sorted, and how copy and reverse affect list order.
Explore common list patterns in Python, including computing list length, reversing with slicing, and using range to generate numbers; learn how join combines list items into a string.
Discover list unpacking in Python by assigning a list to variables and using a star expression to capture the rest, enabling flexible splits like a, b, c and other.
Explore the None data type in Python, representing the absence of value, and compare it to NULL, then learn how to initialize variables like weapons as None in games.
Explore dictionaries in Python, a data structure of unordered key value pairs stored in curly brackets, accessed by keys to retrieve values, with examples using lists and memory layout.
Master when to use lists versus dictionaries by weighing order, data capacity, and key-value flexibility. Practice recognizing tradeoffs to choose the right data structure for projects.
Explore dictionary keys by using strings, booleans, and numbers, and see why lists cannot be keys due to immutability. Learn that keys must be unique to avoid overwriting values.
Access dictionary values safely with get to avoid key errors, supply a default when keys are missing, and compare dict creation with dict() versus literals.
Master essential dictionary methods in Python, including the in keyword for membership and keys, values, and items for iteration, plus clear, copy, pop item, and update.
discover that tuples are immutable lists: indexable, support membership tests, more efficient, and ideal for fixed data like coordinates or dictionary keys, unlike mutable lists.
Explore how tuples relate to lists, showing slicing, indexing, and the built-in length, plus count and index methods, and demonstrate tuple assignment and unpacking and immutability.
Explore sets in Python, unordered collections of unique objects, learn to remove duplicates by converting lists to sets, test membership, and copy or clear sets for practical coding.
Explore Python sets by comparing two sets, using methods like difference, discard, update, intersection, disjoint, union, and the concepts of subset and superset, with practical examples.
Explore how Python's data types, methods, and built-in functions like print empower you to control program flow with conditions and loops.
Learn conditional logic in Python using booleans, if and else blocks, and elif to combine conditions. Use expressions like is_old and is_licensed to control flow and decide who can drive.
Learn how indentation defines Python blocks, as the interpreter uses spaces to indicate an if block and its hierarchy. Compare four-space conventions and editor auto formatting.
Explore truthy and falsy values in Python, and how boolean type conversion drives conditional logic in if statements, including login checks with username and password.
Explore the ternary operator, a compact form of conditional expressions in Python since version 2.4, that evaluates to a value and offers a clean shortcut for true or false branches.
Explore how short circuiting in Python optimizes boolean expressions using and and or, ensuring the interpreter stops evaluating once the outcome is known.
Explore Python logical operators, including greater than, less than, equal to, not equal to, and their or, and not forms, with examples, syntax nuances, and short-circuit behavior.
Explore conditional logic with logical operators to classify users as magician and expert, magician but not expert, or not a magician, prioritizing readable code over cleverness and short-circuiting.
Discover how Python differentiates identity and value with is and ==, showing that == compares values like 10 and 10.0 while is checks memory identity for objects such as lists.
Explore how for loops in Python enable repeated execution over iterables like strings, lists, sets, tuples, and dictionaries, using indentation and nesting to print and combine items.
Learn what iterables are in Python, including lists, dictionaries, tuples, sets, and strings. Master iterating them with for loops using items, values, and keys.
Build a simple Python counter by looping through a list, accumulating a total in a separate variable, and printing after the loop to avoid repeated prints due to indentation.
Explore how Python's range function creates a range object for iterating integers, from start to stop, with optional step, useful in for loops, reversing, and converting to lists.
Explore the enumerate function, which returns an enumerate object and provides an index with each item when iterating over strings, lists, and tuples, like using range to locate 50.
Explore how while loops run under a condition, prevent infinite loops with break and i += 1, and learn about else blocks.
Compare when to use while loops versus for loops, showing fixed-iteration versus condition-based iteration, with break to avoid infinite loops and practical list examples.
Master break, continue, and pass in Python loops, including for and while. Break exits the current loop, continue restarts the loop, and pass serves as a development placeholder.
Learn to simulate a Python GUI by looping over lists of lists, printing spaces for zeros and stars for ones, using nested loops and print end to render a bitmap.
Explore what makes clean, readable Python code by following style, naming, and formatting best practices; prioritize predictability, avoid repetition, and plan for extensibility.
Learn to find duplicates in a list using only conditionals and loops, without sets, by counting occurrences and appending each unique duplicate to a result list, then printing it.
Learn how to define your own Python functions with def, call them with brackets, and reuse them to keep code DRY while creating custom actions like show tree.
Understand parameters and arguments using the say hello function, and see how defining parameters and passing arguments enables dynamic, reusable greetings.
Explore how positional arguments require correct order when defining and calling functions. Learn how keyword arguments improve readability and how default parameters safeguard calls when arguments are missing.
Explore how the return keyword in Python functions yields a value or none, exits the function, and enables assigning results to variables.
Discover the difference between methods and functions in Python. Learn how dot notation exposes object-owned methods on strings, sets, and other types, and how these differ from plain functions.
Explore doc strings in Python to document functions, viewable with help and dunder magic methods, and improve code clarity in collaborative environments.
Explore clean code by refining a simple is even function with the modulo operator, reducing redundant checks and returning a boolean expression for tighter, clearer code.
Explore how to use *args and **kwargs in Python to accept any number of positional and keyword arguments, sum values, and understand parameter ordering rules.
Create a highest even function that filters even numbers from a list and returns the maximum using max, while clarifying loop boundaries and proper return timing.
Explore the walrus operator and assignment expressions in Python. Learn how to assign values within larger expressions in if and while statements to reduce repetition.
Scope explains which variables are accessible in Python, distinguishing global scope from function scope, and shows how undefined names trigger name errors, with the function creating a new world.
Explore Python scope rules by tracing how local, global, and parent scopes determine the value printed by a function and its variables.
Explains how to use the global keyword to access a global total inside a function, contrasts it with local scope, and introduces dependency injection as a cleaner alternative.
Learn about the nonlocal keyword in Python 3, which lets an inner function access and modify a variable that isn’t global but sits in the outer local scope.
Explore why using global variables is discouraged and how scope manages memory, showing how local and non-local variables interact, and how Python's garbage collector reclaims memory to keep programs efficient.
Discuss imposter syndrome as a learning signal, encourage practicing by teaching others on Discord to reinforce skills, stay kind, and keep progressing through repetition.
Install Python 3 from python.org on mac or linux, then verify in the terminal by running python3 to ensure you're using Python 3.
Install Python on Windows from python.org, add Python to path, and install the launcher for all users. Run Python from Command Prompt, PowerShell, or Git Bash to verify it works.
Explore professional Python development tools, from the terminal to code editors and IDEs, and learn how these environments boost Python coding with debugging, auto completion, unit testing, and Jupyter Notebook.
Explore installing and using Sublime Text as a powerful code editor, enable Python 3 with packages, build and run code, and tailor color schemes for clearer debugging.
Explore the terminal across Mac and Windows, using fast commands like ls, cd, pwd, mkdir, touch, open, mv, and rm to manage files, access servers, and streamline workflows.
Use the command line to run a python script by setting the present working directory, invoking the python interpreter, and executing the program to display a tree.
Explore Visual Studio Code, a popular editor. Install on Mac or Windows, select a Python interpreter, install the Python extension, and run code in the integrated terminal with syntax highlighting.
Learn how PyCharm, a Python-focused IDE, offers built-in tools for Python development, sets Python 3 as the interpreter, and lets you create projects and run code with pep8 checks.
Learn to format Python code using PEP 8, install and use a PEP 8 formatter in editors like VS Code, and apply automatic formatting on save for clean, compliant code.
Learn to use the Anaconda distribution to run Jupyter notebooks with Python tools like NumPy, Pandas, and TensorFlow, launching notebooks on local host and creating code and markdown cells.
Customize your terminal to your liking and use Jupyter notebooks for notes and small code snippets. Pick one code editor or IDE, customize it, and stick with it.
Learn how Python treats everything as an object and how the class keyword creates objects with methods and attributes, enabling scalable, maintainable code through object oriented programming as a paradigm.
Explore object oriented programming as modeling real world objects with Python classes declared via the class keyword, camel case naming, and instantiated objects with access to their methods and attributes.
Create your own objects by defining a class with an init method, instantiate players, and set attributes with self. Use dot notation to run methods and manage multiple distinct objects.
Learn how Python objects use attributes and methods to model real world scenarios. Distinguish dynamic instance attributes from static class attributes, with a player character example.
Explore how the __init__ constructor controls object instantiation, enabling safeguards and default parameters for name and age. Learn to enforce data integrity with age checks and clear error messaging.
Explore class methods and static methods in Python, using decorators to define functions that access the class via cls or operate without class state, and call on the class itself.
Trace the shift from procedural to object-oriented programming in Python, focusing on classes, instantiation, __init__, class object attributes, and static and class methods.
Test your assumptions as you learn Python by printing self, running code, and inspecting objects like a player character, then explore concepts like __main__ and modules to deepen understanding.
Master encapsulation by binding data and functions into objects in object-oriented programming, using attributes and methods to model a player character and its interactions.
Abstraction hides unnecessary details and exposes only what matters, letting you use speak, count, and built-in functions without knowing their implementations.
Explore how Python handles private versus public variables using underscore prefixes, noting there is no true privacy and abstraction guides safe access.
inheritance lets new objects take on properties from existing ones, letting wizard and archer subclasses reuse the user class’s sign-in and add unique attack methods.
See how Python uses isinstance to verify that Wizard One is an instance of Wizard, and, via subclassing, of User and the base object, inheriting methods.
Explore polymorphism in Python by showing how different classes share the same method name to produce distinct outputs, illustrated with wizard and archer attacks.
Explore how to initialize a subclass by calling the parent __init__ via super, passing the email argument to set shared attributes without duplicating code.
Explore how Python uses object introspection to determine an object's type at runtime, using the dir function to reveal an object's methods and attributes, including magic methods.
Discover how dunder methods power Python objects by customizing behavior with __str__, __len__, __del__, __call__, and __getitem__ on a toy class.
Extend Python lists by creating a super list subclass, override __len__ to return 1000, and inherit remaining list behaviors to gain full functionality.
Explore multiple inheritance in Python by combining wizard and archer traits to build a hybrid character, and learn how init parameters and inheritance can create complexity.
Understand python's method resolution order (mro) and its role in attribute lookup in multiple inheritance, with examples showing the d–b–c–a path and how to inspect it.
Compare functional programming with object-oriented programming, explore how Scheme introduced functional ideas, and examine the tradeoffs and benefits of blending paradigms.
Explore functional programming's separation of concerns, data and functions, and pure functions, and how it uses simple data structures like lists and dictionaries. This approach emphasizes maintainability and memory efficiency.
Understand pure functions that always yield the same output for the same input and avoid side effects like printing. Learn how functional programming separates data from functions to reduce bugs.
Explore map, filter, zip, and reduce in Python, practicing functional programming with map creating a new list and avoiding changes to the original.
Discover how the filter function selects items by a predicate, such as odd numbers, returning a new list while keeping the original intact and contrasting it with map.
Learn how the zip function combines two or more iterables into paired tuples, without modifying originals, with practical use cases like pairing usernames with phone numbers from a database.
Import reduce from the funk tools tool belt, then use it to accumulate a list into a single value by passing a function, the list, and an accumulator of zero.
Explore lambda expressions in Python, one-time anonymous functions used with map, filter, and reduce to keep code concise; understand the readability trade-offs.
Create a one-line lambda expression to square a list, producing a squared sequence. Then sort a list of tuples by the second element using a lambda as the key.
Explore Python's comprehension shortcuts, including list, set, and dictionary comprehensions, creating lists with for loops and conditionals, illustrated by doubling numbers and filtering evens, with notes on readability.
Master set and dictionary comprehension in Python using for loops and dict items to build sets and key-value pairs, including even value filtering and power of two.
Learn to use Python list and set comprehensions to identify duplicates in a list, returning a one-line, readable result of repeated elements in the complete python developer course.
Explore decorators in Python and how functions are first-class citizens, assignable and passable like variables. See how decorators add extra functionality to a function.
Learn how higher order functions accept functions as parameters or return functions, with examples like map, reduce, and filter, and get a teaser for decorators.
Create a decorator that wraps a function with a wrapper to enhance it, as shown with my decorator and the hello function, and apply behavior with @my_decorator.
Explore how decorators enable function calls by unpacking positional and keyword arguments with *args and **kwargs. Learn how the decorator pattern enables a performance decorator to measure function speed.
Learn how to build a Python performance decorator to measure a function’s runtime with the time module, a wrapper, and *args, **kwargs, and see how decorators power Django and Flask.
Learn how Python handles errors and exceptions, with common issues like syntax, name, type, index, key, and zero division, and master error handling to keep programs running.
Handle errors in Python by wrapping code in a try block, catching value and zero division errors with except, and use while loops to keep prompting for valid input.
Build a solid error handling approach in python by using try and except blocks, catch TypeError and ZeroDivisionError with specific messages, use as error and f-strings, and raise custom errors.
Explore Python error handling with try, except, else, and finally, using loops and input validation to handle value errors, zero division errors, and ensure final actions run, even on failures.
Learn to anticipate and gracefully handle errors and exceptions in Python, using raise, value error handling, accept blocks, and thoughtful input handling to prevent crashes.
Learn how Python generators yield values over time, why range is a generator, and how generating items one-by-one saves memory compared with creating large lists.
Explore how generators differ from regular iterables and use yield to pause and resume execution. Generate items one by one, keeping memory low and advancing with next until stop iteration.
Demonstrate how generators process data one by one and avoid storing large results in memory, delivering faster, memory-efficient performance over lists in Python.
Explore how Python's for loops and range work under the hood by implementing a custom iterator and a generator-like range, using next, stop iteration, and dunder methods.
Implement Fibonacci numbers using a generator to yield values one by one and avoid memory-heavy lists. Compare this generator approach with a list and note exponential growth and performance benefits.
It's time to become a modern and complete Python developer! Join a live online community of over 900,000+ developers and a course taught by an industry expert that has actually worked both in Silicon Valley and Toronto. Graduates of Andrei’s courses are now working at Google, Tesla, Amazon, Apple, IBM, JP Morgan, Meta, + other top tech companies.
Learn Python from scratch, get hired, and have fun along the way with the most modern, up-to-date Python course on Udemy (we use the latest version of Python). This course is focused on efficiency: never spend time on confusing, out of date, incomplete Python tutorials anymore.
This comprehensive and project based course will introduce you to all of the modern skills of a Python developer (Python 3) and along the way, we will build over 12 real world projects to add to your portfolio (You will get access to all the the code from the 12+ projects we build, so that you can put them on your portfolio right away)!
The curriculum is going to be very hands on as we walk you from start to finish of becoming a professional Python developer. We will start from the very beginning by teaching you Python basics and programming fundamentals, and then going into advanced topics and different career fields in Python so you can get real life practice and be ready for the real world.
The topics covered in this course are:
- Programming Fundamentals
- Python Basics
- Python Fundamentals
- Data Structures
- Object Oriented Programming with Python
- Functional Programming with Python
- Lambdas
- Decorators
- Generators
- Testing in Python
- Debugging
- Error Handling
- Regular Expressions
- Comprehensions
- Modules
- Virtual Environments
- Developer Environments (PyCharm, Jupyter Notebooks, VS Code, Sublime Text + more)
- File Processing: Image, CSV, PDFs, Text + more
- Web Development with Python
- Machine Learning with Python
- Data Science with Python
- Automation with Python and Selenium
- Scripting with Python
- Web Scraping with Python and BeautifulSoup
- Image Detection
- Data Visualizations
- Kaggle, Pandas, NumPy, scikit-learn
- Email and SMS with Python
- Working with APIs (Twitter Bot, Password Checker, Translator)
By the end of this course, you will be a complete Python developer that can get hired at large companies. We are going to use Python to work with Email, Text Messages, CSV files, PDF files, Image Files, Data Visualizations, build our own machine learning model and perform Image detection. We are going to build a web scraper for HackerNews, build a Twitter bot, build the most secure password checker and we will also build some automation tools using Selenium. But the best part? We will build an actual portfolio website using Python that your future employer and customers can contact you at. By the end, you will have a stack of projects you have built that you can show off to others.
Here’s the truth: Most courses teach you Python and do just that. They show you how to get started. But the thing is you don’t know where to go from there or how to build your own projects.
Whether you are new to programming, or want to level up your Python skills, or are coming from a different programming language, this course is for you. This course is not about making you just code along without understanding the principles so that when you are done with the course you don’t know what to do other than watch another tutorial. No! This course will push you and challenge you to go from an absolute beginner with no coding experience to someone that can go off, forget about me, and build their own applications and get hired.
Taught By:
Andrei Neagoie is the instructor of the highest rated Development courses on Udemy as well as one of the fastest growing. His graduates have moved on to work for some of the biggest tech companies around the world like Apple, Google, Amazon, JP Morgan, IBM, UNIQLO etc... He has been working as a senior software developer in Silicon Valley and Toronto for many years, and is now taking all that he has learned, to teach programming skills and to help you discover the amazing career opportunities that being a developer allows in life.
Having been a self taught programmer, he understands that there is an overwhelming number of online courses, tutorials and books that are overly verbose and inadequate at teaching proper skills. Most people feel paralyzed and don't know where to start when learning a complex subject matter, or even worse, most people don't have $20,000 to spend on a coding bootcamp. Programming skills should be affordable and open to all. An education material should teach real life skills that are current and they should not waste a student's valuable time. Having learned important lessons from working for Fortune 500 companies, tech startups, to even founding his own business, he is now dedicating 100% of his time to teaching others valuable software development skills in order to take control of their life and work in an exciting industry with infinite possibilities.
Andrei promises you that there are no other courses out there as comprehensive and as well explained. He believes that in order to learn anything of value, you need to start with the foundation and develop the roots of the tree. Only from there will you be able to learn concepts and specific skills(leaves) that connect to the foundation. Learning becomes exponential when structured in this way.
Taking his experience in educational psychology and coding, Andrei's courses will take you on an understanding of complex subjects that you never thought would be possible.
See you inside the course!