We may earn an affiliate commission when you visit our partners.
Packt Publishing

Over the years, Python has turned out to be a boon for developers and it is very powerful, can run everywhere, and offers flexibility. With the growing demand for full-stack developers, it is important to learn how you can combine the powers of Python with other libraries to create amazing applications. To further your software development career, you need to understand why and how Python executes your code so that you can create clean code that compiles in time. This Course unleashes the power of Python's functionalities to create compelling applications.

Read more

Over the years, Python has turned out to be a boon for developers and it is very powerful, can run everywhere, and offers flexibility. With the growing demand for full-stack developers, it is important to learn how you can combine the powers of Python with other libraries to create amazing applications. To further your software development career, you need to understand why and how Python executes your code so that you can create clean code that compiles in time. This Course unleashes the power of Python's functionalities to create compelling applications.

This comprehensive 4-in-1 course follows a step-by-step approach taking you through the tools of Modern Python to build your Python application from scratch. To begin with, you’ll learn generators and itertools and get an introduction to creating your own functions classes and modules. Create your own Django templates for your Python web API and learn to use template filters and tags. Explore the tools and formats to distribute packages, command-line, GUI and web applications. Finally, you’ll tackle Python performance problems and speed up your apps with parallelism, concurrent execution, and OOP. Towards the end of this course, you'll learn Python like a professional to build REST APIs & powerful apps using modern Python.

Contents and Overview

This training program includes 4 complete courses, carefully chosen to give you the most comprehensive training possible.

The first course, Getting Started with Modern Python, covers creating your own unique program using modern Python. In this course, you will start by setting up your development environment, including downloading Python and setting up your IDE (PyCharm); you'll then be introduced to Python lists and list comprehensions. The course will then show you what a generator is and why you might want to use one. Further on, you will be introduced to functions and decorators, and see how you can use them. You will then learn how to create a very simple, single-file Python program, and how to execute it both from the command line and from within the IDE. You'll also get a very brief introduction to debugging. By the end of the course, you'll have learned how to manipulate strings, parsing and printing them.

The second course, Building REST APIs with Python, covers building REST APIs with Python. With the growing demand for full-stack developers, it is important to learn how you can combine the powers of Python with other libraries to create amazing applications. Django has basic front-end support but we show how complex operations can be performed at the front-end. We show you how to unleash the power of Python's Rest API and other functionalities to create compelling applications powered by ReactJS. We will be using a production-level database such as Postgres. Delving into key aspects such as code reusability, deployment and maintaining your application, we discuss production server configuration and bundle technologies with Python to provide an end-to-end web development solution.

The third course, Tips, Tricks, and Techniques for Python Application Development, covers building powerful & efficient applications with Python. The course starts by dealing with performance issues and learning how to tackle them in an application. Distributing an application with Python is not easy but you will learn ways to distribute applications developed using Python along with GUIs, web applications, and more. Further, you will learn to test your application at different levels and use modern software at the development stage. You will also learn to expand productivity using standard and third-party tools. Finally, you will learn to protect your code quality from potential errors and detect any problem at an early stage, to prevent any issues later. By the end, of course, you will have learned many tips and tricks while developing an application with Python; you'll excel at this and avoid encountering major problems as a developer. So, grab this course and take your applications to the next level.

The fourth course, Troubleshooting Python Application Development, covers quick fixes for your Python application development problems. This course takes you through a structured journey of performance problems that your application is likely to encounter, and presents both the intuition and the solution to these issues. You'll get things done, without a lengthy detour into how Python is implemented or computational theory. Quickly detect which lines of code are causing problems, and fix them quickly without going through 300 pages of unnecessary detail.

By the end of the course, you'll learn Python like a professional to build REST APIs & powerful apps using modern Python.

About the Authors

  • Paul Oliver is the Principal Software Architect at Vosaic. Vosaic helps its users unlock insights with the video for education and simulations. Vosaic is closely aligned with Hudl, which is the premier video platform for sports. Before taking on the role at Vosaic, he worked as a software developer and architect in the banking and criminal justice industries. Throughout his career, he's been passionate about building well-architected software solutions with the security of primary importance. He's architected several applications in the cloud using Microsoft Azure, Amazon Web Services, and Heroku. He received his BSc in Computer Engineering from the University of Nebraska-Lincoln and his Masters of Business Administration degree from Creighton University.

  • Praveen Kumar Sreeram works as a Solution Architect at PennyWise Solutions (an Ogilvy and Mather Company). He has over 12 years' experience in the field of development, analysis, design, and delivery of applications of various technologies, including custom web development using ASP.NET and MVC to building mobile apps using the cross-platform technology Xamarin for domains such as insurance, telecom, and wireless expense management. He has twice been recognized as a Most Valuable Professional by one of the leading social community websites, CSharpCorner, for his contributions toward writing articles and helping community members, mostly on Microsoft Azure. He is highly focused on learning about technology.

  • Omkar Dusane is a software developer based in Mumbai, India. He has designed and developed many software products for startups. He is a food enthusiast and a Node.js lover and was a senior Microsoft Student Partner who represented India at Microsoft Global Student Partner Summit in 2016. He is currently Product Engineer at Kennect Solutions Pvt. Ltd. Mumbai and is responsible for business execution and intelligence tools for various industries. He encourages serverless technologies and has an eye for scalability of new web technologies.

Enroll now

What's inside

Syllabus

Getting Started with Modern Python

This video gives an overview of the entire course.

Instruct the user about how to install Python, as well as a community (free) version of PyCharm.

  • Download and install Python

  • Download and install PyCharm community edition

  • Configure the IDE, and (minimally) introduction to IDE

Read more

Write a simple Python program and execute it.

  • Write a simple program

  • Modify our simple program

  • Verify user output

Expand upon the first program, and introduce a subtle bug.

  • Make our program more complicated

  • Verify the output

  • Demonstrate error condition

Demonstrate the Python debugger, and PyCharm interface to the debugger mode.

  • Run our program in the debug mode.

  • Pause execution, explore the program state and discover the error

  • Verify that the problem is resolved

Learn how to print justified text and how to format numbers into strings that you define, such as currency, hexadecimal, binary, and scientific notation.

  • Learn how to substitute a variable into a string

  • Justification and alignment of strings

  • Format numbers in a variety of ways

Break a string into parts, using custom delimiters, likewise re-join a series of strings back into a single string.

Learn how to normalize a string and test it against various conditions.

  • Learn how to break a string apart into useful pieces to work with and then re-join it

  • Normalize a string

  • Test various simple conditions

Learn advance string matching with regular expressions in Python.

  • Learn simple regular expression pattern

  • Discuss about the capture groups

  • Learn how to do advanced string replacement with re.sub

Learn how to print datetime objects with user specified formats and manipulate them.

Learn various ways to allow users to input dates.

  • Create a datetime for distinct dates in various ways

  • Format dates when printing or displaying them

  • Learn how to offset dates, and learn about the calendar module

Learn what about checksum and two of the primary uses of checksums.

  • Understand a checksum

  • Learn about using simple checksums to avoid transcription errors

  • Explore cryptographic checksums and their security applications

Reading and writing from files.

  • Open a file for writing with a context manager

  • Read from a file, as a whole and in chunks

  • File encoding and decoding from Unicode to bytes and back

Help the user understand for loops and how to iterate over a list of items.

  • Initialize all 3 datatype containers (dict/list/set)

  • Iterate over a list of objects adding them to our datatypes

  • Understand some of the key differences between the 3 datatypes

Learn how to replace for loops with list comprehensions, as well as how to map items using a list comprehension.

  • Convert our for loop into a list comprehension

  • Learn to convert for loop into a set comprehension

  • Convert our loop into a dictionary comprehension

Learn how to exclude unwanted values in our list comprehensions.

  • Learn how to use a list comprehension as a map

  • Exclude values within a list comprehension

  • Explore Big-O complexities of search, as well as additional resources

List comprehensions, while some are not a silver bullet and still present with some problems that we need to keep in mind.

  • Implement a list comprehension that has a long execution time

  • Observe the behavior of the software

  • Understand some key problems with user experience that list comprehensions can exacerbate

Learn how to use generators to solve some of the problems with list comprehensions, and use generators to help preserve system resources.

  • Convert our list comprehension into a generator expression, to preserve computational time

  • Learn how to use a generator expression to enumerate future dates

  • Learn how to use generators to preserve system space

Explore some of the functions that the itertools library provides in order to count things forever.

  • Use itertools to count forever and cycle through a list forever

  • Take advantage of these methods to calculate simple probabilities

  • Understand the various combinatorics functions of itertools

Learn what a function is and when to think about using them.

  • Understand a function and it’s use

  • Learn how to pass arguments into a function

  • Return a value from a function

Learn about anonymous or unnamed functions, and some common scenarios to use them in, as well as some pitfalls you might encounter, and how to circumvent them.

  • Explore anonymous functions and why we might use them

  • Analyze potential pitfalls you might encounter with anonymous functions

  • Learn ways around the pitfalls that you might encounter

Learn about function decorators, that is functions that modify other functions, and create several example decorators.

  • Learn about functions as a first class citizen, create a simple decorator

  • Create a memorization decorator

  • Create a profile decorator

Learn how to document your code, with type annotations as well as docstrings, both for yourself, and for others.

  • Understand the need to document our code

  • Explore various levels of code documentation

  • Write documentation that also tests out code

Learn about classes and modules by creating a simple blackjack game.

  • Learn about classes and modules

  • Create some classes and modules

  • Play blackjack

Test Your Knowledge
Building REST APIs with Python

This video gives an overview of this section.

In this video, we look at a demo of the final product after the three sections, including a templated Django response and browsing a Django REST Framework API.

  • Look at HTML response

  • Look at REST API server

In this video, we will install Python, Django and the Django REST Framework onto our development computer

  • Install Python 3 based on the Operating System of our computer. Create a Virual Environment

  • Use Pip to install Django and the Django REST framework

  • Use pip requirements.txt to identify installed python components in a development environment

In this video, we will install PostgreSQL, create a new database and configure Python support

  • Install PostgreSQL into our development environment

  • Use Psql to check our installation and create a new database

  • Use pip to install PostgreSQL support into Python

In this video, we will create a new Django project and then create an application within that project.

  • Create a project directory and use django-admin startproject

  • Use manage.py startapp to create a Django application

  • Review Django external application publishing guidelines

In this video, we will use the development environment we have setup in previous videos to show the Django initial success web page.

  • Introduce settings.py and configuring our database

  • Highlight the DEBUG flag and placing sensitive information in settings.py

  • Use Django’s development webserver via the manage.py runserver command and seeing the Django initial default page

This video gives an overview of MVC and MVT Framework.

  • Look at the concept of MVC and MVT Framework.

  • Look at Django models

  • Look at Django template

In this video, we will discuss Django models, create our first model, create methods on our models and test them.

  • Introduce Django model and how relationships between Models can be used.

  • Create a Django model

  • Create methods on Django models and test them

In this video, we will apply migrations to our Django models, which keep our database structure up to date. We will perform queries on our database.

  • Consider what Django migrations are and have Django create schema migrations

  • Consider what data migrations are and create one, and then apply all migrations created so far in this video

  • Perform some simple queries against our database

In this video, we will create a simple “Hello World” view, consider Django class based views, perform URL configuration and add a parameter to our view.

  • Discuss Django class based views and use view to create a simple view that returns a hard coded response

  • Perform URL configuration or routing at both the Project and App level to make our new view accessible. Access the view in a browser

  • Make use of URL querystring and kwarg parameters. Discuss the pros and cons of each approach

In this video, we will discuss how Django handles requests, Django’s URL routing, matching URLs with path and re_path and HTTP methods.

  • Discuss how Django handles requests from the request in to middleware, then URL config, then view and then the reverse for the response

  • Review URL configuration from previous video and discuss use of path() and re_path()

  • Cover methods (verbs) of Http Requests including Get and Post requests. How Http methods then translate to class methods

In this video, we will cover Django Templates and the TemplateView. We will cover Django’s template inheritance system, how to pass data to templates, where to place template files and template tags and filters.

  • Explain how hardcoded responses are undesirable. Introduce Django’s TemplateView

  • Learn about using base templates and view specific templates that extend base templates. Learn how to make data available within templates.
    Review template settings in settings.py and see our first set of templates in action

  • Explain how templates should not perform core logic, however we can use template tags and filters to perform presentation logic

In this video we will consider why we should test, the core tools Django provides for testing, how to configure PostgreSQL for testing and some integration and unit tests.

  • Learn how we need to use automated testing tools and how we can write test cases that place our code under test

  • Make use of pqsl to configure PostgreSQL for testing

  • Develop Integration tests that make use of the Django test client.
    Develop unit tests that test specific view functions using a RequestFactory as well as class attributes

This video gives an overview of the entire section and then considers what is an API, what is REST, REST resources, methods and CRUD operations and HTTP Status codes.

  • Explain the difference between traditional web responses and API responses. Learn how REST provides an API on HTTP

  • Learn what Resources, HTTP Methods and CRUD operations are

  • Explain how a result of an API request is communicated via a status code

In this video, we will create an API end point by configuring a URL endpoint for a view that generates JSON output. We will also accept input and perform simple validation.

  • Make use of a URL pattern configuration to give access to our API view

  • Define a View using the base View class that uses JsonResponse to return an API response

  • Include in our View definition validation of a name parameter and return an error if this is equal to fred. Show results in a browser

In this video, we will discuss why we use the DRF, what key parts of the DRF are, who uses it and the web browsable API feature of the DRF.

  • Learn how the DRF helps us in providing code that we would otherwise have to provide ourselves many times over

  • Learn what the key parts of the DRF are, including serializers, DRF views, routers and authentication and permissioning. Learn how these relate to CRUD operations

  • Explore who uses the DRF and see the web browsable feature of the DRF

In this video, we will learn about DRF serializers. We will first look at manually defining a serializer and then use ModelSerializer to base a definition on an existing model.

  • Review our existing models with focus on the Bookmark Model, then we will define a serializer with create and update methods

  • Using the Python console, we will create some initial data in the database and then demonstrate what our serializers do with this data along with simulated received data

  • We will define a serializer based on Bookmark using a ModelSerializer.
    We will then demonstrate how this serializer can be used with a list of Bookmarks in the Python console

In this video, we will combine our learnings from the previous two videos with DRF views by building a Bookmarks list and a Bookmarks detail view.

  • Learn about basic DRF view URL configuration, including format suffixes.
    Define a Bookmark List view that can build a list and create new Bookmarks

  • Learn about basic DRF detail view URL configuration. Define a Bookmark detail view that can get detail, update a Bookmark and delete a Bookmark

  • Watch a demonstration of all of the functionality previously developed in this video, including listing existing Bookmarks, creating new Bookmarks, updating existing Bookmarks and deleting them.

In this video, we will replace our views from the previous video by exploiting pre-built functionality of the DRF for common CRUD operations.

  • Make use of ListCreate-APIView for Bookmark listing and new Bookmark creation

  • Make use of RetriveUpdate-APIView for Bookmark detail queries, updating a Bookmark and deleting a Bookmark

  • Take advantage of the ModelViewset that combines all the functionality seen earlier in this video in one convenient package.

In this video we will use DRF routers to clean up our URL configuration and create a specialised API action.

  • Learn about Hyperlinked-Model-Serializers and how they can create related links in our API. Significantly simplify our URL configuration with a DRF router

  • Create a specialised viewset action that can add a like to a Bookmark. Learn how to define this in the viewset and ensure the DRF router is aware of it. See how it is accessed from the browser

  • Consider each of the view strategies covered in this and previous videos and scenarios where each would be the best fit

In this video we will consider how we can use DRF automated testing tools to perform integration and unit tests of our API.

  • Learn how to write an integration test of a DRF based viewset and place different actions under test

  • Learn how to write a unit test of specific methods of a DRF based viewset, how to isolate dependencies via patching and using mocks to test each operation of the code

  • See how the Django test runner is used in combination with DRF test tools

Tips, Tricks, and Techniques for Python Application Development

Find the most common causes of performance issues in Python applications.

  • Distinguish CPU bound tasks and I/O bound tasks

  • Use the time Unix command to diagnose performance issues

  • Use the cProfile Python module for advanced profiling

Take an existing I/O intensive Python application and speed it up.

  • Understand concurrent I/O task execution in Python

  • Use a ThreadPollExecutor to parallelize I/O tasks

  • Use the time command to check the speed increase

Take an existing CPU intensive Python application and speed it up.

  • Understand concurrent CPU task execution in Python

  • Use a multiprocessing Pool to parallelize CPU tasks

  • Use the time command to check the speed increase

Take an existing CPU intensive Python application and speed it up using a C/C++ library.

  • Create a Python extension that calls C/C++ code

  • Parse Python arguments in C/C++ and return C/C++ objects to Python

  • Use setuptools to build the extension

Speed up a Python application by using an alternative Python implementation.

  • Choose an appropriate Python implementation

  • Replace C/C++ extensions in your code with plain Python implementations

  • Use PyPy to run the refactored application

Prepare your Python module to be distributed to the Python Package index.

  • Write the necessary files for setuptools distribution

  • Configure module using the setup.py file

  • Choose a license for your code

Distribute your Python module to the Python Package Index in 2 popular formats.

  • Create and inspect a source distribution from your Python module

  • Create and inspect a wheel distribution from your Python module

  • Use twine to upload your distributions to the Python Package Index

Distribute a user-facing Python application to end-users in a friendly way.

  • Use PyInstaller to generate executables for a command-line application

  • Use PyInstaller to generate executables for a GUI application

  • Inspect resulting executables

Distribute a web application using Docker images and containers.

  • Docker definitions

  • Write a Dockerfile for a simple Flask application

  • Build a Docker image and run a container

Ensure your code works as expected by writing unit tests.

  • Identify the testable units in your code

  • Write unit tests using PyTest

  • Calculate the coverage to understand what is missing from your tests

In this video, you’ll deal with the complex part of the testing and also include the coverage part.

  • Create complex part of the unit testing

  • Measure the amount of code which is tested

Ensure that the code you are writing is working correctly right from the start.

  • Translate requirements into unit test cases

  • Implement the code after writing the tests

  • Change the code until the tests are passed

Ensure that your code integrates properly with external units and that any external changes will be caught early.

  • Write tests for functionality not units

  • Run the tests in production-like environments

  • Check test results regularly

Ensure functionality requirements are met throughout the development lifecycle.

  • Define features using the Gherkin syntax

  • Implement the scenarios using pytest-bdd

  • Build the code until the requirements are met

Install application dependencies separately from each other and from the system environment.

  • Identify the components of a typical Python installation

  • Create separate Python environments with virtualenv

  • Use the virtualenvs to isolate application dependencies

Recreate an entire Python environment to use on a different machine.

  • Install dependencies in a virtualenv

  • Freeze dependencies in a requirements.txt file

  • Use pip to recreate the environment based on requirements.txt

Debug Python applications with built-in tools.

  • Run your application using pdb

  • Use pdb commands to control the execution

  • Use the dis module to inspect Python bytecode

Quickly prototype ideas in Python and share interactive prototypes with other developers.

  • Use the Python shell to research a new library

  • Use Jupyter to create an interactive prototype

  • Use Jupyter to visualize data plots

Find stylistic issues in your Python code.

  • Navigate PEP 8 to understand the common guidelines

  • Use pylint to check your code for style issues

  • Customize pylint messages to fit your needs

Check your code for potential bugs before running it and import all reports in one place.

  • Activate SonarQube Python rules

  • Use sonar-scanner to check for style issues and potential bugs

  • Add unit test coverage and results in SonarQube

Check Python types before running the code. Remove run-time type checking.

  • Identify the need for type checking in Python

  • Add type hints to your code

  • Use mypy to check the types before running

Troubleshooting Python Application Development

This video gives glimpse of the entire course.

Time is of essence and timeit is your tool. In this video we explore timeit.

  • Understand what is timeit

  • Set up our timing experiment

  • Run our timing experiment

In this video, we will look at profile module and understand where time is spent.

  • Understand what is profiling

  • Understand how Profiling our Fibonacci sequence generator is done

  • Profile the sequence generator using the least recently used cache

In this video we will explore and understand tips and tricks which will allow us to track time more precisely using cProfile.

  • Understand the difference between cProfile vs profile

  • Explore and create artificially slowed functions

  • Understand profiling using cProfile

In this video we will understand the memory_profiler.

  • Explore how to go about profiling a simple function

  • Explore and understand how profiling manual garbage collection is done

This video is all about reducing the execution time and memory consumption.

  • Understand what are slots

  • Create classes that use slots

  • Inspect the performance of slots vs class dicts

In this video we will use tuples instead of lists when your data does not change.

  • Understand what are tuples and how to declare them

  • We will see by example that tuples are fasters than lists

  • We will understand why are they faster than lists

Save on memory consumption with generators instead of lists.

  • What are generators?

  • Why are they memory efficient?

  • Implementing generators

Generators are designed for a specific purpose, here is when not to use them.

  • when you need features from a list

  • when you need to iterate through a list multiple times

Chain together a series of processes so one output is another's output.

  • Composing two generators

  • Using parenthesis to define generator comprehensions

Illustrate why we need to move from Python lists to NumPy arrays

  • Problem 1: Memory consumption of lists for large amounts of data

  • Problem 2: Dynamic Typing

Show how we can use NumPy and the different ways we can create NumPy arrays

  • The difference between NumPy arrays and lists

  • Creating NumPy arrays from Python lists

  • Creating NumPy arrays from NumPy helpers

Show that for large n, NumPy arrays are much faster than list comprehensions

  • Setting up our problem with list comprehensions

  • Setting up its cousin in NumPy

  • Comparing their performance

Show how to use broadcasting - applying binary functions on arrays of varying length

  • What is NumPy's broadcasting?

  • Broadcasting: an example

  • How broadcasting works - three examples

Show the simple interface of numexpr and where we can use it to optimize

  • What is numexpr?

  • How to use numexpr?

  • Use cases of numexpr

If you have a list of URLs, serially requesting the HTML body of each page is super slow

  • Using requests to scrape the HTML of a web URL

  • Timing 10 web scraping requests

What are coroutines and how they help you request all webpages at once

  • What is gevent?

  • What are semaphores?

  • Creating a gevent scraper

What is event driven concurrency, and how that can speed up web scraping

  • What is tornado?

  • What is an IO Loop?

  • Creating a tornado based scraper

Futures and asyncio driven concurrent web scraping

  • What is asyncio?

  • await and async

  • Creating an asyncio based scraper

Introduce the audience to parallel programming concepts.

  • What is parallel processing?

  • Embarrassingly parallel and less embarrassingly parallel

  • The global interpreter lock of Python

Show how the decorate-sort-undecorate pattern can be beaten

  • The decorate-sort-undecorate pattern

  • Beating the DSU pattern with a sort key

Show how we can use Pool to achieve multiprocessing

  • What is Pool?

  • Our first process Pool

  • Asynchronous process Pools

In this video we will understand how we can stop processes from interfering with each other using locks.

  • We will be using multiprocessing.Value to share variables

  • Why does it not add up?

  • Using a lock to remove overwrites

This video covers the effects of many processes.

  • Using the logging module

  • Creating the right logger format for multiprocessing

  • Logging multi-processes

This video is focused on understanding how to copy and clone objects the right way.

  • Identify the wrong object instance

  • Use the correct object clone

This video will show us how to mini-classes of Python: namedtuples

  • Learn about mini-classes of Python

In this video we will understand how to create smart values with static methods and properties.

  • Create smart values with static methods and properties

In this video we will be understanding how to compare two different objects.

  • Understanding how to compare two different objects

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Covers generators and itertools, which are essential for writing efficient and memory-friendly Python code, especially when dealing with large datasets or complex algorithms
Explores distributing Python applications with GUIs, web interfaces, and command-line tools, which is useful for developers aiming to deploy their projects to a wider audience
Examines performance issues in Python applications and provides solutions using parallelism, concurrent execution, and OOP, which is crucial for building scalable and responsive software
Teaches building REST APIs with Python using Django and Django REST Framework, which are widely used for developing web services and applications
Includes using older versions of Python, Django, and related libraries, which may require learners to adapt code to newer versions for compatibility and security purposes
Requires installing specific software like PyCharm, PostgreSQL, and Docker, which may pose a barrier for learners with limited resources or unfamiliarity with these tools

Save this course

Save Modern Python Application Development in Practice! to your list so you can find it easily later:
Save

Reviews summary

Comprehensive guide to modern python development

According to students, "Modern Python Application Development in Practice!" offers a broad and often practical exploration of modern Python development concepts, from core language features to advanced topics like building REST APIs with Django and DRF. Learners find value in the sections dedicated to performance optimization, testing, and application deployment, highlighting their relevance for professional developers. While praised for its breadth, some learners feel that the course moves quickly or assumes some level of prior knowledge in certain areas.
Valuable tips for performance and testing.
"Many students found the modules on Python performance tuning and testing very helpful."
"Profiling and optimizing code were noted as key skills gained from the course."
"The coverage of testing methodologies like unit and integration testing was seen as a strong point."
Strong content on building REST APIs with Django.
"The section on building REST APIs using Django and DRF was highlighted as particularly valuable."
"Learners found the coverage of web framework integration comprehensive and useful."
"Building APIs was a key takeaway for several reviewers looking for full-stack skills."
Includes hands-on examples and real-world scenarios.
"The practical approach was appreciated by many, focusing on how to actually build things."
"Several reviews mentioned the helpful demonstrations and labs that reinforced concepts."
"The course provided concrete examples of application development in practice."
Covers a wide range of modern Python topics.
"Learners commented on the course covering a wide spectrum of topics, essentially combining four courses into one."
"Many felt it was a great overview of modern Python development practices, from basic Python to advanced application techniques."
"The curriculum touched upon many different areas relevant to building applications."
Depth of coverage varies significantly by topic.
"Reviews noted that while the course covers many topics, the depth on each varies, with some feeling more like introductions."
"Some learners wished certain areas were explored in greater detail."
"The shift between foundational concepts and advanced topics was sometimes perceived as abrupt."
Some sections may require prior Python experience.
"A few reviews indicated that the course assumes a certain level of prior Python proficiency, particularly in later sections."
"Some learners felt the pace was too fast in specific modules if they weren't already familiar with the concepts."
"It was suggested that absolute beginners might find some advanced topics challenging without foundational knowledge."

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 Modern Python Application Development in Practice! with these activities:
Review Python Fundamentals
Reinforce your understanding of core Python concepts like data structures, control flow, and functions. This will provide a solid foundation for the more advanced topics covered in the course.
Browse courses on Python Basics
Show steps
  • Review Python syntax and data types.
  • Practice writing basic Python functions.
  • Work through introductory Python exercises.
Review 'Python Cookbook'
Study a book that provides solutions for a wide range of programming tasks in Python. This will help you learn how to solve common problems and expand your knowledge of the language.
Show steps
  • Browse the book and identify recipes relevant to your projects.
  • Try out the code examples and adapt them to your own needs.
  • Take notes on key techniques and best practices.
Review 'Effective Python'
Study a book that provides practical advice on writing clean, efficient, and maintainable Python code. This will help you write better code and avoid common pitfalls.
Show steps
  • Read through the book, focusing on areas relevant to application development.
  • Try out the examples and exercises in the book.
  • Take notes on key concepts and best practices.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Build a Simple REST API
Practice building a REST API using a framework like Flask or FastAPI. This will reinforce your understanding of API design principles and how to implement them in Python.
Show steps
  • Choose a simple API to implement (e.g., a to-do list API).
  • Design the API endpoints and data models.
  • Implement the API using a Python framework.
  • Test the API endpoints with tools like Postman or curl.
Practice Concurrency and Parallelism
Practice writing concurrent and parallel code using Python's threading, multiprocessing, and asyncio libraries. This will help you understand the trade-offs between different approaches and how to optimize your code for performance.
Show steps
  • Implement a simple multi-threaded program.
  • Implement a simple multi-processing program.
  • Implement a simple asynchronous program using asyncio.
  • Compare the performance of different approaches.
Write a Blog Post on Python Performance
Solidify your understanding of Python performance optimization by writing a blog post on the topic. This will force you to research different techniques and explain them in a clear and concise manner.
Show steps
  • Research different Python performance optimization techniques.
  • Choose a specific topic to focus on (e.g., profiling, caching, vectorization).
  • Write a blog post explaining the technique and providing examples.
  • Publish the blog post on a platform like Medium or your own website.
Contribute to a Python Project
Gain practical experience by contributing to an open-source Python project. This will expose you to real-world codebases, collaboration workflows, and best practices.
Show steps
  • Find an open-source Python project that interests you.
  • Read the project's documentation and contribution guidelines.
  • Identify a bug to fix or a feature to implement.
  • Submit a pull request with your changes.

Career center

Learners who complete Modern Python Application Development in Practice! will develop knowledge and skills that may be useful to these careers:
Python Developer
A Python Developer specializes in building applications using the Python programming language. This course helps give you the necessary skills to excel as a Python Developer. The course covers building REST APIs, handling performance issues, and distributing Python applications. You'll also learn how to test applications, use standard and third-party tools, and protect code quality. The course provides an end-to-end solution for web development with Python. This course's approach to developing applications using modern Python tools makes it relevant to anyone looking to become a Python Developer.
Software Engineer
As a Software Engineer, you design, develop, and test software applications. This course may be useful because Python is a widely-used language in software engineering. The course emphasizes modern Python application development, which is valuable for developing efficient and maintainable code. By learning about generators, itertools, REST APIs, and performance optimization, a software engineer can write better code. The troubleshooting section helps software engineers resolve performance problems. This course is particularly helpful due to its robust coverage of Python's functionalities and application development techniques.
Backend Developer
A Backend Developer focuses on the server-side logic and databases that power web applications. This course is valuable for a Backend Developer due to its emphasis on Python, REST APIs, performance optimization, and database integration. The course focuses on using Python for building REST APIs, which are essential for backend development. You'll also learn how to handle performance issues, distribute applications, and troubleshoot common problems. Since the course focuses on the backend use of Python, a backend developer will find it particularly useful.
Full-Stack Developer
A Full Stack Developer works on both the front-end and back-end aspects of web applications. This course may be useful because it covers topics that are relevant to both front-end and back-end development. This course covers building REST APIs with Python and using Django. It also covers tips, tricks, and techniques for Python application development. By covering a wide array of important tools, this course provides a solid background for anyone interested in becoming a Full Stack Developer.
Web Developer
Web Developers are involved in creating and maintaining websites and web applications. The 'Modern Python Application Development in Practice!' course will be useful for a Web Developer. In particular, this course covers Building REST APIs with Python. This course helps to learn how to use Django templates, template filters, and tags for Python web API development. Therefore, by learning these important parts of web development, the candidate will definitely have an advantage. This course's focus on Python makes it a strong option for those focused on backend web development.
Software Architect
Software Architects are responsible for designing the high-level structure and components of software systems. This course may be useful for a Software Architect, who needs to understand the underlying implementation details of the systems they are designing. This course includes tips, tricks, and techniques for Python application development. It also covers troubleshooting Python application development problems. A software architect may find this course helpful due to its coverage of Python application troubleshooting.
Technical Lead
A Technical Lead is responsible for guiding a team of developers and ensuring the successful delivery of software projects. This course may be useful for a Technical Lead. It provides a broad overview of modern Python application development practices. The course covers topics such as building REST APIs, handling performance issues, and testing applications. By understanding these concepts, the Technical Lead can better guide their team and make informed decisions about technology choices.
DevOps Engineer
DevOps Engineers work to automate and streamline the software development lifecycle. This course helps a DevOps Engineer to learn the fundamentals of Python application development. It also covers building REST APIs with Python and troubleshooting Python application development problems. The course touches on topics such as distributing web applications using Docker images and containers. This course may be useful for DevOps engineers because it provides a solid foundation for automating Python-based deployments.
Cloud Engineer
Cloud Engineers are responsible for managing and maintaining cloud infrastructure and services. This course may be helpful for a Cloud Engineer as it covers topics relevant to deploying and managing Python applications in the cloud. The course covers topics such as distributing web applications using Docker images and containers. By understanding these concepts, the Cloud Engineer can better manage and deploy Python-based applications in the cloud.
Solutions Architect
Solutions Architects are responsible for designing and implementing technology solutions that meet business needs. This course may be useful for a Solutions Architect as it provides a practical understanding of Python application development. The course covers topics such as building REST APIs, integrating with databases, and optimizing performance. By understanding these capabilities, the Solutions Architect can design more effective and efficient solutions.
Data Scientist
Data Scientists analyze and interpret complex data to help organizations make better decisions. While this course is focused on application development, rather than data science, Python is very relevant to this role. It can help enhance a data scientist’s capabilities by allowing them to build custom tools and applications for data processing and visualization. This data scientist may find the course helpful due to its ability to provide greater flexibility in manipulating data.
Data Engineer
A Data Engineer is responsible for designing, building, and maintaining the infrastructure that supports data storage and analysis. While this course is focused on application development, Python is relevant to this role. The course helps with building custom tools and applications for data processing and automation. A data engineer may find this course helpful due to its tips and tricks for efficient Python development.
Machine Learning Engineer
Machine Learning Engineers develop and deploy machine learning models. While this course is focused on application development, Python is a key tool for machine learning. This course helps with building custom tools and applications for machine learning pipelines. The machine learning engineer may find this course helpful due to its focus on optimizing Python performance and troubleshooting common problems in Python applications.
Embedded Systems Engineer
Embedded Systems Engineers design and develop software for embedded systems, such as those found in IoT devices. This course may be useful for an Embedded Systems Engineer, as Python is increasingly used in embedded systems development. The course covers topics such as optimizing performance, which is critical for resource-constrained embedded systems. By understanding these concepts, the Embedded Systems Engineer can develop more efficient and reliable embedded applications.
Game Developer
Game Developers create video games for various platforms. Game development doesn't commonly use Python. Game developers may benefit from Python knowledge because the language is useful for scripting, creating tools, and automating game development processes. The ability to quickly prototype and create custom tools can significantly streamline workflows. The course's content on application tips/tricks and debugging can apply to game development tools.

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 Modern Python Application Development in Practice!.
Offers solutions for a wide range of programming tasks in Python. It contains recipes for data structures and algorithms, network programming, concurrency, and more. It valuable resource for learning how to solve common problems in Python and for expanding your knowledge of the language. This book is particularly useful as a reference tool for practical application development.
Provides practical advice on writing clean, efficient, and maintainable Python code. It covers a wide range of topics, including best practices for using Python's features, how to avoid common pitfalls, and how to write high-quality code. It is particularly useful for understanding how to leverage Python's more advanced features effectively. This book adds depth to the course by providing real-world examples and actionable advice.

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