Algorytmy i struktury danych

advertisement
WYDZIAŁ FIZYKI UwB
KOD USOS:
Karta przedmiotu
Student:
1.
2.
3.
4.
5.
6.
Przedmiot
moduł
ECTS
Algorytmy i struktury danych (C++)
NI
5
Formy zajęć
wykład
WYMIAR
15
konwersatorium
seminarium
laboratorium
razem
semestr
-
45
60
5
Potrafi przedstawiać algorytmy w postaci: listy kroków, schematów blokowych, schematów zwartych NS.
Potrafi określić złożoność obliczeniową prostych programów.
Potrafi korzystać z prostych narzędzi (np.: JavaBlock) wspomagających projektowanie algorytmów.
Potrafi wykorzystywać rekurencję, rozumiejąc jej mocne i słabe strony.
Potrafi programować i wykorzystywać klasy (w C++) implementujące interfejsy popularnych struktur danych takich jak: tablice, stosy, kolejki, listy, drzewa, grafy.
Umie projektować i wykorzystywać różne algorytmy sortowania.
Forma kształcenia i sposób
weryfikacji efektów kształcenia
Efekty kształcenia
kierunek studiów: FIZYKA
specjalność: FIZYKA
0900
Wykład
Laboratorium
Wykład teoretyczny:

prezentacja multimedialna

wizualizacja działania algorytmu przy pomocy apletów.
Realizacja omawianego (teoretycznie) zagadnienia w JavaBlock –
schematy, struktura obiektowa i demonstracja działania
programów. Prezentowane schematy stanowią podstawę do
realizacji, na zajęciach laboratoryjnych, odpowiadających im
programów w C++.
Studenci, posługując się zintegrowanym środowiskiem programistycznym, piszą
programy w C++ odwołujące się do zagadnień omawianych na wykładzie. Pracując
pod nadzorem prowadzącego korzystają z jego doradztwa. Realizacji trudniejszych
zagadnień towarzyszy dyskusja przy tablicy.
Dodatkowo na tablicy studenci: opisują wybrane algorytmy w postaci listy kroków,
schematów blokowych, schematów zwartych NS, obliczają złożoność obliczeniową.
Tworząc schematy blokowe posługują się również programem JavaBlock
Po zakończeniu kształcenia z przedmiotu Algorytmy i struktury
Zaliczenie laboratorium odbywa się na podstawie: obecności, aktywności, prac
danych odbywa się egzamin pisemny, który weryfikuje uzyskaną
domowych oraz zaliczenia przy komputerze obejmującego wybrane zagadnienia z
wiedzę. Na ocenę końcową składają się wynik zaliczenia
materiału laboratoryjnego.
laboratorium i wynik egzaminu pisemnego.
FS1
3ASD
TREŚCI KSZTAŁCENIA
Wykład
Laboratorium
Algorytm - sposoby zapisu:
1. Czym jest algorytm?
2. Algorytmy w postaci listy kroków.
3. Pseudokod.
4. Schematy blokowe.
5. Schematy zwarte NS (Nassi-Shneidermana)
Ćwiczenia z wykorzystaniem tablicy polegające na zapisie prostych algorytmów w postaci:

listy kroków,

schematu blokowego,

schematu zwartego NS.
Struktury danych i algorytmy:
1. przegląd struktur danych.
2. Szybkie prototypowanie - JavaBlock.
Ćwiczenia komputerowe z wykorzystaniem JavaBlock.
2 tydzień
Tablice. Złożoność obliczeniowa:
1. Tablice w Javie.
2. Tablica uporządkowana w Javie.
3. Wyszukiwanie binarne.
4. Czasowa złożoność obliczeniowa – przypadki: pesymistyczny, optymalny i
optymistyczny.
5. Pamięciowa złożoność obliczeniowa.
Praktyczna realizacja zagadnień omawianych na wykładzie - programowanie w C++ .
Wyznaczanie złożoności obliczeniowej prostych algorytmów.
3 tydzień
Proste algorytmy sortowania:
1. Sortowanie bąbelkowe.
2. Sortowanie przez wybór.
3. Sortowanie przez wstawienie.
4. Flaga polska.
5. Flaga francuska.
6. Sortowanie obiektów.
Praktyczna realizacja zagadnień omawianych na wykładzie - programowanie w C++ .
4 tydzień
Stosy i kolejki:
1. Stos.
2. Klejka.
3. Kolejka cykliczna.
4. Kolejki priorytetowe.
5. Analiza wyrażeń arytmetycznych: sprawdzanie nawiasów, odwrotna notacja polska.
Praktyczna realizacja zagadnień omawianych na wykładzie - programowanie w C++ .
5 tydzień
Listy powiązane:
1. Połączenia.
2. Prosta lista powiązana.
3. Wyszukiwanie i usuwanie określonych elementów.
4. Listy dwustronne.
5. Wydajność list powiązanych.
6. Abstrakcyjne typy danych.
7. Listy uporządkowane.
8. Sortowanie przez wstawienie do listy uporządkowanej.
9. Listy dwukierunkowe.
Praktyczna realizacja zagadnień omawianych na wykładzie - programowanie w C++ .
6 tydzień
Rekurencja:
1. Mocne i słabe strony rekurencji.
2. Anagramy.
3. Rekurencyjne wyszukiwanie binarne.
4. Wieże Hanoi.
5. Sortowanie przez scalanie.
6. Eliminacja rekurencji.
Praktyczna realizacja zagadnień omawianych na wykładzie - programowanie w C++ .
7 tydzień
1 tydzień
Zaawansowane algorytmy sortowania:
1. Sortowanie Shella.
2. Podział danych.
3. Quicksort.
Praktyczna realizacja zagadnień omawianych na wykładzie - programowanie w C++ .
8 tydzień
Drzewa binarne:
1. Terminologia związana z drzewami.
2. Działanie binarnych drzew wyszukiwań.
3. Wyszukiwanie węzła.
4. Wstawianie węzła.
5. Trawersowanie drzewa.
6. Odnajdywanie wartości minimalnych i maksymalnych.
7. Usuwanie węzła.
8. Efektywność operacji na drzewach binarnych.
9. Przedstawianie drzew w formie tablicy.
10. Kod Huffmana.
Praktyczna realizacja zagadnień omawianych na wykładzie - programowanie w C++ .
9 tydzień
Sterty:
1.
2.
3.
4.
Praktyczna realizacja zagadnień omawianych na wykładzie - programowanie w C++ .
10 tydzień
Zrównoważone drzewa binarne:
1. Drzewa AVL.
2. Drzewa czerwono – czarne.
Praktyczna realizacja zagadnień omawianych na wykładzie - programowanie w C++ .
11 tydzień
Drzewa niebinarne:
1. Drzewa 2-3.
2. Drzewa 2-3-4.
3. Drzewa 2-3-4 a drzewa czerwono-czarne.
Praktyczna realizacja zagadnień omawianych na wykładzie - programowanie w C++ .
12tydzień
Tablice mieszające (hash table):
1. Algorytmy mieszające – wprowadzenie.
2. Adresowanie otwarte.
3. Łączenie niezależne.
4. Funkcje mieszające.
5. Wydajność.
6. Mieszanie i pamięć zewnętrzna.
Praktyczna realizacja zagadnień omawianych na wykładzie - programowanie w C++ .
13 tydzień
Grafy:
1.
2.
3.
4.
5.
6.
Praktyczna realizacja zagadnień omawianych na wykładzie - programowanie w C++ .
14 tydzień
Zaliczenie
15 tydzień
Wprowadzenie.
Przykład implementacji sterty.
Sterta oparta na drzewie.
Sortowanie stertowe.
Wprowadzenie.
Operacje wyszukiwania.
Drzewo o najmniejszej liczbie połączeń.
Grafy skierowane i sortowanie topologiczne.
Połączenia w grafach skierowanych.
Grafy ważone.
Typy kontenerów biblioteki STL (C++).
LITERATURA
DODATKOWA
ZALECANA
LITERATURA
LITERATURA
Robert Lafore – Sams Teach Yourself Data Structures and Algorithms in 24 Hours, Sams, Indianapolis 1999.
Stephen Prata – Szkoła Programowania. Język C++, Wdawnictwo Helion, Gliwice 2006.
Paweł Kotowski – Algorytmy + Struktury Danych = Abstrakcyjne Typy Danych, Wydawnictwo BTC, Warszawa 2006.
Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein – Wprowadzenie do algorytmów, Wydawnictwo Naukowe PWN, Warszawa 2012.
Ewa Krok, Zbigniew Stempnakowski – Podstawy algorytmów. Schematy blokowe, Wydawnictwo Difin, Warszawa 2008.
Anna Kwiatkowska, Edyta Łukasik – Schematy zwarte NS przykłady i zadania, Wydawnictwo MIKOM, Warszawa 2004.
AUTORZY KARTY PRZEDMIOTU
Cezary J. Walczyk
PODPIS
Download