Wersja podstawowa
1. Wprowadzenie do programowania
- Podstawy działania komputera
- Systemy operacyjne, programy, frameworki i biblioteki
- Przegląd języków programowania
2. Wstęp do języka Python
- Geneza i historia Pythona
- Zastosowania i możliwości
- Python 2.x vs. Python 3.x
3. Instalacja i konfiguracja środowiska
- Interpreter języka Python
- Wirtualne środowisko (venv)
- Zintegrowane środowisko programistyczne (IDE) (edytor `PyCharm`)
4. Podstawy składni języka Python
- Interakcja z użytkownikiem
- Zmienne i podstawowe typy danych
- Struktury danych
- Instrukcja warunkowa
- Pętle
- Wyrażenia “comprehension”
5. Programowanie proceduralne
- Podstawy definiowania funkcji
- Przekazywania argumentów
- Dokumentacja i adnotacje
6. Programowanie obiektowe
- Podstawy definiowania klas
- Metody specjalne
- Metody statyczne i klasowe
- Dziedziczenie
7. Obsługa wyjątków
- Rzucanie i przechwytywanie wyjątków
- Definiowanie własnych wyjątków
8. Organizacja kodu
- Moduły i pakiety
- Struktura projektu
9. Biblioteka standardowa języka Python
- wyrażenia regularne (moduł `re`)
- obsługa parametrów linii poleceń (moduł `argparse`)
- obsługa daty i czasu (moduł `datetime`)
- zaawansowane kolekcje (moduł `collections`)
- graficzny interfejs użytkownika (GUI) (moduł `tkinter`)
10. Instalacja zewnętrznych bibliotek
- Repozytorium pakietów (PyPI)
- Instalator pakietów (narzędzie `pip`)
- Zarządzanie zależnościami w projekcie
11. Operacje wejścia/wyjścia
- Operacje na plikach
- Zapytania HTTP
- Serializacja (moduł `json` i `pickle`)
12. Testowanie i debugowanie oprogramowania
- Testowanie z wykorzystaniem biblioteki standardowej (moduł `unittest`)
- Zewnętrzne narzędzia wspierające testowanie (projekt `pytest`)
- Debugowanie kodu (moduł `pdb` oraz debugger wbudowany w `PyCharm`)
13. Zastosowania języka Python (wstęp)
- Aplikacje webowe (framework `Django`)
- Analiza i wizualizacja danych (biblioteka `pandas` i `matplotlib`)
- Obliczenia naukowe (biblioteka `SciPy` i `NumPy`)
14. Dobre praktyki programowania w Pythonie
- Styl kodowania i konwencje (PEP8)
- Idiomatyczne rozwiązania
Dodatkowe tematy w wariancie XL Backend
15. Python oczami programisty backend
- Wykorzystywane struktury danych
- Wykorzystywane koncepcje programistyczne
- Powtórzenie koniecznych podstaw
16. Struktura projektu pythonowego, dodatkowe narzędzia
- Projekt jako moduł; zależności między projektami, struktura katalogu
- GIT i kontrola wersji kodu
- Zapisywanie i odtwarzanie historii zmian
- Rozgałęzienia i ich późniejsze łączenie (branch/merge)
- Repozytoria lokalne i zdalne; różne scenariusze pracy zespołowej
17. Testy i kontrola jakości kodu
- TDD w praktyce
- Zapewnianie poprawności oprogramowania
- Testy jednostkowe
- Istota testu jednostkowego
- Typowa postać testu, proste asercje, uruchamianie
- Dodatkowe moduły przydatne w pisaniu testów: Mock, patch
18. Warstwa prezentacji
- Model DOM
- Projektowanie witryn od strony programisty – HTML i CSS
- Elementy formularza, metody POST i GET, żądania HTTP
- Renderowanie widoku po stronie serwera - technologie szablonowe
- AJAX i REST od strony frontendu
19. Działanie strony serwerowej aplikacji webowej
- Protokół HTTP
- Aplikacje uruchamiane na serwerze; serwery aplikacji
20. Framework Django
- Poznanie Django jako platformy
- Istota testu jednostkowego
- Wstępna instalacja i konfiguracja Django
- Konfiguracja i praca ze środowiskiem developerskim
- Omówienie komponentów typowej aplikacji Django
- Projekt
- Aplikacja
- Model
- Widok
- Obiektowy dostęp do bazy danych (ORM)
- Tworzenie panelu administracyjnego
- i18n
- Tworzenie komponentów aplikacji, na przykładach
- Widoki
- Szablony
- Wykorzystanie szablonów w widokach
- Różne sposoby tworzenia formularzy – ręczne i korzystające z gotowych mechanizmów
- Korzystanie z widoków generycznych
- Zasady dobrych praktyk programistycznych
- Stworzenie przykładowej aplikacji webowej
- Wspólne stworzenie przykładowego projektu na platformie Django
21. Model REST, REST API i Django
- Stworzenie przykładowego REST API przy wykorzystaniu Django
- Testy jednostkowe
- Omówienie modelu REST
- Założenia REST w kontekście Django
- Przydatne biblioteki
- Implementacja aplikacji
22. Dodatkowe narzędzia programisty backendowego
23. Wdrożenie aplikacji
- Deployment aplikacji
- Środowisko produkcyjne (omówienie serwerów webowych i serwerów aplikacji)
- Różne sposoby wdrożenia aplikacji na produkcji
Dodatkowe tematy w wariancie XL Analiza Danych
15. Środowisko pracy analityka
- Anaconda
- Manager pakietów Conda
- Manager pip
- Tworzenie wirtualnego środowiska
- Jupyter notebook
- Markdown
- Elementy notacji Latex
16. Przetwarzanie danych
- Wstęp do NumPy
- Tworzenie wektorów i macierzy
- Przekształcenia, operacje w NumPy
- Wybieranie
- Wektoryzacja
- Broadcasting
- Elementy arytmetyki i algebry przy użyciu NumPy
- Rozwiązywanie równań liniowych
- Wstęp do Pandas
- Serie i ramki danych
- Pozyskiwanie danych z różnych źródeł
- Pliki
- Zasoby w internecie
- Bazy danych
- Przygotowywanie i czyszczenie danych - Operacje i przekształcenia DataFrame
- Usuwanie kolumn i wierszy
- Zmiana wymiarów - reshaping
- Pivoting
- Rangowanie i sortowanie danych
- Łączenie ramek (concatenate, merge, join)
17. Analiza danych
- Wizualizacje
- Wprowadzenie do matplotlib
- generowanie wykresów z poziomu pandas
- seaborn i inne narzędzia do wizualizacji danych w Pythonie
- Podstawy analizy statystycznej
- Wnioskowanie statystyczne
18. Wstęp do uczenia maszynowego
- Przegląd metod i algorytmów uczenia maszynowego
- Podział metod uczenia maszynowego
- Uczenie nadzorowane
- Uczenie nienadzorowane
19. Proces uczenia maszynowego
- Eksploracja danych
- Jak dobrać najlepszy model do zadania
- Przygotowanie danych
- Zbiór uczący
- Zbiór testowy
- Szkolenie modelu
- Walidacja modelu
- Przeuczenie modelu
- Techniki redukcji wymiarowości danych
20. Omówienie metod uczenia maszynowego
- Regresja
- Regresja liniowa
- Regresja wielomianowa
- Regresja logistyczna
- Klasyfikacja
- Grupowanie danych
- Redukcja wymiarów
- Łączenie klasyfikatorów
- Wizualizowanie wyników
21. Przegląd narzędzi do uczenia głębokiego
22. Wprowadzenie do sieci neuronowych
- Jak działa neuron
- Jak uczy się sieć neuronowa
- Typy sieci neuronowych
23. Keras
- wprowadzenie
- udostępniane API
- szkolenie
- wnioskowanie
24. Różne typy sieci neuronowych
- Sztuczne sieci neuronowe (ANN)
- Konwolucyjne sieci neuronowe (CNN)
- Rekurencyjne sieci neuronowe (RNN, LSTM)
- Porównanie różnych środowisk (np. PyTorch, Tensorflow)