Zaprojektować, zaimplementować i zademonstrować w praktyce użycie klas realizujących poniższe wytyczne:
Wyjątki
Zademonstrować mechanizm wybiórczej obsługi wyjątków (program ma identyfikować rodzaj wyjątku (a dokładniej jego klasę) jako jeden z kilku możliwych).
Zademonstrować mechanizmy kreowania i zgłaszania własnych wyjątków.
Zademonstrować mechanizm powtórnego zgłaszania wyjątków na przykładzie kaskadowo wywoływanych w zagnieżdżeniu kilku procedur; każda procedura ma obsługiwać wyjątek w widoczny sposób.
Zademonstrować współdziałanie bloków try..catch i try...finally
Napisać dwa warianty tej samej aplikacji (np. obliczanie pierwiastków równania kwadratowego) obsługującej GUI; jeden wariant ma programowo, interaktywnie nadzorować poprawność wprowadzanych przez użytkownika danych; drugi wariant ma wykorzystywać obsługę wyjątków.
Wątki
Iteracyjne wyszukiwanie wspólnych mianowników dla wszystkich par liczb z zadanego przedziału bez blokowania aplikacji (czyli w wątku drugoplanowym) z możliwością przerwania, pauzy, z prezentacją wyników i postępu.
Zadanie j.w. ale w wykonaniu wielowątkowym (jeden wątek dla danej pary) z możliwością definiowania liczby jednocześnie uruchomiomych wątków oraz porównaniem efektywności.
Pobieranie dużego pliku z sieci - jeden wątek drugoplanowy (warunki jak w zad.1) np. z pomocą klasy WebClient (przykład użycia klasy WebClient: PWSI_2016_04_17_v2.zip).
Pobieranie wielu plików z sieci - wiele wątków (warunki jak w zad.2).
Tablicowanie funkcji w dużej dziedzinie z użyciem klasy BackgroundWorker (z zatrzymaniem, prezentacją postępu).