Wydział Informatyki - Informatyka (S1)
specjalność: Inżynieria oprogramowania
Sylabus przedmiotu Algorytmy 2:
Informacje podstawowe
Kierunek studiów | Informatyka | ||
---|---|---|---|
Forma studiów | studia stacjonarne | Poziom | pierwszego stopnia |
Tytuł zawodowy absolwenta | inżynier | ||
Obszary studiów | charakterystyki PRK, kompetencje inżynierskie PRK | ||
Profil | ogólnoakademicki | ||
Moduł | — | ||
Przedmiot | Algorytmy 2 | ||
Specjalność | przedmiot wspólny | ||
Jednostka prowadząca | Katedra Metod Sztucznej Inteligencji i Matematyki Stosowanej | ||
Nauczyciel odpowiedzialny | Przemysław Klęsk <pklesk@wi.zut.edu.pl> | ||
Inni nauczyciele | Włodzimierz Chocianowicz <Wlodzimierz.Chocianowicz@zut.edu.pl>, Tomasz Hyla <Tomasz.Hyla@zut.edu.pl>, Witold Maćków <Witold.Mackow@zut.edu.pl>, Jerzy Pejaś <Jerzy.Pejas@zut.edu.pl> | ||
ECTS (planowane) | 6,0 | ECTS (formy) | 6,0 |
Forma zaliczenia | egzamin | Język | polski |
Blok obieralny | — | Grupa obieralna | — |
Formy dydaktyczne
Wymagania wstępne
KOD | Wymaganie wstępne |
---|---|
W-1 | Algorytmy 1 |
W-2 | Matematyka dyskretna |
W-3 | Programowanie 2 |
Cele przedmiotu
KOD | Cel modułu/przedmiotu |
---|---|
C-1 | Zapoznanie z zasadami tworzenia złożonych struktur danych |
C-2 | Zapoznanie z cechami konstrukcyjnymi najważniejszych struktur danych |
C-3 | Zapoznanie z klasyfikacją i metodami oceny złożoności obliczeniowej |
C-4 | Nabycie umiejętności wyboru struktur danych odpowiednich dla problemu algorytmicznego i środowiska implementacyjnego |
Treści programowe z podziałem na formy zajęć
KOD | Treść programowa | Godziny |
---|---|---|
laboratoria | ||
T-L-1 | Implementacja liniowych struktur danych: tablica dynamiczna, kopiec binarny, tablica mieszająca. | 6 |
T-L-2 | Implementacje i porównania czasowe algorytmów sortujących - po jednym wybranym algorytmi dla każdej z klas: kwadratowe, n log n, liniowe (przez zliczanie). | 4 |
T-L-3 | Implementacja wybranych elementów (operacji) drzewa czerwono-czarnego. | 8 |
T-L-4 | Implementacja struktury Union-Find. Porównanie czasu pracy bez i z kompresją ścieżki. | 4 |
T-L-5 | Implementacja algorytmu Graham scan (znajdowanie powłoki wypukłej). | 4 |
T-L-6 | Implementacja dwóch algorytmów programowania dynamicznego: odległość edycyjna, łańcuchowe mnożenie macierzy. | 4 |
30 | ||
wykłady | ||
T-W-1 | Zaawansowane liniowe struktury danych: tablice dynamiczne, kopce, listy z przeskokami. Zaamortyzowana złożoność stała wstawiania do tablicy dynamicznej. Kopiec zupełny binarny - reprezentacja, indeksowanie, wstawianie i usuwanie (złożoność logarytmiczna). Kopiec dwumianowy i Fibonacciego. Sortowanie przez kopcowanie. | 3 |
T-W-2 | Wyszukiwanie i struktury danych. Drzewa wyszukiwań binarnych - BST. Zagadanienie równoważenia drzew. Drzewa wielokierunkowe: B-drzewa i warianty (B+, B*), R-drzewa, kd-drzewa. | 4 |
T-W-3 | Drzewa czerwono-czarne. Ogólna konstrukcja i własności. Dowód złożoności logartymicznej przy zachowaniu tej konstrukcji. Operacje: dodawanie, usuwanie, rotacje. | 5 |
T-W-4 | Grafy - najkrótsze ścieżki dla wszystkich par wierzchołków. Algorytm Floyda-Warshalla. Zachowanie algorytmu dla ujemnych cykli. Porównanie do innych algorytmów najkrótszych ścieżek. | 2 |
T-W-5 | Struktura zbiorów rozłącznych: Union-Find. Łączenie według rang, kompresja ścieżki. Złożoność zamortyzowana: logartym iterowany z n (wraz z dowodem). | 2 |
T-W-6 | Wybrane algorytmy geometryczne. Przecinanie się odcinków. Powłoka wypukła (Graham scan, agorytm Jarvisa). Związek znajdowania powłoki wypukłej z sortowaniem. | 2 |
T-W-7 | Algorytmy programowania dynamicznego: odległość edycyjna (Levensteina), algorytm Floyda-Warshalla. | 2 |
T-W-8 | Złożoność rzędu n log n jako dolne ograniczenie dla algorytmów sortujących przez porównania - dowód. Sortowanie w czasie liniowym: counting sort, bucket sort, radix sort. Tablice mieszające (tablice z haszowaniem), funkcje skrótu, kolizje, zastosowania. | 3 |
T-W-9 | Szereg Fouriera i szybka transformata Fouriera (FFT) jako przykład podejścia "dziel i zwyciężaj". Funkcje ortogonalne, iloczyn skalarny, twierdzenie o przybliżaniu w normie kwadratowej. Dyskretna transformata Fouriera (DFT) i szybka transformata (FFT). Algorytm Cooleya-Tukeya - złożoność O(n log n). Inne algorytmy FFT. | 3 |
T-W-10 | Klasy problemów: P, NP, NP-zupełne, NP-trudne. Niedeterministyczna maszyna Turinga. Problemy: cykl Hamiltona, klika, spełnialność formuł logicznych, trójkolorowalność grafu. Podstawowe informacje o redukcjach. | 4 |
30 |
Obciążenie pracą studenta - formy aktywności
KOD | Forma aktywności | Godziny |
---|---|---|
laboratoria | ||
A-L-1 | Implementacja algorytmów obsługujących struktury danych podczas zajęć laboratoryjnych - udział w zajęciach dydaktycznych | 30 |
A-L-2 | Przygotowanie do rozwiązania wskazanych problemów implementacyjnych | 24 |
A-L-3 | Optymalizacja rozwiązań uzyskanych podczas zajęć laboratoryjnych | 15 |
A-L-4 | Konsultacje | 6 |
75 | ||
wykłady | ||
A-W-1 | Udział w wykładach. | 30 |
A-W-2 | Analiza i rozwiązywanie problemów rozszerzających materiał wykładowy (praca własna). | 25 |
A-W-3 | Przygotowanie się do egzaminu. | 10 |
A-W-4 | Udział w egzaminie | 2 |
A-W-5 | Konsultacje | 8 |
75 |
Metody nauczania / narzędzia dydaktyczne
KOD | Metoda nauczania / narzędzie dydaktyczne |
---|---|
M-1 | Wykład informacyjno-konwersatoryjny |
M-2 | Ćwiczenia laboratoryjne |
Sposoby oceny
KOD | Sposób oceny |
---|---|
S-1 | Ocena formująca: Sprawdzian przygotowania do zajęć laboratoryjnych |
S-2 | Ocena formująca: Ocena wykonania poszczególnych implementacji |
S-3 | Ocena podsumowująca: Egzamin pisemny |
Zamierzone efekty uczenia się - wiedza
Zamierzone efekty uczenia się | Odniesienie do efektów kształcenia dla kierunku studiów | Odniesienie do efektów zdefiniowanych dla obszaru kształcenia | Odniesienie do efektów uczenia się prowadzących do uzyskania tytułu zawodowego inżyniera | Cel przedmiotu | Treści programowe | Metody nauczania | Sposób oceny |
---|---|---|---|---|---|---|---|
I_1A_C04.2_W01 Student zna zasady tworzenia złożonych typów danych i algorytmy manipulujące określonymi strukturami danych oraz sposoby oceny ich złożoności obliczeniowej. | I_1A_W01, I_1A_W02 | — | — | C-1, C-2, C-3 | T-W-10, T-W-2, T-W-8, T-W-7, T-W-4, T-W-5, T-W-6, T-W-1, T-W-3, T-W-9 | M-1 | S-3 |
Zamierzone efekty uczenia się - umiejętności
Zamierzone efekty uczenia się | Odniesienie do efektów kształcenia dla kierunku studiów | Odniesienie do efektów zdefiniowanych dla obszaru kształcenia | Odniesienie do efektów uczenia się prowadzących do uzyskania tytułu zawodowego inżyniera | Cel przedmiotu | Treści programowe | Metody nauczania | Sposób oceny |
---|---|---|---|---|---|---|---|
I_1A_C04.2_U01 Student ma świadomość barier obliczeniowych związanych ze złożonością problemów obliczeniowych i umie dokonać właściwego wyboru struktur danych odpowiednich dla problemu algorytmicznego. | I_1A_U06 | — | — | C-4 | T-L-2, T-L-4, T-L-6, T-L-1, T-L-3, T-L-5 | M-2 | S-1, S-2 |
Kryterium oceny - wiedza
Efekt uczenia się | Ocena | Kryterium oceny |
---|---|---|
I_1A_C04.2_W01 Student zna zasady tworzenia złożonych typów danych i algorytmy manipulujące określonymi strukturami danych oraz sposoby oceny ich złożoności obliczeniowej. | 2,0 | |
3,0 | Uzyskanie wyniku w przedziale [50%, 60%) z egzaminu końcowego. | |
3,5 | Uzyskanie wyniku w przedziale [60%, 70%) z egzaminu końcowego. | |
4,0 | Uzyskanie wyniku w przedziale [70%, 80%) z egzaminu końcowego. | |
4,5 | Uzyskanie wyniku w przedziale [80%, 90%) z egzaminu końcowego. | |
5,0 | Uzyskanie wyniku w przedziale [90%, 100%] z egzaminu końcowego. |
Kryterium oceny - umiejętności
Efekt uczenia się | Ocena | Kryterium oceny |
---|---|---|
I_1A_C04.2_U01 Student ma świadomość barier obliczeniowych związanych ze złożonością problemów obliczeniowych i umie dokonać właściwego wyboru struktur danych odpowiednich dla problemu algorytmicznego. | 2,0 | |
3,0 | Uzyskanie wyniku w przedziale [50%, 60%) za programy i sprawdziany realizowane na zajęciach laboratoryjnych. | |
3,5 | Uzyskanie wyniku w przedziale [60%, 70%) za programy i sprawdziany realizowane na zajęciach laboratoryjnych. | |
4,0 | Uzyskanie wyniku w przedziale [70%, 80%) za programy i sprawdziany realizowane na zajęciach laboratoryjnych. | |
4,5 | Uzyskanie wyniku w przedziale [80%, 90%) za programy i sprawdziany realizowane na zajęciach laboratoryjnych. | |
5,0 | Uzyskanie wyniku w przedziale [90%, 100%] za programy i sprawdziany realizowane na zajęciach laboratoryjnych. |
Literatura podstawowa
- T.H. Cormen, Ch.E.Leiserson, R.I.Rivest, C.Stein, Wprowadzenia do algorytmów, WNT, Warszawa, 2002
- M.Sipser, Wprowadzenie do teorii obliczeń, WNT, Warszawa, 2009
- T. H. Cormen, Algorytmy bez tajemnic, Helin, 2013
- D. E. Knuth, Sztuka programowania, WNT, 2002
Literatura dodatkowa
- D.Harel, Rzecz o istocie informatyki - algorytmika, WNT, Warszawa, 2000
- N.Wirth, Algorytmy + struktury danych = programy, WNT, Warszawa, 2001
- A.V.Aho, J.E.Hopcroft, J.D.Ullman, Algorytmy i struktury danych, Helion, Gliwice, 2003
- R.L. Graham, D.E. Knuth, O. Patashnik, Matematyka konkretna, PWN, 2018