We may earn an affiliate commission when you visit our partners.
Course image
Jan Schaffranek

The course was updated in November 2023 for the newest Python Version 3.12.

Course Description:

The course covers intermediate to advanced Python programming techniques.This means that the course is not aimed at programming beginners.This course is compact, instructive, and useful. You learn not only how to use Python well, but also more abstract concepts that are transferable to other languages, as well as how to create a good programming environment.

Prerequisites:

Read more

The course was updated in November 2023 for the newest Python Version 3.12.

Course Description:

The course covers intermediate to advanced Python programming techniques.This means that the course is not aimed at programming beginners.This course is compact, instructive, and useful. You learn not only how to use Python well, but also more abstract concepts that are transferable to other languages, as well as how to create a good programming environment.

Prerequisites:

  •  Creating and using variables  

  •  If-statements, loops and logical expressions  

  •  Implementing your own functions and classes  

  •  Importing from external packages  

In the course we will use Visual Studio Code (VSCode) as the IDE which is free for all operating systems.I assume that you have already Python 3.8 or newer on your system, if not you could install it via Anaconda for example.

This course consists of the following topics:

  • Memory management of variables in Python  

  • Mutable and Immutable Types

  • Shallow and Deep Copies

  • The correct use of containers (list, dict, set etc.)

  • f-Strings formatting

  • Functions and Decorators

  • args and kwargs Arguments

  • Object orientation and inheritance  

  • Special Dunder Methods

  • Dataclass, Enum and NamedTuple

  • The integration of Cython  

  • Using the Python C API (CPython)

  • Using PyBind11 (introductory example)

  • Using Numba and Mypyc

  • Using multiprocessing and multithreading

  • Global Interpreter Lock (GIL) in Python

  • Using asynchronous programming

Become a pro today, in the technology of tomorrow. See you in class.

Enroll now

What's inside

Learning objectives

  • Memory management of variables in python (mutability)
  • The correct use of sequences and iterables
  • Functions, decorators, lambdas etc.
  • Object orientation and inheritance
  • The integration of cython code
  • Using the python c api
  • Async and parallel code

Syllabus

Chapter 1: Introduction and Software
Introduction to the course
Course manual
Course materials
Read more

Traffic lights

Read about what's good
what should give you pause
and possible dealbreakers
Taught by Jan Schaffranek, who are recognized for their work in Python programming
Teaches intermediate to advanced Python programming techniques, which helps learners do more complex programming tasks
Covers topics such as memory management, object orientation, and asynchronous programming, which are core skills for Python developers
Uses Visual Studio Code (VSCode) as the IDE, which is free for all operating systems and widely used in the industry
Requires learners to have a basic understanding of Python, which may be a barrier for complete beginners
Assumes learners have Python 3.8 or newer installed, which may require additional setup for some learners

Save this course

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

Reviews summary

Deep dive into python internals & performance

According to learners, this course offers an incredibly clear and deep dive into Python's advanced features, making complex topics like memory management, asynchronous programming, and the Global Interpreter Lock (GIL) remarkably understandable. Many commend the instructor's ability to simplify abstract concepts, which is invaluable for writing efficient and optimized Python code. The course is particularly praised for its in-depth coverage of Cython and CPython integrations, providing practical insights for performance. While it is definitely geared towards intermediate to advanced users and some find the pace can be fast or specific topics very niche, recent reviews highlight the material is up-to-date and continuously improved.
Course material is regularly updated to reflect current Python versions.
"The material is very up-to-date, which is a huge plus."
"The recent updates are a good sign of instructor engagement."
"I appreciate that the recent updates keep the content relevant and fresh."
Provides deep coverage of specific advanced Python features.
"I really appreciated the in-depth look into Cython and CPython, which opened my eyes to optimization possibilities."
"The deep dive into Python internals was incredible! I particularly enjoyed the GIL explanation..."
"The sections on decorators and dunder methods were especially well-explained, and the modules on concurrency... provided a solid foundation for me."
Focuses on practical skills for writing efficient Python code.
"Definitely a must-take for anyone serious about optimizing Python code."
"This course isn't just about syntax; it's about understanding *why* Python behaves the way it does, which is invaluable for writing efficient code."
"I really improved my understanding of Python's memory model and how to write more efficient code."
Complex Python topics are explained with remarkable clarity.
"The instructor explains complex topics like memory management and async/await with incredible clarity."
"The instructor's ability to simplify complex topics is remarkable."
"I found the instructor makes complex topics approachable."
Some advanced topics may not be relevant for all intermediate learners.
"I felt some parts, particularly PyBind11, could have been a bit more fleshed out with more complex examples."
"This course is not for me. It dives into very specific topics that aren't widely applicable for my daily work, like PyBind11."
"I came expecting more general intermediate Python concepts and found it too niche and theoretical."
Requires strong prior Python knowledge, pacing can be fast.
"I found this course quite difficult to follow... explanations often assumed too much prior knowledge, even for an intermediate course."
"My only minor critique is that sometimes the pace felt a bit fast for the amount of detail being presented..."
"I found myself needing to consult external resources quite often to fully grasp some concepts."

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 Intermediate Python: Memory, Decorator, Async, Cython & more with these activities:
Join a Python Study Group
Enhance your understanding by discussing course concepts and solving problems with peers.
Show steps
  • Find a study group or create your own.
  • Set regular meeting times to discuss course material.
  • Collaborate on projects and assignments.
  • Offer support and encouragement to fellow group members.
Volunteer as a Python Mentor
Enhance your understanding by sharing your knowledge and helping others learn Python.
Browse courses on Mentoring
Show steps
  • Identify opportunities to volunteer as a Python mentor.
  • Prepare materials and resources to support your mentees.
  • Provide guidance and support to your mentees on a regular basis.
  • Create a supportive and encouraging learning environment.
Practice Variable Typing
Reinforce your understanding of variable types in Python by completing a series of exercises.
Show steps
  • Identify variable types in code snippets.
  • Write code to demonstrate different variable type operations.
  • Troubleshoot code that involves variable types.
Six other activities
Expand to see all activities and additional details
Show all nine activities
Build a Python CLI Application
Apply your Python skills by creating a functional command-line interface (CLI) application.
Show steps
  • Define the purpose and scope of your application.
  • Design the user interface and command structure.
  • Write code to implement the application's functionality.
  • Test and debug your application thoroughly.
  • Deploy your application and make it accessible to users.
Follow the PyMOTW Tutorial on Object-Oriented Programming
Expand your knowledge of object-oriented programming in Python by following a structured tutorial.
Show steps
  • Read the Introduction section to understand basic concepts.
  • Complete the exercises in Section 2 to create and manipulate objects.
  • Study the examples in Section 3 to explore inheritance and polymorphism.
Participate in a Python Programming Contest
Test your skills and gain experience by participating in a Python programming contest.
Browse courses on Competitive Programming
Show steps
  • Find a suitable Python programming contest.
  • Study the contest rules and format.
  • Practice solving programming problems.
  • Participate in the contest and submit your solutions.
  • Review the results and learn from your experience.
Read "Mastering Python" by Michael Kennedy
Gain a deeper understanding of advanced Python concepts by studying a comprehensive reference book.
Show steps
  • Read Chapter 1 to understand object-oriented programming in Python.
  • Work through the examples in Chapter 2 to practice writing efficient code.
  • Complete the exercises in Chapter 3 to solidify your understanding of data structures.
Write a Python Code Snippet Library
Solidify your understanding and develop practical skills by creating a collection of reusable Python code snippets.
Browse courses on Reusable Code
Show steps
  • Identify common programming tasks that you frequently perform.
  • Write code snippets to automate these tasks.
  • Organize and document your code snippets in a central location.
  • Share your code snippets with the community.
Contribute to a Python Open Source Project
Engage with the Python community and gain practical experience by contributing to open source projects.
Browse courses on Software Development
Show steps
  • Identify a suitable Python open source project to contribute to.
  • Review the project's documentation and contribution guidelines.
  • Identify an area where you can make a meaningful contribution.
  • Submit your code changes and participate in code reviews.

Career center

Learners who complete Intermediate Python: Memory, Decorator, Async, Cython & more will develop knowledge and skills that may be useful to these careers:
Python Developer
A Python Developer is responsible for designing, developing, and maintaining software applications using the Python programming language. This course covers intermediate to advanced Python programming techniques, making it a valuable resource for those seeking to advance their careers as Python Developers. The course covers topics such as memory management, functions, decorators, object orientation, and asynchronous programming, all of which are essential skills for Python Developers. Additionally, the course's focus on practical application and hands-on exercises provides Python Developers with the hands-on experience they need to succeed in their roles.
Software Engineer
Software Engineers apply engineering principles to the design, development, and maintenance of software systems. This course provides a solid foundation in intermediate to advanced Python programming techniques, which are essential for Software Engineers working with Python-based systems. The course covers topics such as memory management, functions, decorators, object orientation, and asynchronous programming, all of which are crucial for developing robust and efficient software applications. Moreover, the course's emphasis on practical application and hands-on exercises equips Software Engineers with the skills they need to excel in their roles.
Data Scientist
Data Scientists use scientific methods, processes, algorithms, and systems to extract knowledge and insights from data in various forms, both structured and unstructured. This course provides a solid foundation in intermediate to advanced Python programming techniques, which are essential for Data Scientists working with Python-based data analysis and machine learning tools. The course covers topics such as memory management, functions, decorators, object orientation, and asynchronous programming, all of which are crucial for developing efficient and scalable data analysis pipelines. Additionally, the course's emphasis on practical application and hands-on exercises equips Data Scientists with the skills they need to succeed in their roles.
Machine Learning Engineer
Machine Learning Engineers design, develop, and maintain machine learning models and systems. This course provides a solid foundation in intermediate to advanced Python programming techniques, which are essential for Machine Learning Engineers working with Python-based machine learning libraries and frameworks. The course covers topics such as memory management, functions, decorators, object orientation, and asynchronous programming, all of which are crucial for developing robust and efficient machine learning models. Additionally, the course's emphasis on practical application and hands-on exercises equips Machine Learning Engineers with the skills they need to succeed in their roles.
Web Developer
Web Developers design, develop, and maintain websites and web applications. This course provides a solid foundation in intermediate to advanced Python programming techniques, which are essential for Web Developers working with Python-based web frameworks. The course covers topics such as memory management, functions, decorators, object orientation, and asynchronous programming, all of which are crucial for developing scalable and responsive web applications. Additionally, the course's emphasis on practical application and hands-on exercises equips Web Developers with the skills they need to succeed in their roles.
DevOps Engineer
DevOps Engineers bridge the gap between software development and IT operations. This course provides a solid foundation in intermediate to advanced Python programming techniques, which are essential for DevOps Engineers working with Python-based automation and orchestration tools. The course covers topics such as memory management, functions, decorators, object orientation, and asynchronous programming, all of which are crucial for developing efficient and reliable DevOps pipelines. Additionally, the course's emphasis on practical application and hands-on exercises equips DevOps Engineers with the skills they need to succeed in their roles.
Cloud Engineer
Cloud Engineers design, develop, and maintain cloud-based systems and applications. This course provides a solid foundation in intermediate to advanced Python programming techniques, which are essential for Cloud Engineers working with Python-based cloud platforms and services. The course covers topics such as memory management, functions, decorators, object orientation, and asynchronous programming, all of which are crucial for developing scalable and resilient cloud-based solutions. Additionally, the course's emphasis on practical application and hands-on exercises equips Cloud Engineers with the skills they need to succeed in their roles.
Data Analyst
Data Analysts collect, analyze, and interpret data to provide insights and recommendations for businesses. This course provides a solid foundation in intermediate to advanced Python programming techniques, which are essential for Data Analysts working with Python-based data analysis and visualization tools. The course covers topics such as memory management, functions, decorators, object orientation, and asynchronous programming, all of which are crucial for developing efficient and reliable data analysis pipelines. Additionally, the course's emphasis on practical application and hands-on exercises equips Data Analysts with the skills they need to succeed in their roles.
Business Analyst
Business Analysts bridge the gap between business and technology. This course may be useful for Business Analysts who wish to gain a deeper understanding of Python programming and its applications in business analysis. The course covers topics such as memory management, functions, decorators, object orientation, and asynchronous programming, which can be beneficial for Business Analysts working with data-driven decision-making and process optimization.
Project Manager
Project Managers plan, execute, and close projects. This course may be useful for Project Managers who wish to gain a deeper understanding of Python programming and its applications in project management. The course covers topics such as memory management, functions, decorators, object orientation, and asynchronous programming, which can be beneficial for Project Managers working with data analysis and project tracking tools.
Product Manager
Product Managers define and manage the roadmap for products. This course may be useful for Product Managers who wish to gain a deeper understanding of Python programming and its applications in product development. The course covers topics such as memory management, functions, decorators, object orientation, and asynchronous programming, which can be beneficial for Product Managers working with data analysis and user feedback.
Technical Writer
Technical Writers create and maintain documentation for technical products and services. This course may be useful for Technical Writers who wish to gain a deeper understanding of Python programming and its applications in technical documentation. The course covers topics such as memory management, functions, decorators, object orientation, and asynchronous programming, which can be beneficial for Technical Writers working with code samples and technical specifications.
System Administrator
System Administrators manage and maintain computer systems and networks. This course may be useful for System Administrators who wish to gain a deeper understanding of Python programming and its applications in system administration. The course covers topics such as memory management, functions, decorators, object orientation, and asynchronous programming, which can be beneficial for System Administrators working with automation and scripting tasks.
Network Engineer
Network Engineers design, build, and maintain computer networks. This course may be useful for Network Engineers who wish to gain a deeper understanding of Python programming and its applications in network management. The course covers topics such as memory management, functions, decorators, object orientation, and asynchronous programming, which can be beneficial for Network Engineers working with network monitoring and automation tools.
IT Consultant
IT Consultants provide advice and guidance to organizations on their IT systems and processes. This course may be useful for IT Consultants who wish to gain a deeper understanding of Python programming and its applications in IT consulting. The course covers topics such as memory management, functions, decorators, object orientation, and asynchronous programming, which can be beneficial for IT Consultants working with data analysis and process optimization tasks.

Reading list

We've selected 14 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 Intermediate Python: Memory, Decorator, Async, Cython & more.
This tutorial provides a comprehensive overview of the Python language. It valuable resource for both beginners and experienced Python programmers.
Provides a comprehensive overview of Python's advanced features, including memory management, decorators, and object-oriented programming. It valuable reference for intermediate to advanced Python programmers.
Provides a comprehensive overview of the Python language. It valuable resource for both beginners and experienced Python programmers.
Provides a collection of practical recipes for solving common Python programming problems. It covers a wide range of topics, including memory management, data structures, and concurrency.
Provides a practical introduction to Python programming. It covers a wide range of topics, including data structures, file handling, and web scraping.
Provides a comprehensive introduction to data analysis using Python. It covers a wide range of topics, including data wrangling, data visualization, and machine learning.
Provides a comprehensive overview of the Python standard library. It covers a wide range of topics, including data structures, file handling, and networking.
Provides a comprehensive introduction to machine learning using Python. It covers a wide range of topics, including supervised learning, unsupervised learning, and deep learning.
Provides a practical introduction to machine learning using Python. It covers a wide range of topics, including data wrangling, data visualization, and machine learning algorithms.
Provides a comprehensive introduction to deep learning using Python. It covers a wide range of topics, including neural networks, convolutional neural networks, and recurrent neural networks.
Provides an introduction to computer science using the Python language. It covers a wide range of topics, including memory management, algorithms, and data structures.

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