We may earn an affiliate commission when you visit our partners.
Course image
Mashrur Hossain and Nathan House

Join the most comprehensive and beginner friendly course on learning to code with Python - one of the top programming languages in the world - and using it to build Algorithms and Data Structures with Projects utilizing them from scratch.

You will get:

1) 14+ hours of animation heavy instructional video

2) 14 coding exercises using Udemy's internal python coding environment

3) Quizzes to test your understanding at every step

4) 80+ Python scripts with practice exercises and lecture notes

5) Live help channel and designated office hours with the instructor

Read more

Join the most comprehensive and beginner friendly course on learning to code with Python - one of the top programming languages in the world - and using it to build Algorithms and Data Structures with Projects utilizing them from scratch.

You will get:

1) 14+ hours of animation heavy instructional video

2) 14 coding exercises using Udemy's internal python coding environment

3) Quizzes to test your understanding at every step

4) 80+ Python scripts with practice exercises and lecture notes

5) Live help channel and designated office hours with the instructor

6) Multiple assessment tests to test your progress

7) A free Python e-book

and much, much more.

This course is truly one of a kind and focused solely on your learning.

Check out some of the amazing reviews it's receiving:

From Ryan - "I've only had it for one day and it's been absolutely incredible. Wonderful instructor that does a terrific job of explaining complex topics. I'm not even a quarter of the way in and I already feel that I've gotten exponentially more than what I paid."

From Jason - "Great course, the instructor is clearly well-versed with Python programming and gives very clear instruction. I particularly found the algorithms and data structures section to be valuable. Strongly recommend this course, the best Python programming course I've taken by a significant margin."

From Rob - "As a software engineer that needs to get up to speed on some Python for a data-science project, this was perfect. It's in-depth where it needs to be, clear, and very well put together."

I will walk you step-by-step through the fascinating world of Python programming using visualizations of programs as they execute, algorithms as they run and data structures as they are constructed. Nothing is left to the imagination, we'll see it all and then build it all.

Since it caters to a broad spectrum of students, the course is split in two parts, part 1 focusing on the Python programming language and part 2 focusing on Algorithms, Data Structures, Performance Analysis and larger scale projects. Details below:

Part 1: Python and programming fundamentals

  • Text - Strings

  • Numbers - Ints and Floats

  • Execution flow control - Branching with if/elif/else

  • Compound data types - Lists, Dictionaries, Tuples, Sets

  • Iterables and Iteration with generators, for and while loops and more.

  • Functions, execution context and frames, building custom functions

  • List comprehension

  • Lambda expressions

  • Generators and creating your own generators with yield

  • Objects and building classes, methods, special methods

  • Reading from and writing to files using context managers

  • Projects

  • Visualization with each topic and more.

Part 2: Algorithms, Data Structures and Performance Analysis

  • Sorting algorithms (basic) - Bubble sort, Selection sort, Insertion sort

  • Sorting algorithms (advanced) - Merge sort, Quick sort

  • Big O notation, complexity analysis, divide and conquer, math visualizations

  • Recursion in-depth with examples

  • Searching algorithms - Bisection search, hashing

  • Data Structures with Linked lists, Stacks, Queues, Trees, Binary Search Trees

  • Operations with Data structures - insert, search, update, delete

  • Multiple projects with increasing level of complexity that tie the concepts together

  • Visualizations of every algorithm, data structure and operations and more.

So whether you are interested in learning the top programming language in the world in-depth

OR interested in learning the fundamental Algorithms, Data Structures and performance analysis that make up the core foundational skillset of every accomplished programmer/designer or software architect

OR you are looking to ace your next technical interview 

OR all 3 above - This is the course for you.

And on top of that, it comes with a 30 day money back guarantee. If you are not satisfied in any way, you will not only get your money back but you also get to keep the free e-book and tons of downloadable practice exercises and code just for trying it out.

So what are you waiting for? Learn to code with Python while building projects and implementing algorithms and data structures, and gain a core competency in Computer Science that will advance your career and increase your knowledge in the most effective way.

Enroll now

What's inside

Learning objectives

  • Learn python 3 from scratch, in-depth
  • Understand the fundamentals of programming languages
  • Learn to visualize algorithms, data structures, program execution and information flow
  • Learn to use python to build projects
  • Algorithms (basic to advanced) - sort, search, insert, delete
  • Data structures - elementary to complex
  • Become proficient in technical interview topics

Syllabus

Introduction

Welcome to the course!

This text lecture includes information on live help, office hours and an e-book based on the content from the introductory "Python in-depth" section (Section 3) of this course. I will post updated versions of the book here if/when they become available.

Read more

An in-depth look at the structure of the course and an overview of the content of every section

An introductory message to complete beginners to programming

A look at development environments, some options and what we'll use in the course

Some basic commands you can use to navigate through the command line/terminal

Explore various options available and download Python 3

Download and customize the Atom text editor. This is the editor used in this course throughout

A detailed look at using Jupyter Notebooks for developing Python code

Introduction to material covered in the section and who it's intended for

A quick look at using the command line/terminal window to navigate file directories

Working with strings and variables to handle text

Review some string basics covered in the previous video

Some helpful tips on quizzes and assessment tests

Detailed look at string concatenation, indexing and slicing

Wrap up our look at strings with some functions and methods available to string objects. Also investigate import statements and how they work

A look at how to format print statements and use special characters within strings

Working with numbers and computation along with type casting and getting input from user

This is an assessment test for Python basics we have covered so far including working with text, numbers and print formatting

An introductory look at branching and how it works including real code examples from projects built in the course in later sections

An in-depth look at building if elif and else blocks using conditional tests and boolean values

An introductory look at collections in Python

Working with lists and exploring functions and methods

Working with sublists, slicing, indexing and basic iteration

Working with dictionaries, sets and tuples

An in-depth look at using for loops in combination with iterables and generators along with list comprehension

This is an assessment test for compound data structure fundamentals.

Conclude our look at iterators, generators and popular functions associated with them with while loops and enumerate and zip functions

A look at functions, their structure, properties and examples

Take a program and build a function step by step

An in-depth look at the execution context (with global and function frames) of python programs, along with the differences between mutable and immutable data types passed in as parameters

This is the final assessment test for Python fundamentals and will test knowledge of lists, tuples, dictionaries, iterators and functions

An introductory look at objects with example classes built in the course

Learning the basics of building a class from scratch and special __init__ method

Add the add and remove_course methods to the class

Explore some special methods like __init__ and __repr__

Working with files and performing read and write operations using context managers and permissions

Add previously built read functionality to the student class using static and regular methods, along with another special method __eq__ to test for equality based on custom definition

Complete Student class and look at inheritance and subclasses

Description lecture for bonus content I will post in the rest of the section

In this optional last part of the section, we will look at some Python specifics, starting with Lambda expressions, also known as anonymous functions.

Explore lambda expressions and use them in conjunction with other functions like map

You have already seen generator objects in use, let's take a deeper look at what they are and how they work.

Create custom generators using yield

Intro to part 2 of this course with section 4 and sorting algorithms, performance analysis and recursion

Visual presentation and complexity analysis of the bubble sort algorithm

Implement the bubble sort algorithm step by step

Visual presentation and complexity analysis of the selection sort algorithm

Implement the selection sort algorithm step by step

Complete visualization of the insertion sort algorithm and assignment handoff for implementation

Programmatic visual of execution steps performed by the insertion sort algorithm as it sorts a list of 5 elements

Take a look at best, worst and average cases for complexity in more detail

Discuss algorithms that achieve O(nlog(n)) performance and prerequisites for next one

An in-depth look at log(n) and what it represents

Take a look at the merge sort algorithm and its big O analysis

Start building the merge function - comparison

Continue building merge function - iteration through lists

Complete merge function - add remaining items

A look at the divide/split function which introduces recursion

Analyze execution context and frames created by recursive divide function in-depth

Build a countdown timer using recursion

Build a recursive factorial function step by step

Understand, break down and implement a recursive fibonacci function

Complete implementation of the merge sort algorithm and visualize execution context

Traffic lights

Read about what's good
what should give you pause
and possible dealbreakers
Provides a comprehensive introduction to Python, covering fundamental concepts like data types, control flow, and functions, which are essential for building a strong foundation in programming
Explores fundamental algorithms and data structures, such as sorting algorithms, linked lists, and trees, which are crucial for problem-solving and efficient code design in software development
Covers common technical interview topics, including algorithm analysis, data structure implementation, and problem-solving strategies, which can significantly improve performance in job interviews
Introduces Big O notation and complexity analysis, providing learners with the tools to evaluate the efficiency of algorithms and data structures, which is essential for optimizing code performance
Requires learners to download and customize the Atom text editor, which may present a barrier to entry for those unfamiliar with setting up development environments
Uses Python 3, which is actively supported, but learners should ensure they are using the latest minor version to benefit from the newest features and security updates

Save this course

Create your own learning path. Save this course to your list so you can find it easily later.
Save

Reviews summary

Comprehensive python with algorithms & projects

Learners say this course offers a comprehensive and largely positive experience for mastering Python fundamentals and essential algorithms and data structures. Students frequently praise the instructor's clear explanations and the highly effective use of visualizations to simplify complex topics. The project-based approach is highlighted as a valuable method for applying learned concepts practically. Reviewers note it's well-suited for beginners seeking a strong foundation as well as those preparing for technical interviews, providing in-depth coverage relevant to both paths. While experiences with pacing may vary, the overall feedback emphasizes a high-quality, well-structured learning journey.
Covers a wide range of topics deeply.
"It's a long course, but the depth of coverage justifies the time investment."
"Covers everything promised and more, truly comprehensive."
"A lot of material to go through, but it's all relevant and well-organized."
"The sheer amount of content provides excellent value."
Instructor is responsive and course is current.
"Instructor seems active and updates the course."
"Live help and office hours are a great resource."
"The course content feels up-to-date and relevant."
"Received timely responses to my questions."
Accessible entry point for new programmers.
"Perfect course for someone with zero programming experience."
"It's very beginner friendly and covers the fundamentals well."
"Started as a complete novice and feel confident in Python basics now."
"The initial sections build up concepts gradually for newcomers."
Hands-on projects solidify understanding.
"Building projects helped me apply what I learned directly."
"The practical exercises and projects are the strongest aspect for me."
"Loved the hands-on coding and practical application sections."
"Reinforced theoretical concepts through practical implementation."
Provides valuable depth in algorithms/data structures.
"The algorithms and data structures part is incredibly valuable, especially for interviews."
"Gained a solid understanding of core computer science concepts."
"Covers essential topics like sorting, searching, trees, and linked lists thoroughly."
"This section alone makes the course worthwhile for foundational knowledge."
Instructor makes complex topics easy to grasp.
"The instructor explains concepts with incredible clarity and uses amazing visualizations."
"Visualizations used for algorithms and data structures significantly aided understanding."
"Complex ideas are broken down simply; I really understood the logic."
"His ability to explain difficult subjects is truly exceptional."
Some sections may feel faster or slower.
"Most parts were well-paced, but a few felt slightly rushed."
"Found the speed just right for my learning style."
"Some very complex topics could perhaps use a bit more time."

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Python 3: Project-based Python, Algorithms, Data Structures with these activities:
Review Python Fundamentals
Solidify your understanding of Python syntax, data types, and control flow before diving into more advanced topics.
Browse courses on Python Basics
Show steps
  • Review notes on variables, data types, and operators.
  • Practice writing simple programs using if/else statements and loops.
  • Complete online quizzes or coding challenges to test your knowledge.
Review 'Automate the Boring Stuff with Python'
Reinforce your understanding of Python fundamentals and gain practical experience through real-world automation examples.
Show steps
  • Read the chapters covering basic Python syntax and data structures.
  • Work through the example projects in the book, adapting them to your own needs.
  • Experiment with different automation tasks to solidify your understanding.
LeetCode Easy Problems
Sharpen your problem-solving skills and apply your knowledge of algorithms and data structures by solving LeetCode problems.
Show steps
  • Select a set of easy-level LeetCode problems related to sorting, searching, and data structures.
  • Attempt to solve each problem independently, focusing on efficiency and clarity.
  • Review the official solutions and discuss alternative approaches.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Build a Simple Calculator
Apply your Python skills to create a functional calculator that performs basic arithmetic operations.
Show steps
  • Design the user interface for the calculator, including input fields and buttons.
  • Implement the arithmetic operations using Python functions.
  • Connect the user interface elements to the corresponding functions.
  • Test the calculator thoroughly to ensure accuracy and functionality.
Create a Data Structures Cheat Sheet
Consolidate your understanding of data structures by creating a comprehensive cheat sheet with explanations and examples.
Show steps
  • Choose the data structures to include in the cheat sheet (e.g., lists, dictionaries, trees).
  • Write concise explanations of each data structure's properties and operations.
  • Include code examples demonstrating how to use each data structure in Python.
  • Organize the cheat sheet in a clear and visually appealing format.
Review 'Grokking Algorithms'
Gain a deeper understanding of algorithms and data structures through visual explanations and practical examples.
Show steps
  • Read the chapters covering sorting algorithms, searching algorithms, and data structures.
  • Work through the example problems in the book, implementing the algorithms in Python.
  • Experiment with different inputs and analyze the performance of the algorithms.
Contribute to a Python Project
Apply your Python skills and collaborate with other developers by contributing to an open-source project.
Show steps
  • Find a Python project on GitHub that aligns with your interests and skill level.
  • Review the project's documentation and contribution guidelines.
  • Identify a bug or feature to work on and submit a pull request with your changes.
  • Respond to feedback from the project maintainers and revise your code as needed.

Career center

Learners who complete Python 3: Project-based Python, Algorithms, Data Structures will develop knowledge and skills that may be useful to these careers:
Software Engineer
A software engineer designs, develops, tests, and maintains software applications. This role requires a strong understanding of programming languages, data structures, and algorithms. This course builds a solid foundation in Python, a widely used language in the software industry, and covers essential data structures like linked lists, stacks, queues, and trees. The course also explores sorting and searching algorithms, which are crucial for efficient software development. A prospective software engineer should take this course to hone their skills to become proficient with algorithms, data structures, and projects.
Algorithm Developer
An algorithm developer designs and implements algorithms for various applications, such as search engines, recommendation systems, and financial modeling. This role demands a deep understanding of algorithms, data structures, and performance analysis. The course provides an in-depth exploration of sorting and searching algorithms, as well as complexity analysis using Big O notation. A prospective algorithm developer should enroll in this course to gain expertise in algorithm design and implementation, as well as projects that put their skills to the test. It also walks you through the visualizations of algorithms, data structures, and operations.
Data Scientist
A data scientist analyzes large datasets to extract meaningful insights and develop data-driven solutions. This career utilizes programming skills and knowledge of statistical methods. This course provides a comprehensive introduction to Python, a popular language for data analysis, and covers essential data structures and algorithms. It is possible to use the skills learned to build machine learning models and perform complex data analysis tasks. The course may be useful for those interested in learning how to use Python for data science, as it covers both the language fundamentals and more advanced topics.
Machine Learning Engineer
A machine learning engineer develops and deploys machine learning models. This work demands a strong foundation in programming, data structures, algorithms, and machine learning principles. This course focuses on Python, a dominant language in the machine learning field, and equips students with knowledge of essential data structures and algorithms. The course may be useful in preparation to work on machine learning projects and to optimize model performance. Those seeking to enter the field will hone the programming skills necessary to implement machine learning algorithms effectively.
Data Engineer
A data engineer builds and maintains the infrastructure required for data storage, processing, and analysis. This career path requires expertise in programming, data structures, and databases. The course helps build a strong programming foundation in Python, which is useful for data engineering tasks such as data extraction, transformation, and loading (ETL). The course also covers data structures and algorithms, which are essential for optimizing data pipelines. Those seeking to enter this field may like this course to learn how to use Python for data engineering and to gain familiarity with essential data structures and algorithms.
Quantitative Analyst
A quantitative analyst, often called a quant, uses mathematical and statistical methods to analyze financial data and develop trading strategies. This role requires a strong background in mathematics, statistics, and programming. This course helps build proficiency in Python, which is used for quantitative analysis, and covers essential data structures and algorithms. The course may be useful as it covers Python and the fundamentals of algorithm design. For individuals interested in this field who need a programming background, this course will boost their ability to design efficient trading algorithms and analyze large datasets.
Web Developer
A web developer creates and maintains websites and web applications. Backend web development relies on programming skills, knowledge of data structures, and understanding of algorithms. This course in Python builds the computing knowledge necessary to produce modern web applications. Knowledge of the material in this course helps backend web developers to build scalable and efficient websites. For individuals interested in web development, this course will help them learn to use Python to achieve their goals.
Game Developer
A game developer designs and creates video games. This work requires expertise in programming, game design principles, and software engineering. This course helps build a solid foundation in Python, which can be used for game scripting, tool development, and prototyping. The course may be useful for those interested in using Python to build games or game development tools. This course will help game developers leverage Python's versatility in the creation of interactive experiences.
Robotics Engineer
A robotics engineer designs, builds, and tests robots and robotic systems. This career requires a strong background in mechanical engineering, electrical engineering, and computer science. This course helps you learn the fundamentals of programming, which is used to control robots and process sensor data. The course may be useful for those interested in learning how to program robots using Python. For those seeking to enter this field or learn more, this course will help improve their programming skills.
Bioinformatician
A bioinformatician analyzes biological data using computational tools and techniques. This requires expertise in biology, genetics, and programming. This course helps build a programming foundation in Python, which is a language used in bioinformatics. The course may be useful for those interested in learning how to use Python to analyze biological data, develop algorithms for processing genomic information, and simulate biological processes. This course will allow individuals to improve their programming abilities in their field.
Systems Architect
A systems architect designs and implements complex computer systems. This career requires a broad understanding of hardware, software, and networking principles. This course may be helpful in gaining a better understanding of programming concepts. Knowing Python can give systems architects a basis for scripting and automating system tasks. While a systems architect is not always a programming role, this course will help the individual in the role improve automation.
Database Administrator
A database administrator (DBA) manages and maintains databases, ensuring data integrity, security, and availability. While this role is not primarily focused on programming, having a foundational understanding of programming, data structures, and algorithms may be useful for automating database tasks. The course may be useful for aspiring DBAs who want to enhance their ability to script and automate database management tasks using Python. This course will help DBAs in their roles by giving them a programming background.
Technical Consultant
A technical consultant provides expert advice and guidance to clients on technology-related issues. This can span many different areas of technology. This course may be useful as familiarity with programming principles can aid in understanding and translating technical concepts to clients. Being able to analyze algorithms and understand data structures may be useful in recommending solutions to clients. This course will help technical consultants have a greater understanding of computer science.
Technical Writer
A technical writer creates documentation for software, hardware, and other technical products. This position typically needs familiarity with algorithms, data structures, and programming. This course may be useful in creating clear and accurate documentation for Python-based projects. The course may be useful for technical writers involved in documenting software libraries, APIs, or tools developed in Python. For technical writers, this course can improve their ability to communicate complex technical information effectively.
Quality Assurance Analyst
A quality assurance analyst tests software to identify and resolve defects. Although they primarily focus on testing, they benefit from programming skills. This course helps build a foundational understanding of Python, a versatile language used for test automation. The course may be useful for aspiring quality assurance analysts who want to automate testing processes, write test scripts, and perform data analysis. This course will help quality assurance analysts learn how to write test scripts.

Reading list

We've selected two books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Python 3: Project-based Python, Algorithms, Data Structures.
Provides a visually engaging and intuitive introduction to algorithms. It's particularly helpful for understanding the underlying concepts behind common algorithms and data structures. The book's clear explanations and numerous illustrations make it easy to grasp complex topics. It serves as a valuable supplement to the course material, providing a deeper understanding of algorithms and their applications.
Provides a practical introduction to Python programming, focusing on automating everyday tasks. It's particularly useful for beginners as it covers fundamental concepts in a clear and engaging manner. The book's project-based approach aligns well with the course's emphasis on building projects. It serves as a valuable resource for reinforcing Python skills and applying them to real-world scenarios.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Similar courses are unavailable at this time. Please try again later.
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2025 OpenCourser