Getting Started with Python for C# and .NET Developers Course

Course Summary

Are you a .NET developer who is interested in learning Python? This is the course for you. While there are many getting started courses for Python, this course is specifically geared towards helping C# and .NET developers quickly get up to speed with Python. It covers a wide spectrum of the developer landscape from the language, databases and ORMs, web frameworks, data science and computational notebooks, and much much more.

What students are saying

I just finished the course last night and tonight and WOW, it's going to be worth sooo much more to be than the price I paid for it. I've been a TP2M listener for a couple years and love your stuff Michael. Be encouraged: you're changing people's lives. Seriously.
-- Rick

Source code and course GitHub repository

github.com/talkpython/python-for-dotnet-developers-course

What's this course about and how is it different?

This is the definitive course to learn the entire Python ecosystem for .NET developers. We spend over 9 hours comparing Python and C#, the Python runtime and the .NET CLR, NuGet to PyPI, and much more. You will see working C# examples _first_. Then we will build the Python equivalent of that application live, together, during the course.

In this course, you will:

  • See how Python and .NET are similar and how they are different
  • Get setup and ready to write and run Python 3 on your computer
  • Dive deep into the Python language while comparing each element to it's C# equivalent
  • Work with classes, inheritance, method overriding and more in Python
  • Leverage the over 200,000 public packages (libraries) using pip and related tooling
  • Explore Python's two memory management models and how they differ from .NET's GC
  • Choose a Python web framework comparable to ASP.NET MVC
  • Build data driven web applications using Flask and the ORM SQLAlchemy
  • Test your Python libraries and application with pytest
  • Mock out your dependencies for true unit testing with pytest_mock
  • Leverage async and await (in Python!) for massively parallel processing
  • Explore and visualize data with computational notebooks using JupyterLab
  • Deploy a Flask (Python) web app on a Linux cloud VM using nginx and uWSGI
  • Secure your web app on Linux with Let's Encrypt to add free SSL support
  • And lots more

  • View the full course outline.

Who is this course for?

With this course, the name really does say it all. If you know C# and .NET and would like to leverage that expertise in the Python space, this course is for you.

The course does not assume Python knowledge. But it does assume you know basic C# code and that you wish the leverage that knowledge to learn Python faster and deeper.

Concepts backed by concise visuals

While exploring a topic interactively with demos and live code is very engaging, it can mean losing the forest for the trees. That's why when we hit a new topic, we stop and discuss it with concise and clear visuals.

Here's an example of introducing the overall architecture of how we will deploy our Flask web application on Ubuntu Linux using nginx and uWSGI with worker processes executing our Python app in parallel.

Example: Concepts backed by concise visuals

Get hands-on for almost every chapter

Learning to code is an interactive experience. That's why it's important to write code and explore the apps we building during this course.

While not required, students will gain much deeper fluency in Python by building the Python applications and code sames themselves. The follow-along plan for this course is to watch the lectures for a given demo first. Then, using the existing C# code provided in the GitHub repository, rebuild the Python equivalent seen during that chapter.

Of course, if you get stuck, the Python code is also available, but using the C# to guide your development and practice will strengthen your Python knowledge.

This course is delivered in very high resolution

Example of 1440p high res video

This course is delivered in 1440p (4x the pixels as 720p). When you're watching the videos for this course, it will feel like you're sitting next to the instructor looking at their screen.

Every little detail, menu item, and icon is clear and crisp. Watch the introductory video at the top of this page to see an example.

Follow along with subtitles and transcripts

Each course comes with subtitles and full transcripts. The transcripts are available as a separate searchable page for each lecture. They also are available in course-wide search results to help you find just the right lecture.

Each course has subtitles available in the video player.

Who am I? Why should you take my course?

Who is Michael Kennedy?

My name is Michael, nice to meet you. ;) There are a couple of reasons I'm especially qualified to teach you Python.

 1. I'm the host of the #1 podcast on Python called Talk Python To Me. Over there, I've interviewed many of the leaders and creators in the Python community. I bring that perspective to all the courses I create.

 2. I've been a professional software trainer for over 10 years. I have taught literally thousands of professional developers in hundreds of courses throughout the world.

 3. Students have loved my courses. Here are just a few quotes from past students of mine.

"Michael is super knowledgeable, loves his craft, and he conveys it all well. I would highly recommend his training class anytime." - Robert F.
"Michael is simply an outstanding instructor." - Kevin R.
"Michael was an encyclopedia for the deep inner workings of Python. Very impressive." - Neal L.

Free office hours keep you from getting stuck

One of the challenges of self-paced online learning is getting stuck. It can be hard to get the help you need to get unstuck.

That's why at Talk Python Training, we offer live, online office hours. You drop in and join a group of fellow students to chat about your course progress and see solutions via screen sharing.

Just visit your account page to see the upcoming office hour schedule.

The time to act is now

Python is quickly becoming the go-to language for many purposes. Whether you want to move deeper into open source, jump into data science, build a Python-based web app, or just learn another language and skill to complement your C# work, this course will get you there better than any other on the market.

Course Outline: Chapters and Lectures

Welcome to the course
17:20
Welcome .NET developers!
2:33
Python is growing fast, catch the wave
3:04
Student prerequisites
0:36
What you'll learn
3:37
What's built with Python?
4:08
We'll write lots of code
0:28
Meet your instructor
2:54
Your setup
8:23
Let's get you setup
2:45
Checking and installing Python
0:37
Our IDE: PyCharm
2:09
PyCharm Pro for Free
0:30
Git the source code
0:42
DFollow along
1:40
The Python Language
2:05:42
Language chapter introduction
1:56
Language features we will cover
3:20
Intro to the C# code
3:53
Creating the Python project
3:01
Code structure demo
11:57
Concept: Code structure in Python
2:34
C# loops
2:04
Python loops
7:30
Concept: Python loops
1:31
C# function basics
2:22
Python function basics
10:09
Concept: Python function basics
0:56
C# function overloading
2:46
Python function overloading
6:08
Concept: Python function overloading
3:20
C# generators
3:46
Python generators
4:09
Concept: Python generators
1:01
C# ternary expressions
1:36
Python ternary expressions
2:13
Concept: Python ternary expressions
0:39
C# lambda expressions
2:35
Python lambda expressions
4:59
Concept: Lambda expressions
0:52
C# closures
3:21
Python closures
3:24
Concept: Function closures
0:56
C# type definitions
2:06
Python type annotations
7:37
Concept: Type annotations
1:19
C# error handling
2:31
Python error handling
6:08
Concept: Python error handling
0:43
C# using blocks
0:54
Python with statements
2:55
Concept: Python with statements
1:24
C# switch statements
0:56
Python switch statements
6:11
OOP: Object-Oriented Python
47:34
Object-Oriented Python
3:06
C# Car App
3:46
Python car base class, pass 1
6:16
Car methods
2:23
Abstract cars
2:01
Specialized car classes
4:31
Base constructors and super()
2:22
Python class properties
2:23
Concept: Defining classes in Python
3:14
Parking lots
3:53
Parking lot factory method
4:59
Parking a car
2:47
Iterating the spots
4:25
Concept: Python interfaces and magic methods
1:28
Package management and external libraries
25:26
Package management introduction
1:26
PyPI: Python's NuGet
3:03
Finding the Python libraries
2:25
C# package app
2:54
Installing the Python packages
7:58
Getting HTML with Python
2:49
Parsing HTML in Python
3:35
Concept: Installing Python packages
1:16
Memory management in Python
23:12
Introduction to memory management
1:13
Memory management in .NET
4:17
Memory management in Python
4:38
Reference counting demo
8:07
Cycles and GC in Python demo
4:57
Web frameworks
54:37
Python web apps introduction
2:16
The ASP.NET and Python web ecosystems compared
3:55
Choosing a Python web framework
2:04
Flask overview
2:57
The demo app
1:27
Exploring the ASP.NET Guitary
3:55
Hello world Flask
6:05
Rendering dynamic HTML in Jinja2
3:51
Bring in the design
2:20
The guitars page
2:35
Our guitar class
5:08
Filtering guitars
2:12
The filter buttons
2:56
Guitars HTML
2:40
Improved price display
1:01
Concept: Creating a Flask app
1:12
ASP.NET and Flask performance compared
6:12
Refactoring the app with blueprints
1:04
Full Flask course
0:47
Database access and ORMs in Python
50:45
Databases and Python
2:24
Features of the SQLAlchemy ORM
3:45
Our C# and Entity Framework web app
4:22
From in-memory classes to SQLAlchmey entities
5:41
Connecting to the DB
4:40
Creating the tables with SQLAlchemy
3:56
Unit-of-work design pattern
3:30
Concept: Defining entities
1:42
Concept: Creating the tables
1:54
Inserting data
5:35
Querying data
3:39
Running our Flask app outside PyCharm
2:38
Fixing the Sqlite objects created in another thread error
2:14
Concept: Inserting data
0:56
Concept: Querying data
1:42
SQL query equivalents
2:07
Testing
35:20
Introduction to testing in Python
1:31
Introducing pytest
1:02
C# app under test
3:09
C# tests
4:53
Python app under test
1:48
Setting up pytest
3:02
The first real test
3:03
Passing test data with pytest fixtures
2:33
Mocking our dependencies with pytest_mock
6:05
Concept: A basic pytest test
0:53
Concept: Testing without dependencies
2:16
Testing for errors
4:39
Concept: Testing for errors
0:26
async and await in Python
37:43
async and await introduction
1:49
Async for scalability
2:06
Async for speed
3:53
Python's async landscape
2:21
Prerequisite C# knowledge
0:34
C#'s async version
3:27
Reviewing Python web scraper (sync version)
3:11
First-pass Python async
7:39
Anatomy of an async method
1:26
Unsync to the rescue
1:49
Converting to unsync
2:29
More threading with unsync
6:25
Go deeper with the full async course
0:34
Computational notebooks
43:40
Notebook intro
2:16
Installing JupyterLab
3:56
Registering the virtual environment with Jupyter
3:11
Getting all the RSS entries
5:15
Getting the links from the RSS data
7:40
From links to domains
2:56
Counting domains
3:10
Graphing the popular domains
5:21
Concept: Getting started with Jupyter
3:10
A more interactive example
4:13
Notebooks from PyCharm
2:32
Deploying Python web apps
57:48
Introduction to deploying Python web apps
1:19
Hosting options and trade-offs
1:49
The cost of cloud hosting compared
7:11
Creating a virtual machine
4:33
Concept: Web server architecture
3:29
Setting up server foundations
6:48
Configuring the Python code
7:27
Running in a production WSGI server
7:29
nginx, you public facing web server
3:25
Adding SSL with Let's Encrypt
7:56
Concept: uWSGI
2:57
Concept: nginx
3:25
Course conclusion
17:22
The finish line
0:29
Python language review
4:01
Object-oriented Python review
1:37
Packages and PyPI review
1:09
Memory management review
1:23
Web apps review
1:21
Databases and ORMs review
1:19
Unit testing review
1:24
async and await review
1:26
Jupyter notebooks review
1:14
Deployment review
1:01
Don't forgit the code
0:23
Thanks and bye!
0:35
Buy for $59 + tax Bundle and save 85% Team Gift

Questions? Send us an email: contact@talkpython.fm

Talk Python's Mastodon Michael Kennedy's Mastodon