IB002 Algoritmy a datové struktury I

Fakulta informatiky
jaro 2020
Rozsah
2/2/1. 4 kr. (plus ukončení). Ukončení: zk.
Vyučující
prof. RNDr. Ivana Černá, CSc. (přednášející)
Mgr. Jakub Balabán (cvičící)
prof. RNDr. Jiří Barnat, Ph.D. (cvičící)
RNDr. Nikola Beneš, Ph.D. (cvičící)
Bc. Andrej Čermák (cvičící)
Bc. Matej Focko (cvičící)
Mgr. Jan Horáček (cvičící)
Mgr. Nastasia Juračková (cvičící)
Mgr. Adam Kabela, Ph.D. (cvičící)
Mgr. Jan Koniarik (cvičící)
Mgr. Martin Kurečka (cvičící)
Mgr. Alexander Macinský (cvičící)
Mgr. Kristína Miklášová (cvičící)
doc. RNDr. Petr Novotný, Ph.D. (cvičící)
doc. Mgr. Jan Obdržálek, PhD. (cvičící)
Bc. Matěj Pavlík (cvičící)
RNDr. Jaromír Plhák, Ph.D. (cvičící)
doc. RNDr. Vojtěch Řehák, Ph.D. (cvičící)
Mgr. Anna Řechtáčková (cvičící)
Bc. Michal Staník (cvičící)
Bc. Jakub Šárník (cvičící)
Mgr. Mária Švidroňová (cvičící)
Mgr. Tatiana Zbončáková (cvičící)
Mgr. Matěj Žáček (cvičící)
Mgr. Lukáš Korenčik (pomocník)
RNDr. Henrich Lauko, Ph.D. (pomocník)
Garance
prof. RNDr. Ivana Černá, CSc.
Katedra teorie programování – Fakulta informatiky
Dodavatelské pracoviště: Katedra teorie programování – Fakulta informatiky
Rozvrh
Po 17. 2. až Čt 7. 5. Čt 8:00–9:50 D1, Čt 8:00–9:50 D3
  • Rozvrh seminárních/paralelních skupin:
IB002/konzultace01: Po 17. 2. až Pá 15. 5. Po 10:00–11:50 A417, M. Focko, A417 Po 10-12, Nepřihlašuje se, není cvičení, ale dobrovolná konzultace.
IB002/konzultace02: Po 17. 2. až Pá 15. 5. Út 10:00–11:50 A417, A. Řechtáčková, A417 Ut 10-12, Nepřihlašuje se, není cvičení, ale dobrovolná konzultace.
IB002/konzultace03: Po 17. 2. až Pá 15. 5. Út 14:00–15:50 A417, A. Čermák, A417 Ut 14-16, Nepřihlašuje se, není cvičení, ale dobrovolná konzultace.
IB002/01: Po 17. 2. až Pá 15. 5. Po 10:00–11:50 A318, V. Řehák
IB002/02: Po 17. 2. až Pá 15. 5. Po 14:00–15:50 A319, V. Řehák
IB002/03: Po 17. 2. až Pá 15. 5. Po 16:00–17:50 A218, J. Obdržálek
IB002/04: Po 17. 2. až Pá 15. 5. Po 18:00–19:50 A218, N. Juračková, J. Koniarik
IB002/05: Po 17. 2. až Pá 15. 5. Út 8:00–9:50 A218, V. Řehák
IB002/06: Po 17. 2. až Pá 15. 5. Út 8:00–9:50 B411, H. Lauko, M. Žáček
IB002/07: Po 17. 2. až Pá 15. 5. Út 16:00–17:50 A320, M. Pavlík
IB002/08: Po 17. 2. až Pá 15. 5. Út 18:00–19:50 A218, M. Švidroňová
IB002/09: Po 17. 2. až Pá 15. 5. St 8:00–9:50 A218, J. Obdržálek
IB002/10: Po 17. 2. až Pá 15. 5. St 10:00–11:50 A218, J. Obdržálek
IB002/11: Po 17. 2. až Pá 15. 5. St 12:00–13:50 A320, M. Kurečka
IB002/12: Po 17. 2. až Pá 15. 5. St 12:00–13:50 A218, P. Novotný
IB002/13: Po 17. 2. až Pá 15. 5. St 14:00–15:50 A218, P. Novotný
IB002/14: Po 17. 2. až Pá 15. 5. St 18:00–19:50 A320, J. Koniarik, A. Macinský
IB002/15: Po 17. 2. až Pá 15. 5. Čt 10:00–11:50 A217, J. Barnat
IB002/16: Po 17. 2. až Čt 7. 5. Čt 14:00–15:50 A217, T. Zbončáková
IB002/17: Po 17. 2. až Pá 15. 5. Čt 16:00–17:50 A217, T. Zbončáková
IB002/18: Po 17. 2. až Čt 7. 5. Čt 16:00–17:50 A218, M. Švidroňová
IB002/19: Po 17. 2. až Pá 15. 5. Čt 18:00–19:50 A217, A. Kabela
IB002/20: Po 17. 2. až Pá 15. 5. Pá 10:00–11:50 A218, J. Horáček
IB002/21: Po 17. 2. až Pá 15. 5. Pá 12:00–13:50 A218, J. Plhák
Předpoklady
IB001 Úvod do prog. skrze C || IB111 Základy programování || IB999 Vstupní test z programování
Předpokládá se, že posluchači mají znalosti v rozsahu předmětů IB111 Úvod do programování a IB000 Matematické základy informatiky. Studenti by měli být schopni používat základní programátorské konstrukce (např. podmínky, cykly, funkce, základní datové typy) v jazyce Python, znát principy rekurze a několik základních algoritmů. Dále se předpokládá znalost základních matematických pojmů (v rozsahu předmětu IB000); schopnost porozumět logické struktuře matematické věty a matematického důkazu, speciálně matematické indukci; ovládat diskrétní matematické struktury jako konečné množiny, relace, funkce a grafy, včetně jejich používání v informatice
Omezení zápisu do předmětu
Předmět je nabízen i studentům mimo mateřské obory.
Mateřské obory/plány
předmět má 58 mateřských oborů, zobrazit
Cíle předmětu
Kurs probírá základní techniky analýzy algoritmů, datové struktury a operace nad nimi. Cílem kurzu je získat dovednosti v používání základních datových struktur a algoritmů a zároveň schopnost navrhovat, analyzovat a dokazovat správnost algoritmů za použití probíraných technik analýzy a návrhu algoritmů. Současně studenti získavají dovednosti v implementaci navržených algoritmů v konkrétním programovacím jazyce (Python).
Výstupy z učení
Student bude po absolvování předmětu schopen:
- aktivně používat, modifikovat a analyzovat základní algoritmy pro řazení a pro průzkum grafů,
- aktivně používat základní techniky (rozděl a panuj, rekurze) návrhu algoritmů při konstrukci jednoduchých algoritmů,
- aktivně používat a modifikovat základní statické a dynamické datové struktury,
- pracovat s pojmy časové složitosti a korektnosti algoritmů,
- analyzovat časovou složitost a dokazovat korektnost jednoduchých iterativních a rekurzivních algoritmů,
- implementovat algoritmy ve vyučovaném programovacím jazyce (Python).
Osnova
  • Základy analýzy algoritmů: Korektnost algoritmu, vstupní a výstupní podmínky, parciální korektnost, konvergence, verifikace. Délka výpočtu, složitost algoritmu, složitost problému. Asymptotická analýza časové a prostorové složitosti, růst funkcí.
  • Základní techniky návrhu algoritmů, metoda rozděl a panuj, rekurzivní algoritmy.
  • Fundamentální datové struktury: Seznamy, fronty. Representace množin, hašovací tabulky. Binární haldy. Binární vyhledávací stromy, vyvážené stromy (B stromy, červeno-černé stromy).
  • Řadicí algoritmy: Řazení rozdělováním, slučováním, haldou, dolní odhad složitosti.
  • Základní grafové algoritmy: Representace grafů. Procházení grafu do hloubky, topologické uspořádání, silně souvislé komponenty. Procházení grafu do šířky, bipartitní grafy. Nejkratší cesty, Bellmanův - Fordův algoritmus a Dijkstrův algoritmus.
Literatura
    povinná literatura
  • CORMEN, Thomas H. Introduction to algorithms. 3rd ed. Cambridge, Mass.: MIT Press, 2009, xix, 1292. ISBN 9780262533058. URL info
    doporučená literatura
  • SKIENA, Steven S. The algorithm design manual. New York: Springer, 1998, xvi, 486. ISBN 0387948600. info
Výukové metody
Kurs probíhá formou přednášek a cvičení k přednáškám.
Metody hodnocení
Závěrečná písemná zkouška na konci semestru. Podmínkou účasti na závěrečné zkoušce je splnění průběžného hodnocení z cvičení, které se skládá z pravidelných písemných testů. Podrobnosti jsou zveřejněny v Interaktivní osnově předmětu https://is.muni.cz/auth/el/1433/jaro2020/IB002/index.qwarp
Navazující předměty
Informace učitele
https://is.muni.cz/auth/el/1433/jaro2018/IB002/index.qwarp
Další komentáře
Studijní materiály
Předmět je vyučován každoročně.
Nachází se v prerekvizitách jiných předmětů
Předmět je zařazen také v obdobích jaro 2003, jaro 2004, jaro 2005, jaro 2006, jaro 2007, jaro 2008, jaro 2009, jaro 2010, jaro 2011, jaro 2012, jaro 2013, jaro 2014, jaro 2015, jaro 2016, jaro 2017, jaro 2018, jaro 2019, jaro 2021, jaro 2022, jaro 2023, jaro 2024, jaro 2025.