Oznaczenie sprawy: PN/1-12/WMFI Załącznik Nr 1 do SIWZ OPIS PRZEDMIOTU ZAMÓWIENIA: Określenie przedmiotu zamówienia: Przedmiotem zamówienia jest opracowanie materiałów i przeprowadzenie szkoleń z zakresu programowania komputerów równoległych i wykorzystania komputerów dużej mocy w ramach projektu „Programowa i strukturalna reforma systemu kształcenia na Wydziale Mat-Fiz-Inf” współfinansowanego ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego. (oznaczenie sprawy: PN/01-12/WMFI) Część 1 - Przeprowadzenie szkolenia: „F# jako język funkcyjny i obiektowy - kurs programowania” (30h) Termin 25-26 luty, 10-11 marzec 2012, Program ramowy 1. Paradygmat programowania funkcyjnego (1 godz.) 2. F# jako język programowania funkcyjnego (4 godz.) 3. Elementy programowania imperatywnego w F# (2 godz.) 4. Elementy programowania obiektowego w F# (4 godz.) 5. Zaawansowane techniki programowania w F# (4 godz.) 6. Wielowątkowość w programach f# (4 godz.) 7. Przykłady zastosowań symbolicznych (4 godz.) 8. Przykłady zastosowań numerycznych (3 godz.) 9. Dodatkowe narzędzia i techniki wspierające wydajne programowanie w F# (4 godz.) Część 2 - Opracowanie materiałów do szkolenia: „F# jako język funkcyjny i obiektowy kurs programowania” (30h) Termin Do 11 marca 2012, Program ramowy 1. Paradygmat programowania funkcyjnego (1 godz.) 2. F# jako język programowania funkcyjnego (4 godz.) 3. Elementy programowania imperatywnego w F# (2 godz.) 4. Elementy programowania obiektowego w F# (4 godz.) 5. Zaawansowane techniki programowania w F# (4 godz.) 6. Wielowątkowość w programach f# (4 godz.) 7. Przykłady zastosowań symbolicznych (4 godz.) 8. Przykłady zastosowań numerycznych (3 godz.) 9. Dodatkowe narzędzia i techniki wspierające wydajne programowanie w F# (4 godz.) Materiały powinny zabezpieczyć przeprowadzenie 30 godzin szkolenia. Powinny one mieć objętość minimum 50 stron A4 i zawierać część teoretyczną i przykłady w postaci kodów programów. Oznaczenie sprawy: PN/1-12/WMFI Załącznik Nr 1 do SIWZ Część 3 - Przeprowadzenie szkolenia: „Środowisko programisty obliczeń wielkiej skali” (30h) Termin 1 maj – 30 czerwiec 2012 (szkolenie odbędzie się trybie ciągłym - 4 dni pod rząd) Program ramowy 1. Wprowadzenie do obliczeń równoległych. 2. Instalacja i konfiguracja systemu Ubuntu Server. 3. Kompilacja, instalacja i konfiguracja MPICH2. 4. Konfiguracja klastra obliczeniowego. 5. Proste testy klastra obliczeniowego. 6. Przedstawienie modelu wielkiej skali. 7. Przykładowe symulacje wielkiej skali. 8. Testy wydajnościowe zbudowanego klastra. 9. Projektowanie uruchamiania wielu symulacji. 10. Kolejkowanie procesów. 11. Kilka słów o gridach, klastry heterogeniczne. 12. Podsumowanie. Część 4 - Opracowanie materiałów do szkolenia: „Środowisko programisty obliczeń wielkiej skali” (30h) Termin Do 30 czerwca 2012 Program ramowy 1. Wprowadzenie do obliczeń równoległych. 2. Instalacja i konfiguracja systemu Ubuntu Server. 3. Kompilacja, instalacja i konfiguracja MPICH2. 4. Konfiguracja klastra obliczeniowego. 5. Proste testy klastra obliczeniowego. 6. Przedstawienie modelu wielkiej skali. 7. Przykładowe symulacje wielkiej skali. 8. Testy wydajnościowe zbudowanego klastra. 9. Projektowanie uruchamiania wielu symulacji. 10. Kolejkowanie procesów. 11. Kilka słów o gridach, klastry heterogeniczne. 12. Podsumowanie. Materiały powinny zabezpieczyć przeprowadzenie 30 godzin szkolenia. Powinny one mieć objętość 50 stron A4 i zawierać część teoretyczną i przykłady w postaci kodów programów. Oznaczenie sprawy: PN/1-12/WMFI Załącznik Nr 1 do SIWZ Część 5 - Przeprowadzenie szkolenia: „Programowanie współbieżne, równoległe i rozproszone w Pythonie” (30h) Termin 1 marzec – 30 kwiecień 2012 (z wyjątkiem I i III weekendu marca) Zakres szkolenia: Kurs przeznaczony jest dla tych, którzy chcą zapoznać się z istniejącymi w języku Python możliwościami i narzędziami (tak wbudowanymi jak i zewnętrznymi) pozwalającymi na konstruowanie programów wielowątkowych (współbieżnych), równoległych (działających w środowisku wieloprocesorowym) oraz rozproszonych (działających w różnych modelach w sieci węzłów obliczeniowych). Kurs przewiduje krótkie wprowadzenie do podstaw Pythona, a następnie zaprezentowanie mechanizmów pozwalających na pracę współbieżną w Pythonie (jak wątki i procesy oraz pamięć wspólna, synchronizacja, komunikacja, współprocedury), kontrolowanie równoległości oraz pracę w środowisku rozproszonym (elementy programowania sieciowego, obiekty rozproszone). Zajęcia będą mieć formę wykładów ilustrowanych przykładami oraz warsztatów w laboratorium komputerowym z dostępem do odpowiedniego sprzętu. Program ramowy 1. Python – niezbędne podstawy 2. Wielowątkowość w Pythonie (tworzenie i używanie wątków, synchronizacja, komunikacja, kolejki wątków). 3. Wielowątkowość a równoległość w Pythonie – GIL. 4. Wykorzystanie wielu procesorów w Pythonie – moduł multiprocessing 5. Wykorzystanie wielu procesorów w Pythonie – na poziomie systemowym (fork). 6. Biblioteki Pythona pozwalające na rzeczywistą równoległość. 7. Pythonowe obiekty w pamięci wspólnej zadań równoległych. 8. Elementy programowania rozproszonego (sieciowego) w Pythonie na poziomie systemowym. 9. Programowanie rozproszone (oraz równoległe) w Pythonie za pomocą obiektów rozproszonych.