Skills You Will Learn
Python 3 Fundamentals
Data Structures & Collections
File I/O & Serialization
Object-Oriented Programming
Functional Techniques
Exception Handling
Virtual Environments
Testing with Pytest
Curriculum
Introduction to Python
- Install, REPL, first lines of code; running scripts
- Syntax essentials and the pythonic mindset (readability, EAFP vs LBYL)
- Core data types: numbers, bool, str vs bytes (Unicode basics), lists/tuples/sets/dicts, slicing & comprehension basics
- Exceptions and error handling patterns
- I/O basics: open/read/write with context managers; paths with pathlib
More I/O (files & formats)
- CSV, JSON and simple XML; quick PDF/text processing overview
- Binary I/O, seeking and file locking (brief)
- Working with dates/times (datetime) and time zones (overview)
Practical functional programming
- First-class functions; lambda, map/filter (when to use or avoid)
- Comprehensions and generator expressions
- Closures, partials and small pipelines
- Iterators & generators: yield, yield from
Practical OOP in Python
- Classes & objects; dunder methods; properties
- Composition and inheritance (single & multiple)
- Data classes for plain data structures
- Decorators for functions/methods; simple descriptors
Misc topics (tools that matter)
- Regular expressions (re) — practical patterns
- Concurrency: intro to threading vs multiprocessing; when to consider asyncio
- Networking basics: sockets and a tiny client/server example
Environment setup & workflow
- venv/virtualenv basics; pip and PyPI; requirements.txt vs pyproject.toml (brief)
- Package managers: pipx/conda (when useful)
- Editors, linters & formatters: ruff/flake8, black; basic debugging tips
Creating packages & external libraries
- Project structure and modules/packages
- Install a library from PyPI; read docs and examples effectively
- Intro to packaging a simple library (wheel)
Ad‑hoc solutions to user‑defined problems
- Mini-projects proposed by participants; guided design and implementation
Optional modules
Optional — Testing & typing
- pytest basics; simple fixtures and parametrization
- Type hints 101; mypy as a sanity check
Course Day Structure
- Part 1: 09:00–10:30
- Break: 10:30–10:45
- Part 2: 10:45–12:15
- Lunch break: 12:15–13:15
- Part 3: 13:15–15:15
- Break: 15:15–15:30
- Part 4: 15:30–17:30