3. Python Advanced

Warning

Przed szkoleniem proszę o instalację i konfigurację środowiska zgodnie z Installing Python

3.1. Description

Tip

If you’re interested in this training course, please email me at matt@astrotech.io

3.2. Agenda

3.2.1. Day 1

Estimated Time

Topic

30m

Korzystanie z ustawień IDE: Docker, refactoring, debugging

180m

Podsumowanie zagadnień podstawowych

60m

Zaawansowane struktury danych i kolekcje

30m

Optymalizacja kodu i złożoność obliczeniowa struktur danych

30m

Funkcje matematyczne

30m

Debugging, unittest, doctest, TDD

30m

Dobre praktyki i standardy kodowania

30m

Modularyzacja i Virtualenv

3.2.2. Day 2

Estimated Time

Topic

180m

Programowanie obiektowe i dataclass

60m

Przetwarzanie i transformacja danych JSON, XML, CSV

60m

Operacje na datach, czasie i strefach czasowych

30m

Generators i List Comprehensions

30m

Decorators

30m

Context Managers

30m

Biblioteka standardowa i biblioteki zewnętrzne

3.2.3. Day 3

Estimated Time

Topic

30m

Refaktoryzacja kodu na przykładach

15m

Alternatywne wersje interpretera/kompilatora

45m

Programowanie wielowątkowe

30m

Python - moduły w języku C i C++

60m

Programowanie sieciowe

120m

Programowanie HTTP i projektowanie REST API, dobre praktyki, wersjonowanie, dokumentacja API

120m

Wprowadzenie do Django ORM, widoki, routing, translation, modele, admin itp

3.2.4. Day 4

Estimated Time

Topic

120m

CI/CD i testowanie aplikacji

60m

Python w środowisku produkcyjnym

60m

Wzorce projektowe w Python

180m

Implementacja wybranych wzorców na przykładach

3.2.5. Day 5

Estimated Time

Topic

30m

Jupyter (Enhanced Interactive Console)

60m

NumPy (Base N-dimensional array package)

30m

Pandas (Data structures & analysis)

30m

SciPy (scientific computing)

30m

Matplotlib (Comprehensive 2D Plotting)

240m

Scikit-learn (Machine Learning Library)

3.3. Survey before workshop

Note

wymagana umiejętność tematów pokrytych w Python Foundations

  1. Jakie masz doświadczenie z programowaniem:

    • żadnego

    • tworzyłem pomniejsze programy / skrypty

    • mam na koncie kilka aplikacji, ale raczej nic dużego

    • w ciągu ostatnich dwóch lat byłem współautorem większego systemu (ponad 500k LOC)

    • programuję na codzień

    • jestem zaawansowanym programistą i programuję systemy rozproszone

  2. Doświadczenie z paradygmatem obiektowym:

    • żadnego

    • kiedyś coś było, ale nie wykorzystuję tego na codzień

    • programuję obiektowo codziennie, wiem co to klasa, metody, właściwości (pola), dziedziczenie, kompozycja, polimorfizm,

    • wykorzystuję polimorfizm i dziedziczenie / kompozycję na co dzień

  3. Doświadczenie z paradygmatem funkcyjnym:

    • żadnego

    • rozumiem na czym polega domknięcie

    • wiem co to domknięcie i rekursja - stosuję to w praktyce

    • wiem co to rachunek domknięcie, lambda, złożenie funkcji i rekursja i jestem w stanie zastosować je w praktyce

    • programuję funkcyjnie rozproszone systemy

    • Alonzo Church razem ze mną formułował rachunek lambda

  4. Doświadczenie z Pythonem:

    • żadnego

    • pisałem skrypty

    • mam na koncie kilka aplikacji, ale raczej nic super dużego

    • tworzyłem większe aplikacje

    • programuję w tym języku od kilku lat

    • Guido van Rossum to mój kolega ze szkolnej ławki

  5. Czy miałeś styczność z programowaniem okienkowym:

    • Nie i nie chcę mieć nic z tym wspólnego

    • Nie, ale chcę się nauczyć

    • Tak, miałem kiedyś okazję stworzyć taki program

    • Tak, tworzę je często

    • Tak, tworzę je na codzień

    • Pracowałem w Xerox jak Steve Jobs wpadł z wizytą

  6. Jakie masz doświadczenie z systemem Linux:

    • nigdy nie korzystałem

    • słabe, umiem się poruszać w trybie graficznym

    • znam Linuxa i korzystam z wiersza poleceń

    • wykorzystuję Linuxa na codzień

    • koduję kernela razem w piwnicy z Linusem Torvaldsem

  7. Czy tworzyłeś systemy webowe:

    • Tak, tworzę je często

    • Tak, miałem kiedyś okazję stworzyć taki system

    • Nie, ale chcę się nauczyć

    • Nie i nie chcę mieć nic z tym wspólnego

    • Moje strony testowałem w Mozaic

  8. Do jakich zastosowań chciałbyś wykorzystać Pythona [można zaznaczyć wiele]:

    • do zabawy / nauki programowania

    • do skryptowania środowiska

    • tworzenia narzędzi developerskich

    • tworzenia stron internetowych

    • tworzenia aplikacji i narzędzi naukowych

    • inne…

  9. Na co chciałbyś abym zwrócił szczególną uwagę podczas szkolenia:

    • [pytanie otwarte]

  10. Jakie elementy z poza programu szkolenia chciałbyś aby zostały poruszone:

    • [pytanie otwarte]

  11. Czy piszesz testy jednostkowe oraz integracyjne?:

    • nigdy

    • bardzo rzadko

    • czasami

    • zawsze

    • Uncle Bob to mój bohater

  12. Doświadczenie z refactoringiem:

    • nie robię

    • robię raczej jak jest potrzeba

    • codziennie refaktoruję kod

    • skróty klawiszowe do refaktoringu w moim IDE znam na pamięć

    • pisałem książkę z Michael Feathers

  13. Czy chciałbyś aby w ramach szkolenia zostały poruszone kwestie dotyczące narzędzi automatyzujących budowanie aplikacji (Jenkins), GITa i GIT Flow oraz innych elementów ekosystemu developerskiego i dobrych praktyk programowania?:

    • Tak!

    • Nie mam zdania - zdam się na decyzję większości

    • Nie, wolę by szkolenie dotyczyło tylko Pythona

3.4. Certificate

Szkolenie obejmowało 40 godzin wykładów oraz warsztatów i pokrywało zagadnienia związane z:

  • tworzenie aplikacji w języku Python,

  • tworzenie i korzystanie ze struktur danych

  • Zaawansowane struktury danych

  • Wydajność i optymalizacja wykorzystania struktur danych

  • korzystanie z generatorów i iteratorów,

  • tworzenie klas i obiektów,

  • modularyzacja oprogramowania,

  • biblioteka standardowa,

  • tworzenie testów, unittest, doctest, debugging i TDD,

  • korzystanie z funkcji refaktoringu w środowisku IDE,

  • dobre praktyki i standardy kodowania.

  • Programowanie sieciowe i HTTP

  • Przetwarzanie i transformacja danych JSON, XML, CSV

  • Testowanie w języku Python

  • Python w środowisku produkcyjnym

  • Dekoratory

  • Context Managers

  • Python - moduły w języku C i C++

  • Alternatywne wersje interpretera/kompilatora

  • Programowanie wielowątkowe