Na kursie semestralnym poruszamy następujące kwestie w ramach omawianych tematów. Każde zajęcia zawierają przedstawienie teoretyczne zagadnień, proste ćwiczenia wykonywane podczas zajęć (samodzielnie lub razem z prowadzącymi), zakończone są zestawem zadań do samodzielnego rozwiązania pomiędzy zajęciami, które umożliwiają utrwalenie i rozszerzenie poznanego materiału. Niektóre tematy zawierają też dodatkowe elementy - warte opanowania, ale nieomawiane podczas samych zajęć.
Szczegółowy zakres kursu przeznaczony jest dla osób posiadających już pewną wiedzę na temat programowania, zarówno w Pythonie jak i w innych językach.
Jeśli nie rozumiesz, co tu jest napisane - nic nie szkodzi, zrozumiesz po kursie! :)
Część pierwsza - składnia języka Python:
1. Instalacja i przygotowanie środowiska, pierwszy skrypt Hello World, operacje na liczbach i napisach
- wprowadzenie do środowiska Code With Mu, obsługa innych środowisk
- plik skryptów .py, uruchamianie skryptów, pisanie kodu i odczytywanie wyników na konsoli
- pierwszy program "Hello World" (instrukcja print)
- proste programy z wyświetlaniem napisów i obliczeniami
- liczby i napisy (stringi) - podobieństwa, różnice, możliwe operacje, przechodzenie pomiędzy typami (rzutowanie)
- znaki specjalne w stringach
- zapis stringów z apostrofami i cudzysłowami
- programy wielolinijkowe, wyświetlanie wielu instrukcji w jednej linijce
- komentarze w kodzie
2. Działania na zmiennych, typy liczbowe, typy logiczne, instrukcja warunkowa if-elif-else
- pojęcie zmiennej i działania na zmiennych
- pobieranie danych od użytkownika (input)
- charakterystyka i nazewnictwo zmiennych
- słowa kluczowe w Pythonie
- dynamiczne typowanie zmiennych - typ int, string, float
- wartości logiczne - True i False
- operacje porównań logicznych (równość, porównanie, różność)
- instrukcja wyboru if
- instrukcje z alternatywą if-else
- instrukcje z wieloma alternatywami if-elif-else
- łączenie warunków logicznych (and i or)
- jednolinijkowy if-else (operator trójargumentowy)
3. Grupowanie danych w Pythonie - kolekcje i operacje na nich (listy, krotki, słowniki, sety)
- przykłady kolekcji i typy kolekcji w Pythonie
- lista jako podstawowa kolekcja elementów
- indeksowanie i własności list
- operacje na listach (modyfikacja elementów, dołączanie, wklejanie, zdejmowanie elementów, odwracanie listy, łączenie list, mnożenie przez liczbę)
- wycinki list (slice) - indeksowanie
- krotki (tuple) - niemodyfikowalne listy, przykłady, charakterystyka
- słowniki (dict) - struktury par klucz-wartość, przykłady, charakterystyka
- operacje na słownikach - tworzenie, dodawanie elementów, usuwanie elementów, odczytanie kluczy lub wartości
- zbiory (set) - struktury o unikalnych elementach, przykłady, charakterystyka
- operacje na zbiorach - tworzenie, dodawanie elementów, usuwanie elementów, sprawdzanie czy element jest w zbiorze
- napisy - operacje jak na listach
- deklaracja kolekcji pustych
- konwersja między typami (rzutowanie i jego konsekwencje)
4. Automatyzacja kodu - pętle for, while, pętle zagnieżdżone, generatory list
- pętla jako sposób na uproszczenie kodu
- pętla for - składnia, przykłady, kolejność wykonywania operacji
- generator range() do pracy z zakresem liczb, użycie w pętli for
- pętla while - składnia, przykłady, kolejność wykonywania operacji
- pętla nieskończona
- instrukcje break i continue
- łączenie pętli z instrukcjami if-else, przerywanie pętli
- pęfla for - iterowanie po kolekcjach
- generator listy - list comprehension, przykłady
- pętle zagnieżdżone ("pętla w pętli")
- konstrukcje for-else oraz while-else
5. Grupowanie kodu - tworzenie i wywoływanie funkcji
- funkcja jako sposób na grupowanie kodu, poznane dotychczas funkcje
- funkcja jako "black box" - input, output, ciało funkcji, wywoływanie funkcji
- składnia i przykłady funkcji
- zwracanie wartości - instrukcja return
- nazewnictwo w funkcjach - parametry, argumenty, zwracany typ, dobre praktyki w tworzeniu funkcji
- parametry o domyślnych wartościach
- wywoływanie z jawnymi parametrami
- rekurencja - wywołanie funkcji przez samą siebie
- zasięg zmiennych w funkcji (lokalne i globalne)
- wyrażenia lambda - funkcje anonimowe
- funkcje ze zmienną liczbą parametrów
6. Poszerzanie możliwości programów - importowanie wbudowanych modułów (m.in. math, random, time, datetime)
- importowanie modułów, biblioteka standardowa Pythona
- moduł random - losowanie liczb
- moduł math - operacje matematyczne
- moduł time - przerywanie programu, mierzenie czasu trwania programów, wyświetlanie godziny, czas unixowy
- moduł datetime - praca z czasem i kalendarzem
- moduł keyword - słowa kluczowe w Pythonie
- różne sposoby importowania modułów (aliasy, from - import, import *)
- dokumentacja języka Python - inne moduły warte poznania
- funkcja dir()
- tworzenie własnych modułów
- pakiety jako zbiory modułów, __init__.py, __name__
7. Operacje na plikach i przetwarzanie tekstu, obsługa wyjątków
- podstawowe operacje na plikach w Pythonie - funkcja open(), handler pliku, tryb otwarcia
- różne sposoby odczytu plików - odczyt całego pliku, n linii, jednej linii, wszystkich linii
- zamykanie pliku - funkcja close()
- konstrukcja with-as do pracy z plikami
- zapis do pliku - tryby write i append
- wyjątki jako nieoczekiwane błędy programu, przykłady wyjątków
- obsługa wyjątków - konstrukcja try-except
- instrukcja finally
- rzucanie wyjątków (raise)
- podstawowe wyjątki do obsługi w programach - praca z dokumentacją
- konstrukcja try-else
8. Podstawy programowania obiektowego w Pythonie
- programowanie proceduralne i obiektowe - charakterystyka
- charakterystyka obiektów, przykłady
- nazewnictwo w programowaniu obiektowym (klasa, obiekt, stan, operacje, pola, metody)
- projektowanie klas w języku Python, przykłady
- tworzenie obiektów, ustawianie wartości pól i ich odczyt, wywołanie metod
- konstruktor klasy - metoda __init__()
- dziedziczenie klas, drzewo dziedziczenia, przykłady
- agregacja, przykłady
Część druga - narzędzia Pythona do Data Science:
9. Środowisko Anaconda / Jupyter Notebook, instalowanie pakietów, tworzenie wykresów - biblioteka Matplotlib
- praca z notatnikami Jupyter Notebook, uruchamianie kodu, podział na komórki, praca z komórkami, skróty klawiszowe
- instalacja bibliotek zewnętrznych w Pythonie
- generowanie danych do wykresów
- proste wykresy w Matplotlib - plot, znaczniki danych (markery), kolory i kształty linii
- wykres funkcji y= f(x), wiele danych na jednym wykresie
- wykresy słupkowe (bar), wykresy kołowe (pie)
- wiele wykresów na jednym oknie (subplot)
- histogramy
- symbole matematyczne
10. Pliki danych CSV i JSON, korzystanie z REST API - biblioteka Requests
- pliki danych CSV/JSON jako "małe" bazy danych
- format pliku CSV - header, separator, standardy
- plik CSV w Pythonie - odczyt klasycznie, odczyt z modułem csv, zapis danych
- format pliku JSON - zagnieżdżanie słowników i list, moduł pprint
- plik JSON - odczyt danych, zapis danych, moduł json, odczyt i zapis danych surowych
- biblioteka Requests
- pobieranie danych z REST API, przetwarzanie i odczyt danych
- przetwarzanie surowego tekstu z requests
- pobieranie danych i wyświetlanie wykresu w Matplotlib
11. Obliczenia numeryczne, typ ndarray - biblioteka Numpy
- biblioteka Numpy do obliczeń numerycznych
- typ danych ndarray - charakterystyka, podobieństwa i różnice tablic ndarray z klasycznymi listami
- predefiniowane tablice, podstawowe generatory (zeros, ones, linspace, arange, random)
- tablice N-wymiarowe - kształt, rozmiar, indeksowanie w Numpy, wycinki tablic
- operacje na elementach tablic
- funkcje matematyczne i statystyczne w Numpy
- generowanie danych z rozkładów statystycznych, histogram rozkładu
- odczyt danych z pliku TXT, przetwarzanie danych, rysowanie wykresu
- macierze w Numpy
- maski tablicy, operacje logiczne na elementach, konstrukcja where
- filtrowanie i "naprawa" danych z Numpy
- biblioteka Scipy - rozszerzenie Numpy do prac naukowych
12. Pobieranie i obróbka danych, Data Series i Data Frame - biblioteka Pandas
- biblioteka Pandas do pracy z danymi tabelarycznymi
- struktury danych w Pandas: Data Series i Data Frame
- Data Series - tworzenie serii z listy, tablicy Numpy, słownika, indeksowanie, podstawowe operacje
- Data Frame - tworzenie tabeli z listy, tablicy wielowymiarowej, słownika, pojęcie indeksów i kolumn
- różne sposoby odwołania do indeksów, kolumn i elementów w Data Frame, własności Data Frame
- łączenie danych (concat)
- edycja kolumn, dodawanie nowych kolumn, zmiana nazw, łączenie zawartości wielu kolumn
- odczyt plików CSV i Excel w Pandas, szybkie charakterystyki
- filtrowanie danych
- grupowanie danych (groupby)
- wartości unikalne i duplikaty
- obsługa brakujących danych (NaN)
- przetwarzanie danych - funkcja map() i wyrażenia lambda
- zapis do plików CSV i Excel
- odczyt i zapis danych z Rest API / JSON
13. Praca w parze ze sztuczną inteligencją - używanie ChatGPT do nauki i pisania programów!
- generowanie kodu w ChatGPT, prompt engineering
- sposoby na poprawianie odpowiedzi, zasady Clean Code, stosowanie PEP8
- charakterystyka typowego kodu generowanego przez AI
- walidacja i testowanie kodu z AI
- dostosowanie kodu do modelu danych (przykład pliku CSV oraz web scrapping)
- nauka programowania ze sztuczną inteligencją
- przyszłościowy zawód - "promptista"