Kurs Python dla zaawansowanych
Prowadzący: Krzysztof Berezowski, W-4/I-6 (tel. sł. 27-59)
Kurs stanowi kontynuację zeszłorocznego kursu Python, podczas którego omówiliśmy cały język w wersji 2.x, choć z pewnością pewne rzeczy już trochę powierzchownie (programowanie obiektowe, obsługę wyjątków). Pierwsze spotkanie będzie poświęcone powtórzeniu materiału i dokładniejszemu omówieniu podstaw programowania obiektowego.
- Pierwsze spotkanie:
- 30-minutowe powtórzenie najważniejszych typów danych pythona i schematów ich użycia
- filary programowania obiektowego: klasa, obiekt, enkapsulacja/hermetyzacja, dziedziczenie, polimorfizm.
- Drugie spotkanie:
- mechanizmy obsługi sytuacji wyjątkowych (z nieco bardziej ugruntowaną wiedzą o aspektach obiektowych pójdzie nam znacznie łatwiej),
- najważniejsze różnice między pythonem 2.x a 3.x
Kolejne spotkania proponuję przeznaczyć na omówienie bibliotek. Biorąc pod uwagę Państwa profil, jako użytkowników WCSS proponuję skupić się na mechanikach umożliwiających Państwu automatyzację eksperymentów prowadzonych z wykorzystaniem innych narzędzi oraz biblioteki służące do obliczeń naukowych dostępne w Pythonie.
- Trzecie spotkanie:
- interfejsy do systemów operacyjnych: wywoływanie funkcji systemowych i innych programów z poziomu skryptu w pythonie, komunikacja po stdin/stdout
- schematy dostępów do plików i użycie regexów (czyli parsowanie danych z programów i przetwarzanie eksperymentu),
- getopt, żeby pisać skrypty-programy (w konteście automatycznego przetwarzania wyników eksperymentów znów).
- Opcjonalne 4-te spotkanie (a 2-gie "systemowe") mogłoby dotyczyć:
- programowania w internecie (np. telnet, http, ftp, sendmail),
- i ew. wielowątkowości (wątki i synchronizacja), schematy obliczeniowe: klient-serwer i farma procesów.
- 5-te spotkanie (bądź 4-te jeśli nie poruszalibyśmy programowania w internecie i wielowątkowości)
- biblioteki numpy, scipy i matplotlib (programowanie naukowe)
i wtedy mając podstawy (biblioteka numpy) ew. 6/5-spokanie mogłoby dotyczyć MPI/GPGPU i zrównoleglaniu obliczeń naukowych jeżeli byliby chętni. To jednak zależy od Państwa poziomu świadomości języka C, bo o ile jeszcze MPI za pomocą MaroonMPI można ugryźć bez C, to do GPGPU trzeba raczej być z C za pan brat, oraz rozumieć szereg zagadnień związanych z architekturami procesorów GPGPU. Tym niemniej jestem w stanie sobie wyobrazić, iż nie wchodząc w szczegóły optymalizacji kodu potrafiłbym przekazać Państwu jakieś podstawowe schematy użycia (zrównoleglanie problemów typu data-parallel przede wszystkim).