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:

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
The creation of the environment
Visual Studio Code Setup
Chapter 2 - 0: Python Pro 101
Simple Type Annotations
f-Strings - Part 1
Python Pro 101
Chapter 2 - 1: Numeric values
Integers
Floats
Integers und Floats
Chapter 2 - 2: Logical expressions
Booleans
Match-Statement
Logical expressions
Chapter 2 - 3: Memory management
Variables and references
Mutability of data types
In-Place-Operationen und Shallow/Deep Copy
Memory management
Chapter 3 - 1: Container
Lists
Tuples
Listen and Tuples
Dictionaries
Sets
Dictionaries and Sets
Chapter 3 - 2: Strings, Files and f-Strings
Strings
f-Strings
Paths and Filesystem
Strings, Files and f-Strings
Chapter 4 - 1: Functions
Functions
Problems with Default Arguments
*args and **kwargs
Special Parameters
Commandline Arguments - Part 1
Commandline Arguments - Part 2
Commandline Arguments - Part 3
Commandline Arguments
Chapter 4 - 2: Closures and Decorators
Closures and Decorator
More about Decorator
Closures and Decorators
Chapter 5: Object orientation
StaticMethods and ClassMethods
AbstractMethods
Property
Dunder Methods
Object orientation - Part 1
Method Resolution Order
Type vs. Isinstance vs. Issubclass
__init__ vs. __new__
Context Manager
Iterator and Generator
ABC Container
Dataclass and Slots
NamedTuple and TypedDict
Enum
Object orientation - Part 2
Chapter 6: Cython and CPython
Python Packages 101
Foreword
Cython
Numba
Mypyc
CPython
Another CPython Example
Pybind11
Benchmark
CPython APIs
Chapter 7: Threads, Processes and Async
Threads, Processes and Async
Threads
Global Interpreter Lock
Thread Pool
Processes
Process Pool
Threads vs. Process - Recap
Asyncio
Asyncio Gather
Multi-Threads and -Processes
Chapter 8: Conclusion of the course
Course conclusion
Bonus lecture

Good to know

Know what's good
, what to watch for
, 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

Save Intermediate Python: Memory, Decorator, Async, Cython & more to your list so you can find it easily later:
Save

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.
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.
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.
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.
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.
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.
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.

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

Here are nine courses similar to Intermediate Python: Memory, Decorator, Async, Cython & more.
Python Programming Essentials
Programming for Everybody (Getting Started with Python)
Big Ideas in Programming: Expressing Yourself with Python
Python Programming for Beginners
Introduction to C++ Programming: Build a Calculator
Introduction to C++ Programming: Create a Tic-Tac-Toe Game
Get Started with Python
Beyond Basic Programming - Intermediate Python
Create Your First Python Program From UST
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 - 2024 OpenCourser