Wydział Informatyki
Kierunek studiów Informatyka Poziom i forma studiów pierwszego stopnia inżynierskie stacjonarne
Specjalność / Ścieżka dyplomowania --- Profil kształcenia ogólnoakademicki
Nazwa przedmiotu Zaawansowane metody i techniki programowania w Pythonie Kod przedmiotu INF1ZMP
Rodzaj przedmiotu obieralny
Forma zajęć i liczba godzin W Ć L P Ps T S Semestr 5
26 30 Punkty ECTS 5
Przedmioty wprowadzające Programowanie obiektowe (INF1POB),   Zaawansowane techniki programistyczne (INF1ZTP),  
Cele przedmiotu

Rozwinięcie umiejętności studentów w zakresie projektowania, implementacji i optymalizacji złożonych aplikacji w języku Python. Studenci poznają nowoczesne techniki programowania, takie jak programowanie funkcyjne, obiektowe i asynchroniczne, zaawansowane wzorce projektowe, testowanie i profilowanie kodu oraz tworzenie aplikacji wielowątkowych i sieciowych. Przedmiot przygotowuje do świadomego stosowania Pythona w pracy inżynierskiej, naukowej i komercyjnej, kładąc nacisk na jakość kodu, czytelność i efektywność rozwiązań.

Treści programowe

Wykład:
1. Zaawansowane cechy języka Python
2. Programowanie obiektowe na poziomie eksperckim
3. Programowanie funkcyjne w Pythonie
4. Programowanie asynchroniczne i współbieżność
5. Obsługa błędów i dobre praktyki zarządzania wyjątkami
6. Testowanie aplikacji w Pythonie
7. Profilowanie, debugowanie i optymalizacja kodu
8. Zaawansowane wzorce projektowe w Pythonie
9. Tworzenie i wykorzystanie bibliotek i modułów
10. Zaawansowana praca z danymi i serializacja
11. Programowanie sieciowe i aplikacje serwerowe
12. Nowoczesne technologie i Python w praktyce
13. Zaliczenie wykładu

Pracownia specjalistyczna:
1. Projektowanie własnych dekoratorów i generatorów
2. System zarządzania zadaniami oparty na programowaniu obiektowym
3. Budowa aplikacji asynchronicznej do pobierania danych z wielu źródeł
4. Implementacja wzorca projektowego "Observer" w Pythonie
5. Tworzenie i testowanie biblioteki do walidacji danych wejściowych
6. Profilowanie i optymalizacja aplikacji przetwarzającej pliki CSV
7. Implementacja prostego serwera TCP oraz klienta komunikującego się przez sockety

Metody dydaktyczne

wykład problemowy,   programowanie z użyciem komputera,   wykład informacyjny,  

Forma zaliczenia

Wykład: zaliczenie pisemne.
Pracownia specjalistyczna: ocena zadań programistycznych.

Symbol efektu uczenia się Zakładane efekty uczenia się Odniesienie do kierunkowych efektów uczenia się
EU1 struktury danych, mechanizmy programowania obiektowego, funkcyjnego i asynchronicznego w języku Python, wzorce projektowe oraz zasady tworzenia czytelnego, skalowalnego i bezpiecznego kodu w języku Python, narzędzia i techniki testowania, profilowania oraz optymalizacji aplikacji w Pythonie. INF1_W04
INF1_W09
INF1_W14
EU2 projektować i implementować złożone aplikacje oraz biblioteki w języku Python, stosując zaawansowane techniki programistyczne. INF1_U04
INF1_U05
INF1_U13
EU3 testować, analizować i optymalizować kod źródłowy z wykorzystaniem specjalistycznych narzędzi oraz dokumentować efekty swojej pracy. INF1_U06
INF1_U07
EU4 integrować aplikacje Pythonowe z systemami sieciowymi i usługami zewnętrznymi, korzystając z odpowiednich bibliotek i technologii. INF1_U11
INF1_U12
Symbol efektu uczenia się Sposób weryfikacji efektu uczenia się Forma zajęć na której zachodzi weryfikacja
EU1 zaliczenie pisemne W
EU2 ocena zadań programistycznych PS
EU3 ocena zadań programistycznych PS
EU4 ocena zadań programistycznych PS
Bilans nakładu pracy studenta (w godzinach) Liczba godz.
Wyliczenie
1 - Udział w wykładach 26
2 - Udział w pracowni specjalistycznej 30
3 - Wykonanie zadań domowych 55
4 - Udział w konsultacjach 4
5 - Przygotowanie do zaliczenia 10
RAZEM: 125
Wskaźniki ilościowe GODZINY ECTS
Nakład pracy studenta związany z zajęciami wymagającymi bezpośredniego udziału nauczyciela 60
(1)+(2)+(4)
2.4
Nakład pracy studenta związany z zajęciami o charakterze praktycznym 85
(2)+(3)
3.4
Literatura podstawowa

1. Python 3.x Documentation - https://docs.python.org/3/
2. Ramalho, Luciano., Maria. Chaniewska, Jakub. Niedźwiedź, and Marek. Włodarz. Zaawansowany Python : przejrzyste, zwięzłe i efektywne programowanie. Wydanie drugie.ed. Warszawa: APN Promise : O’Reilly, 2022
3. Hillard, Dane. Python : dobre praktyki profesjonalistów. Gliwice: Helion, 2020

Literatura uzupełniająca

1. Real Python – Tutorials - https://realpython.com/
2. Python Design Patterns – GitHub resource - https://github.com/faif/python-patterns
3. Ramalho, Luciano. Fluent Python: Clear, concise, and effective programming. O'Reilly Media, Inc., 2015.
4. pytest – Dokumentacja - https://docs.pytest.org/en/latest/
5. Asyncio – Dokumentacja i przewodnik - Asyncio – https://docs.python.org/3/library/asyncio.html

Jednostka realizująca Katedra Oprogramowania Data opracowania programu
Program opracował(a) dr inż. Tomasz Łukaszuk 2025.02.23