Prowadzony w
cyklu:
2023L
Kod Erasmus: 11.1
Kod ISCED: 0541
Punkty ECTS:
6
Język:
polski
Organizowany przez:
Wydział Matematyki, Informatyki i Mechaniki
Wstęp do informatyki II (potok II) 1000-112bWI2b
- Elementy analizy złożoności obliczeniowej: Rozmiar zadania. Złożoność czasowa i pamięciowa. Rząd złożoności. Wpływ rzędu złożoności na praktyczną przydatność algorytmu. Obliczanie złożoności prostych algorytmów (sortowanie i wyszukiwanie binarne). Obliczanie złożoności algorytmów rekurencyjnych (pamięciowej i czasowej).
- Abstrakcyjne struktury danych i metody ich implementacji: Stosy, kolejki, kolejki priorytetowe. Przykłady użycia (algorytm Heap-Sort). Implementacja tablicowa. Wskaźniki. Dynamiczna alokacja pamięci. Listy. Listowa implementacja stosu, kolejki i kolejki priorytetowej. Drzewa binarnych wyszukiwań.
- Grafy i algorytmy grafowe: Grafy i ich reprezentacje. Podstawowe algorytmy grafowe. Przeszukiwanie w głąb i wszerz.
- Informacja o problemach NP-zupełnych i nierozstrzygalnych.
Rodzaj przedmiotu
obowiązkowe
Założenia (opisowo)
Oczekuje się dobrej znajomości zagadnień ujętych w sylabusie przedmiotu Wstęp do informatyki I.
Koordynatorzy przedmiotu
Efekty kształcenia
Zna materiał wyłożony w trakcie wykładu i utrwalony na ćwiczeniach oraz laboratorium.
Potrafi wykorzystać zdobytą wiedzę do rozwiązywania zadań.
W szczególności:
- Potrafi przeprowadzić analizę kosztu algorytmów, wykorzystując równania różnicowe oraz twierdzenie o rekurencji uniwersalnej, m.in. algorytmów sortowania: Quicksort, Mergesort, itp.
- Rozumie wpływ kosztu na praktyczną przydatność algorytmu oraz różnicę między kosztem obliczeniowym a pamięciowym.
- Potrafi wykorzystać abstrakcyjne struktury danych (stosy, kolejki, kolejki priorytetowe, kopce, listy jedno- i dwukierunkowe, drzewa, grafy), zna podstawowe algorytmy obsługi tych struktur oraz umie zaimplementować je w omawianym na wykładzie języku programowania imperatywnego.
- Zna przykłady klasycznych zastosowań abstrakcyjnych struktur danych oraz koszty algorytmów na nich opartych.
- Zna i potrafi wykorzystać w praktyce techniki programistyczne takie jak rekurencja, zasada "dziel i rządź", programowanie zachłanne i dynamiczne.
Literatura
- Cormen T.H., Leiserson C.E., Rivest R.L., Stein C. "Wprowadzenie do algorytmów", WNT, Warszawa, 2005.
- L. Banachowski, K. Diks, W. Rytter, "Algorytmy i struktury danych", WNT, Warszawa 2002.
- N. Wirth, "Algorytmy + struktury danych = programy".
- N. Wirth, "Wstęp do programowania systematycznego".
- D. Harel, "Rzecz o istocie informatyki".
- Podręcznik do nauki wybranego języka programowania.
Więcej informacji
Dodatkowe informacje (np. o kalendarzu rejestracji, prowadzących zajęcia, lokalizacji i terminach zajęć) mogą być dostępne w serwisie USOSweb: