# Interactive Python Course

A comprehensive Python course designed to change the way you think about Python forever.
Together we will walk the path to understand how this language works and gain all the necessary skills to use it effectively at work.

## Module 0: Introduction

In this short module, we'll take a look at how this course's platform works and learn how to get the most out of it. And also get information about our community.

- [Introduction](./m0/introduction.md)
- Course structure
- Community
- Python installation

## Module 1: Fundamentals of Python I

This module is designed to give you a basic understanding of Python fundamentals and fill in potential gaps.
In this module, we will get acquainted with basic data types, variables, conditional statements, loops, and functions.

- Variables
- Scope of variables
- Basic data types
  - Numeric data types
  - String data types
  - Boolean data type
- Functions
- Conditional statement. The if operator
- Complex data types
  - Lists
  - Tuples
  - Sets
  - Dictionaries
- Iterations and loops

## Module 2: Fundamentals of Python II

In this module, we will continue exploring the basic capabilities of Python.
We will cover working with libraries, files, introductory concepts of object-oriented programming, and basic exception handling.
This knowledge will complete the essential foundation for further programming in Python.

- Using libraries
  - Built-in libraries
  - Third-party libraries and pip
  - Modules in Python
- Working with files
  - Reading and writing text files
  - Working with structured files (JSON, CSV)
- Object-oriented programming
  - Classes and objects
  - Attributes and methods
  - Inheritance
  - Encapsulation
  - Polymorphism
- Lambda functions
- Exception handling
- Decorators
- Working with dates and time
- Type annotations

## Module 3: Advanced Python

In this module we move beyond the basics to the topics that let you build reliable, scalable, production‑ready applications.
We will cover testing, concurrency and async, database work, and project preparation & maintenance.

- Databases and Python
  - SQLite in Python
  - SQLAlchemy Core
  - SQLAlchemy ORM
- Introduction to testing
  - Pytest basics
  - Pytest – fixtures & parametrization
  - Mocking & stubs
  - The unittest module
  - Coverage & CI
- Parallel and asynchronous programming
  - Threading in Python
  - Multiprocessing in Python
  - Asynchronous programming
  - Advanced asynchronous programming
  - Concurrency and async: best practices
