1.2. Agenda

  • Training course: 9:00 - 17:00

  • Lunch break: 13:15 - 14:00

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

1.2.1. Day 1

  • 15m - Welcome note, agenda, work organization

  • 60m - Prepare work environment: github, git, python, doctest

  • 30m - Entry test evaluating proficiency, skills and knowledge

  • 45m - Live coding solution and IDE demonstration: debugging, version control, refactoring, documentation, type annotations and Python syntactic sugars

  • 30m - Generators: Builtin generator-like objects

  • 30m - Generators: Generator expression

  • 45m - Generators: Generator function

  • 15m - Generators: Introspection

  • 15m - Generators: Yield-from and Send

  • 15m - Generators: Itertools module

  • 30m - Functional Programming: Lambda

  • 30m - Functional Programming: Scope

  • 30m - Functional Programming: Pure-function

  • 30m - Functional Programming: Recurrence

1.2.2. Day 2

  • 15m - Functional Programming: Mutable and immutable data structures

  • 30m - Functional Programming: Higher-order functions and referential transparency

  • 30m - Functional Programming: Namespace and function attributes

  • 45m - Functional Programming: Callable and closures

  • 180m - Decorators: Function decorators

  • 45m - Decorators: Method decorators

  • 45m - Decorators: Class decorators

  • 30m - Decorators: Decorator arguments and functools.wraps

1.2.3. Day 3

  • 45m - OOP Mutable and immutable data structures in parameters

  • 45m - OOP Access modifiers for methods and attributes

  • 45m - OOP Static and dynamic attributes

  • 45m - OOP: Slots

  • 60m - OOP: Staticmethod and classmethod

  • 45m - OOP: Inheritance, Mixin, Composition

  • 30m - OOP: Method Resolution Order and super()

  • 30m - OOP: Polymorphism

  • 75m - OOP: Interfaces, Protocols and Abstract Base Classes

1.2.4. Day 4

  • 120m - OOP: Object Relation Mapping

  • 60m - OOP: Object identity and equality

  • 60m - OOP: Class constructor __new__ vs __init__

  • 90m - OOP: Class creation and Metaclass

  • 60m - Performance: Optimization, micro-benchmarking and profiling

  • 15m - Performance: Alternative compilers, interpreters and modules

  • 15m - Performance: Python code compilation (mypyc)

1.2.5. Day 5

  • 90m - Protocol: Context Manager, Iterator

  • 150m - Protocol: Reflection, Property, Descriptor

  • 30m - Concurrency: Concurrency models and their specificity

  • 30m - Concurrency: Multiprocessing

  • 30m - Concurrency: Threading and queues

  • 90m - Concurrency: Asynchronous programming