Algorytmy i struktury danych

Transkrypt

Algorytmy i struktury danych
KARTA MODUŁU KSZTAŁCENIA
I. Informacje ogólne
1 Nazwa modułu kształcenia
Algorytmy i struktury danych
2 Nazwa jednostki prowadzącej moduł
Instytut Informatyki, Zakład Informatyki Stosowanej
3 Kod modułu
(wypełnia koordynator
ECTS)
4 Grupa treści kształcenia
kierunkowego
6 Poziom studiów
I stopnia
7
9 Rok studiów,
semestr
10 Liczba godzin w semestrze
II rok
III semestr– zimowy
studia stacjonarne
Wyk.
30
Liczba
6
Ćw.
punktów
Lab.
30
Sem.
5 Typ modułu
obowiązkowy
ECTS 8 Poziom przedmiotu
średnio-zaawansowany
11 Liczba godzin w tygodniu
Proj.
Wyk.
2
Ćw.
Lab.
Sem.
Proj.
2
12 Język wykładowy: polski
13 Wykładowca:
Marcin Klimek, dr inż., [email protected]
II. Informacje szczegółowe
14 Wymagania wstępne
1.
Znajomość elementów matematyki dyskretnej tj. teoria grafów itp.
2.
Wiedza z podstaw analizy matematycznej.
3.
Umiejętność programowania w zakresie podstawowym.
15 Cele przedmiotu
C1
Zapoznanie z podstawowymi strukturami danych i możliwościami ich
wykorzystania w programach komputerowych.
C2
Zdobycie wiedzy dotyczącej technik algorytmicznych i możliwości ich zastosowania
w różnych problemach optymalizacyjnych.
C3
Zaznajomienie z podstawowymi algorytmami dla ważnych zagadnień
informatycznych tj. sortowanie, wyszukiwanie danych itp.
C4
Zdobycie umiejętności zapisu procedur obliczeniowych w postaci pseudokodu,
schematów blokowych.
C5
Zrozumienie zasad oceny przydatności algorytmu w konkretnym zastosowaniu
m.in. ze względu na złożoność obliczeniową i pamięciową.
16 Efekty kształcenia w zakresie wiedzy, umiejętności i kompetencji społecznych
odniesienie do celów
przedmiotu
nr
student, który zaliczył przedmiot, potrafi:
EK01
implementować wydajne algorytmy, stosować odpowiednie
techniki algorytmiczne dla praktycznych problemów
obliczeniowych
oceniać złożoność obliczeniową zastosowanych procedur
obliczeniowych
wybierać wydajne struktury danych przy konstruowaniu
programów komputerowych
zapisywać rozwiązania, algorytmy w postaci pseudokodu
i schematów blokowych
identyfikować trudne zagadnienia obliczeniowe, w których
uzasadnione jest wykorzystanie rozwiązań przybliżonych
EK02
EK03
EK04
EK05
C2,C3
C5
C1
C4
C5
17 Treści programowe
forma zajęć – wykłady
W1
W2
W3
W4
W5
W6
W7
W8
Wprowadzenie do algorytmiki.
Definicje algorytmu. Cechy
algorytmu. Sposoby zapisu
algorytmów. Liczby pseudolosowe.
Złożoność obliczeniowa. Problemy
NP-trudne i NP-zupełne.
Metody tworzenia algorytmów: dziel
i zwyciężaj, metoda zachłanna,
programowanie dynamiczne,
rekurencja, heurystyki itd.
Przykładowe problemy
optymalizacyjne i wybrane procedury
ich rozwiązywania (problem
plecakowy, wydawania reszty,
komiwojażera, wieża Hanoi itp.).
Algorytmy sortowania (szybkie, przez
wstawianie, wybieranie, bąbelkowe,
pozycyjne, kopcowe)
Analiza złożoności wybranych
algorytmów (np. sortowania).
Typy danych: tablice, stosy, kolejki,
listy jedno- i dwukierunkowe.
Podstawowe operacje na
Struktury danych w C#. Efektywne
wyszukiwanie (binarne), haszowanie.
Słowniki.
liczba
godzin S
liczba
godzin NS
odniesienie do efektów
kształcenia dla
przedmiotu
2
EK04
2
EK02, EK05
4
EK01
4
EK01,EK05
4
EK01
2
EK02,EK05
4
EK03
2
EK03
W9
W10
Grafy. Cykl Eulera, Hamiltona.
Algorytm Dijkstry.
Drzewa. BST, AVL, B-drzewa. Kopiec.
Podstawowe operacje na drzewach.
suma godzin
forma zajęć – laboratoria
L1
L2
L3
L4
L5
L6
L7
Implementacja w C# prostych
algorytmów np. znajdowanie liczb
pierwszych, szukanie minimum
funkcji, operacje na macierzach itp.
Kodowanie w C# podstawowych
operacji na listach, tablicach tj.
wyszukiwanie, dodawanie, usuwanie
elementów.
Konstruowanie algorytmów
rekurencyjnych i iteracyjnych
(wyszukiwanie binarne, obliczanie
silni, ciąg Fibonacciego, wieża Hanoi).
Budowa w C# algorytmów
zachłannych i siłowych dla
przykładowych problemów tj.
problem wydawania reszty,
plecakowy, komiwojażera itp.
Budowa klasycznych algorytmów
sortowania : bąbelkowy, przez
wstawianie, wybieranie, szybkie
sortowanie. Analiza złożoności
obliczeniowej.
Budowa dynamicznych struktur
danych: stosów, kolejek, list i
podstawowych operacji dla tych
struktur. Korzystanie z kolekcji w C#.
Implementacja w C# algorytmów
przeszukiwania drzew, grafów,
algorytmu Dijkstry.
suma godzin
2
EK03
4
EK03
30
liczba
godzin S
liczba
godzin NS
odniesienie do efektów
kształcenia dla
przedmiotu
4
EK01, EK03
4
EK03
4
EK01
2
EK03
6
EK02, EK05
6
EK03, EK04
4
EK03, EK04
30
18 Narzędzia/metody dydaktyczne
1.
2.
3.
Podczas laboratoriów praca indywidualna studentów: pisanie programów komputerowych,
rozwiązywanie problemów algorytmicznych, analiza kodu programów komputerowych pod kątem
wydajności, optymalności.
Laboratoria w części odbywają się przy tablicy: studenci rozwiązują zagadnienia teoretyczne tj.
sortowanie liczb, obliczanie złożoności obliczeniowej.
Wykład prowadzony z wykorzystaniem projektora multimedialnego. Wykłady przygotowane
w formie prezentacji PowerPoint.
4.
Podczas wykładów prezentowane są także wybrane programy komputerowe w C# tj. generowanie
liczb pseudolosowych (Lotto), wyszukiwanie binarne, przeglądanie drzew, sortowanie szybkie,
przez wstawianie, implementacje stosu, kolejki, listy dwukierunkowej, przykłady obsługi kolekcji
Stack, Queue, Dictionary, SortedList, algorytm Dijkstry, generowanie wszystkich permutacji n liczb
itp.
19 Sposoby oceny (F – formująca, P – podsumowująca)
F1
F2
F3
F4
F5
P1
Dwa kolokwia przy komputerze: implementacja programów stosujących różne struktury danych
i techniki algorytmiczne.
Kolokwium pisemne z złożoności obliczeniowej algorytmów.
Ocena realizacji projektu zaliczeniowego do zrealizowania w domu (implementacja wybranego
algorytmu rozwiązującego problem optymalizacyjny).
Kolokwium pisemne z algorytmów sortowania
Ocena ciągła pracy indywidualnej (realizacji programów komputerowych) podczas laboratoriów.
Egzamin w formie pisemnej sprawdzający wiedzę z wykładów i laboratoriów
20 Obciążenie pracą studenta
forma aktywności
Godziny kontaktowe z nauczycielem
Przygotowanie się do laboratorium
Przygotowanie się do egzaminu
SUMA
SUMARYCZNA LICZBA PUNKTÓW
ECTS DLA PRZEDMIOTU
średnia liczba godzin na zrealizowanie aktywności
S
NS
75
40
35
150
6
21 Literatura podstawowa i uzupełniająca
Literatura podstawowa:
1.
Wirth N., Algorytmy + struktury danych = programy. WNT 2004
2.
Aho A.V., Hopcroft J.E., Ullman J.D., Algorytmy i struktury danych. Helion
2003.
3.
Wróblewski P., Algorytmy, struktury danych i techniki programowania.
Helion 2003.
4.
Lafore R., Java. Algorytmy i struktury danych. Helion 2004.
Literatura uzupełniająca:
1.
Banachowski L., Diks K., Rytter W., Algorytmy i struktury danych. WNT 1996.
2.
Cormen T. H., Leiserson C. E., Rivest R. L., Stein C., Wprowadzenie do
algorytmów. WNT Warszawa 2004.
3.
Stephens R., Algorytmy i Struktury Danych. Helion Gliwice 2000.
4.
Sedgewick R., Algorytmy w C++. Grafy. Wydawnictwo RM Sp. z o.o.,
Warszawa 2003.
22 Kryteria oceny *
nr efektu
EK01
EK02
EK03
EK04
na ocenę 4
(db)
student nie
student potrafi student umie
potrafi
implementować opracowywać
konstruować
proste
procedury
nawet prostych
algorytmy
obliczeniowe
algorytmów
dla trudnych
problemów,
ale procedury
te nie zawsze
są
odpowiednio
wydajne
student nie zna
student zna
student umie
podstawowych
zasady
obliczać
zasad dotyczących obliczania
złożoność
obliczania
złożoności ale
obliczeniową
złożoności
nie potrafi jej
dla prostych
obliczeniowej i
wyliczać nawet algorytmów
pamięciowej
dla prostych
składających
procedur
się z pętli
obliczeniowych i instrukcji
sterujących
student nie
student potrafi student umie
potrafi korzystać
używać proste
korzystać
nawet z prostych struktury
z różnych,
struktur danych
danych tj.
także
przy
tablice, listy, ale złożonych
implementacji
ich
struktur
programów
wykorzystanie
danych, ale ich
komputerowych
nie zawsze jest wykorzystanie
odpowiednie
bywa
nieoptymalne
student nie zna
student zna
student umie
zasad zapisu
zasady zapisu
zapisywać
algorytmu w
procedur w
proste
postaci
postaci
algorytmy w
pseudokodu i
pseudokodu i
postaci
schematów
schematów
pseudokodu i
blokowych
blokowych, ale schematów
ma problemy
blokowych
z prezentacją
w tej formie
nawet prostych
algorytmów
na ocenę 2 (ndst)
na ocenę 3 (dst)
na ocenę 5 (bdb)
student potrafi
implementować
wydajne algorytmy i
stosować odpowiednie
techniki algorytmiczne
dla różnych
praktycznych
zagadnień
obliczeniowych
student potrafi
oceniać złożoność
obliczeniową różnych,
nawet
skomplikowanych
procedur
obliczeniowych
student potrafi
wybierać wydajne
struktury danych przy
implementacji
programów
komputerowych
student potrafi
zapisywać nawet
skomplikowane
algorytmy w postaci
pseudokodu
i schematów
blokowych
EK05
student nie
potrafi analizować
„trudności”
problemów
optymalizacyjnych
student umie
uzasadnić fakt,
że niektóre
zagadnienia nie
mogą być
rozwiązane
dokładnie w
akceptowalnym
czasie
III.
student zna
wybrane
zagadnienia, w
których
uzasadnione
jest
stosowanie
metod
heurystycznych
student potrafi
identyfikować trudne
problemy
obliczeniowe,
w których uzasadnione
jest wykorzystanie
rozwiązań
przybliżonych
Inne przydatne informacje
23 Inne przydatne informacje o przedmiocie
1.
2.
Materiały z wykładów i laboratoriów udostępnione są dla studentów na stronie
jurand.ii.pswbp.pl/~mk
Laboratoria odbywają się w salach komputerowych 285 lub 286 z oprogramowaniem niezbędnym
do realizacji przedmiotu tj. Microsoft Visual Studio 2010.
*do decyzji koordynatora
Tabela podsumowująca.
Efekt kształcenia
EK01
EK02
EK03
EK04
EK05
Odniesienie danego
efektu do efektów
zdefiniowanych dla
całego programu
(„kierunkowych”)
K_W06, K_W07,
K_W13, K_U08,
K_U13, K_U14
K_W13, K_U08,
K_U13, K_U14
K_W06, K_W07,
K_W13, K_U08,
K_U13, K_U14
K_W06, K_W07
K_W13, K_U13,
K_U14
Cele przedmiotu
Treści programowe
Narzędzia/metody
dydaktyczne
Sposób oceny
C2, C3
W3,W4,W5,L1,L3
1, 3, 4
F1, F3, F4, F5, P1
C5
W2,W6,L5
1, 2, 3
F2, P1
C1
W7,W8,W9,W10,L1,L2,L4,L6,L7
1, 3, 4
F1, F3, F5, P1
C4
W1, L6, L7
2, 3
P1
C5
W2,W4,W6,L5
3, 4
F2, P1
Strona | 7