Algorytmika Olimpijska

Język wykładowy Polski
Semestr Nieokreślony
Status W ofercie
Opiekun Karol Pokorski
Liczba godzin 30 (wyk.) 30 (ćw-prac.)
Rodzaj K2 - kurs zaawansowany
ECTS 5
Polecany dla I roku Nie
Egzamin Nie

Opis przedmiotu:

Niektórzy studenci mają doświadczenie w startach w zawodach Olimpiady Informatycznej lub nawet zawodach ACM ICPC. Niewielu jednak wie, jak wygląda proces przygotowania takiego konkursu przez organizatorów. Czasami, a może nawet często, przygotowanie zadania jest trudniejsze od jego rozwiązania. Celem tego kursu jest pokazanie świata zawodów algorytmicznych od strony "kuchni", co być może będzie też pomocne w przygotowaniach do startów. Zainteresowane osoby uzyskają też informacje o tym jak wziąć udział w pracach nad konkursami organizowanymi na naszej uczelni i poza nią. Drugą częścią przedmiotu jest przygotowanie studentów do dydaktyki informatyki, szczególnie w szkołach podstawowych i liceach. Studenci poznają metody nauczania uczniów, a na ćwiczeniach będą prezentowali również własne pomysły i adaptacje metod z wykładu. Zainteresowane osoby uzyskają też informacje o tym jak włączyć się w działania edukacyjne w szkołach koordynowane przez naszą uczelnię. Program wykładu =============== Pierwsza część kursu obejmować będzie przegląd zagadnień związanych z przygotowaniem zadania konkursowego: właściwe przygotowanie treści, dobór limitów na rozmiar danych wejściowych, dobór ograniczeń czasu i pamięci, przygotowanie danych testowych, przygotowanie programów pomocniczych, dobór punktacji za rozwiązania częściowe, wymyślanie własnych zadań, omówienie potencjalnych błędów podczas przygotowania zadania. Drugą część stanowią podstawowe elementy dydaktyki algorytmiki konkursowej: jak umiejętnie dzielić się swoją wiedzą z innymi studentami i młodszymi uczniami oraz jak przygotować dobrej jakości materiały edukacyjne z tej dziedziny. Ostatnie dwa wykłady stanowić będą przegląd wybranych bardziej zaawansowanych zagadnień dotyczących treści zaprezentowanych wcześniej, na zasadzie mini-referatów przygotowanych przez studentów. Przykłady tematów: * ocena jakości losowych testów w zadaniach grafowych (np. dla problemu spójności grafu czy najkrótszych ścieżek), * testowanie rozwiązań zrandomizowanych, * przygotowanie złośliwych danych dla obliczeń zmiennoprzecinkowych w zadaniach geometrycznych, * zastosowania machine learning do przygotowania danych testowych w zadaniach (na przykład: złośliwe czasowo testy w zadaniach przepływowych), * automatyczne wykrywanie niesamodzielnych rozwiązań, * bezpieczeństwo automatycznego procesu oceny. Lista tematów do wyboru jest o wiele szersza. Możliwe jest proponowanie własnych tematów. Program ćwiczeń/pracowni ======================== Na ćwiczeniach/pracowni w pierwszej części semestru skupimy się na dokładnej analizie kolejnych etapów przygotowania zadania zgodnie z programem wykładu. Zadania na listach będą bardzo zróżnicowane: niektóre będą wymagały napisania dokumentu w LaTeX czy Markdown, inne programu w C++, jeszcze inne skryptu w Bashu czy Pythonie. Niektóre zadania będą w formie krótkich (kilkanaście minut) mini-referatów do zaprezentowania przed grupą. Nacisk zostanie położony na jakość prezentacji i umiejętność przekazania wiadomości grupie. Niektóre zadania mogą wymagać nauczenia się prostych narzędzi (np. do tworzenia obrazków czy szyfrowania dokumentów). Ostatnią częścią pracowni będzie projekt, którym będzie wymyślenie i przygotowanie własnego zadania olimpijskiego lub przygotowanie własnego materiału edukacyjnego z zakresu algorytmiki konkursowej. Efektem ubocznym kursu ma być zbiór zadań, który wykorzystamy do wewnętrznego konkursu dla zainteresowanych oraz wśród uczniów, dla których prowadzimy zajęcia w liceach i gimnazjach. Wymagania ========= Ukończenie kursu Algorytmów i Struktur Danych powinno być wystarczające, choć nie jest wymaganiem koniecznym.