Kurs Python dla zaawansowanych

Z KdmWiki
Skocz do: nawigacji, wyszukiwania

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).