1.1. Agenda

  • Training course: 9:00 - 17:00

  • Lunch break: 13:15 - 14:00

  • 10 min break every one/one-and-half hour

1.1.1. Day 1

  • 10 min - Intro: welcome message, course introduction, agenda, spreadsheet

  • 60 min - Setup: IDE, Git, repository, Python, doctest

  • 30 min - Placement test: evaluating participant skills

  • 60 min - Placement test: live coding solution, IDE demonstration, ie. debugging, working with VCS, refactoring, quick documentation, type annotations, function signatures

  • 30 min - Syntax: assignment expression

  • 110 min - Typing: basic types, iterables, mappings, callables, types, extra

  • 120 min - Dataclasses: definition, relations, post_init, metadata, helpers

1.1.2. Day 2

  • 120 min - OOP: slots, identity, equality, staticmethod, classmethod

  • 90 min - Inheritance: patterns, mixin, composition, problems, super(), MRO

  • 210 min - Classes: constructor, class creation, metaclass

1.1.3. Day 3

  • 120 min - Operators: left, increment, right, numerical, comparison, binary, accessors

  • 150 min - Abstract: polymorphism, interfaces, protocols, abstract base classes, builtin protocols

  • 150 min - Accessors: property, reflection, descriptor

1.1.4. Day 4

  • 90 min - Functional: Lambda, scope, pure-function, recurrence

  • 30 min - Functional: Immutable data structures, higher-order functions, referential transparency

  • 90 min - Functional: Namespace, function attributes, callable, closures, patterns, functools

  • 210 min - Decorators: Functions, Methods, Classes, with/without arguments, functools

1.1.5. Day 5

  • 90 min - Generators: expressions, functions, introspection, yield, yield from, itertools

  • 180 min - Async: introduction to asynchronous programming, async/await, coroutines

  • 60 min - Threading: introduction to threading, locks, queues

  • 30 min - Multiprocessing: introduction to multiprocessing, sockets, IPC

  • 30 min - Performance: big-O notation, complexity, optimization, micro-benchmarking, profiling

  • 30 min - Performance: Alternative compilers, interpreters, transpilers