Efektivní programování 2
Kód | Zakončení | Kredity | Rozsah | Jazyk výuky |
---|---|---|---|---|
BI-EP2 | KZ | 4 | 2P+2C | česky |
- Přednášející:
- Martin Kačer (gar.)
- Cvičící:
- Martin Kačer (gar.)
- Předmět zajišťuje:
- katedra teoretické informatiky
- Anotace:
-
Předmět navazuje na Efektivní programování 1 (ale jeho předchozí absolvování NENÍ NUTNÉ).
Studenti si prakticky ověří implementaci algoritmů a datových struktur na konkrétních slovně zadaných příkladech. Důraz je kladen nejen na návrh řešení, ale i na jeho korektní a efektivní implementaci, včetně ošetření všech okrajových podmínek. Studenti se naučí přemýšlet o různých variantách řešení, budou se snažit vybírat mezi nimi tu nejvýhodnější a vyhýbat se chybám při implementaci.
- Požadavky:
-
BI-AG1, BI-EP1 (doporučeno), BI-AG2 (doporučeno absolvovat souběžně)
- Osnova přednášek:
-
1. Mřížky a algoritmy spojené s mřížkami. Čtvercové matice, trojúhelníkové a šestiúhelníkové mřížky, jejich rozšíření do vyšších dimensí.
2. Řetězce, práce s řetězci, možnosti v Javě. Přesné a přibližné vyhledávání v řetězcích, protisměrné vyhledávání.
3. Základní grafové algoritmy: procházení grafů, nejkratší cesty.
4. Stavový prostor, metody ořezávání stavového prostoru, prohledávání stavového prostoru, prohledávání s návratem (backtracking).
5. Pokročilejší grafové algoritmy: toky v sítích, párování.
6. Operační složitost, pokročilé techniky jejího určování v průměrném případě. Kumulativní složitost.
7. Geometrie a výpočetní geometrie. Výpočty úhlů a konvexních obalů mnohoúhelníků, hledání nejkratších cest v prostoru s geometrickými objekty.
- Osnova cvičení:
-
1. Mřížky, matice, trojúhelníkové a šestiúhelníkové mřížky.
2. Řetězce, práce s řetězci, přesné a přibližné vyhledávání.
3. Základní grafové algoritmy: procházení grafů, nejkratší cesty.
4. Stavový prostor, metody prohledávání a ořezávání.
5. Pokročilejší grafové algoritmy: toky v sítích, párování.
6. Operační složitost, pokročilé techniky jejího určování.
7. Geometrie a výpočetní geometrie.
- Cíle studia:
-
V rámci předmětu se na praktických příkladech ukazuje, že kdokoli a
v jakémkoli programu může udělat chybu. Účelem je osvojit si techniky,
které pravděpodobnost chyb snižují, zejména naučit se navrhnout takové
řešení, které bude dostatečně efektivní, ale současně co nejméně náročné
na implementaci. Pokud chyby vzniknou, procvičují se dále způsoby ladění
programu.
- Studijní materiály:
-
Steven S. Skiena, Miguel Revilla: Programming Challenges.
Jon Bentley: Programming Pearls.
- Poznámka:
-
určeno pro pokročilé studenty
Informace o předmětu a výukové materiály naleznete na https://courses.fit.cvut.cz/BI-EP2/
- Další informace:
- https://courses.fit.cvut.cz/BI-EP2/
- Rozvrh na zimní semestr 2020/2021:
- Rozvrh není připraven
- Rozvrh na letní semestr 2020/2021:
-
06:00–08:0008:00–10:0010:00–12:0012:00–14:0014:00–16:0016:00–18:0018:00–20:0020:00–22:0022:00–24:00
Po Út St Čt Pá - Předmět je součástí následujících studijních plánů:
-
- Bc. program Informatika, studijní plán pro fázi studia bez oboru, verze 2015 až 2020 (volitelný předmět)
- Bc. obor Bezpečnost a informační technologie, verze 2015 až 2020 (volitelný předmět)
- Bc. obor Teoretická informatika, verze 2015 až 2020 (volitelný předmět)
- Bc.obor Počítačové inženýrství, verze 2015 až 2020 (volitelný předmět)
- Bakalářský obor Informační systémy a management, verze 2015 až 2020 (volitelný předmět)
- Bakalářský obor Znalostní inženýrství, verze 2015, 2016 a 2017 (volitelný předmět)
- Bakalářský obor WSI, zaměření Softwarové inženýrství, verze 2015 až 2020 (volitelný předmět)
- Bakalářský obor WSI, zaměření Webové inženýrství, verze 2015 až 2020 (volitelný předmět)
- Bakalářský obor WSI, zaměření Počítačová grafika, verze 2015 až 2020 (volitelný předmět)
- Bakalářský obor Znalostní inženýrství, verze 2018 až 2020 (volitelný předmět)