Wiedza potrzebna na początek:
- Podstawy programowania obiektowego: klasy, konstruktory, destruktory, dostęp do składowych, dziedziczenie, operatory itp.
- Język C#
- Interfejsy, klasy abstrakcyjne
- Klasy i interfejsy ogólne, szablony z C++
Zadania realizowane w ramach laboratorium:
- Porównanie metod sortowania
- Metody sortowania: prosty wybór, bąbelkowe, szybkie, przez łączenie, przez kopcowanie, przez zliczanie
- Uruchamianie metod w osobnych wątkach
- Sprawiedliwy pomiar i przydział czasu
- Klasa Porównywarka
- konstruktor i/lub własności
- metody do porównania (delegate ThreadStart)
- metoda do okresowego uruchamiania (np. dla wizualizacji, delegate ThreadStart)
- kwant czasu, co który będzie wołana "okresowa" metoda
- metoda Porównaj()
- uruchom każdą porównywaną metodę w osobnym wątku (i od razu zawieś)
- tak długo jak nie wszystkie wątki są zakończone:
- odwieś wątki porównywanych metod (tych, które nie zakończyły)
- czekaj kwant czasu
- zawieś wszystkie odwieszone wątki
- uruchom "okresową" metodę
- Testy poszczególnych metod sortowania i innych rozwiązań algorytmicznych
- Interfejs graficzny z wizualizacją porównań
-
Zrównoleglona wersja sortowania przez łączenie
- Wersja 1: wielowątkowo do pewnego poziomu zagłębienia
- Wersja 2: menadżer wątków, dowolna liczba biegnących wątków, sygnalizacja przez Wait() i Pulse()
-
Eksperymenty z wyrażeniami regularnymi
-
Eksperymenty z systemem LINQ