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¶
75 min - OOP attributes: mutability, instance/class variables, access modifiers, slots
45 min - OOP methods: access modifiers, staticmethod, classmethod
90 min - OOP inheritance: patterns, mixin, composition, problems, overload, super(), MRO
120 min - OOP objects: relations, identity, equality, constructor __new__ vs __init__
90 min - OOP classes: class creation, metaclass
1.1.3. Day 3¶
120 min - OOP operators: left, increment, right, numerical, comparison, binary, accessors
90 min - Protocol: polymorphism interfaces, protocols, abstract base classes
90 min - Protocol: patterns, context managers, iterators
120 min - Protocol: 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¶
30 min - Performance: big-O notation, complexity, optimization, micro-benchmarking, profiling
30 min - Performance: Alternative compilers, interpreters, transpilers
90 min - Generators: expressions, functions, introspection, yield, yield from, itertools
30 min - Concurrency: Concurrency models and their specificity
30 min - Concurrency: introduction to multiprocessing, sockets, IPC
60 min - Concurrency: introduction to threading, locks, queues
150 min - Concurrency: introduction to asynchronous programming, async/await, coroutines