Šimon Mandlík
Senior Researcher v AVAST (nově Gen Digital)
Připravujeme
Zapoj se do kurzu a odnes si základní algoritmický toolbox kvalitního programátora. Obsah kurzu je navíc vysoce nadčasový, takže se ti bude dlouhodobě hodit ve stále se rozvíjejícím světě informačních technologií.
kteří se zaměřují na design, konstrukci a údržbu systémů a chtějí pochopit a naučit se použít existující implementace různých nástrojů, knihoven a frameworků.
kteří chtějí psát rychlé, efektivní a stručné programy pro zpracování dat, a zároveň potřebují umět vyřešit komplexní algoritmické problémy.
kteří se zabývají přímým programováním produktu, potřebují umět odhadnout efektivitu algoritmu i jeho složitost a zároveň získat nezbytný skillset k řešení obtížnějších problémů.
kteří chtějí získat praktické znalosti nad rámec studia nebo se o problematiku aktivně zajímají a aspirují na pozici programátora, ve které jsou vyžadovány znalosti efektivních algoritmů.
Pronikneš do práce s různými datovými strukturami a zjistíš, jak umí zefektivnit počítačové programy. Zároveň se naučíš implementovat klasické algoritmy a dokážeš snadno vyhodnotit jejich složitost. Naučíš se ladit svoje implementace jak z hlediska korektnosti, tak z hlediska efektivity. Seznámíš se například s řadícími algoritmy, hladovými algoritmy, grafy, dynamickým programováním anebo hashovacími technikami.
Osvoj si nezbytné znalosti, které ti pomohou nastartovat tvoji programátorskou kariéru.
Získáš základy algoritmizace a její nejdůležitější paradigmata. Čeká tě jak analýza asymptotické složitosti, tak rekurzivní algoritmy, binární vyhledávání a třídící algoritmy. Pochopíš, jak fungují základní datové struktury a naučíš se principy efektivní manipulace s daty.
Získáš užitečné znalosti o stromových strukturách a grafech, jejich taxonomii, vlastnostech a jejich praktickém využití. Dozvíš se, jak najít nejkratší cestu v grafu, anebo jak fungují binární haldy.
Praktické ukázky tě naučí implementovat řešení s využitím dynamického programování pomocí top-down a bottom-up přístupu. Dozvíš se o možnostech optimalizování vyhledávání, jak se orientovat v acyklických grafech a další užitečné algoritmické přístupy, které se vyplatí znát.
Úkol: Zřízení účtu v odevzdávacím systému a zkušební úloha
Zjistíš, co tě v kurzu čeká a proč je dobré se tématu kurzu věnovat. Získáš přístup k učebním materiálům a založíš si účet v odevzdávacím systému.
Úkol:
1. Procvičení ad-hoc řešení praktického problému.
2. Úloha procvičující manipulaci s jednorozměrným polem.
Zjistíš, co jsou to asymptotické časové a paměťové složitosti, dokážeš se orientovat v Big-O notaci a snadno odhadneš složitost algoritmu.
Úkol: Procvičení binárního vyhledávání na praktické úloze.
Seznámíš se s binárním vyhledáváním, jeho výhodami a detaily implementace. Cizí ti už nebudou ani pojmy amortizované a průměrné složitosti.
Úkol: Procvičení specifik řadících algoritmů na praktické úloze.
Už víš, jak je definován řadící problem a zároveň znáš jednoduché řadící algoritmy a zvládneš je naimplementovat. Dokážeš specifické případy řešit za pomocí rychlejších řadících algoritmů.
Už víš, co je to rekurzivní paradigma “rozděl a panuj”. Dokážeš určit, jak mají efektivně fungovat třídicí algoritmy Merge sort a Quick sort a zvládneš je naimplementovat.
Úkol: Procvičení konceptů fronty a zásobníku na praktické úloze.
Seznámíš se s abstraktní datovou strukturou a jejím rozhraním, poznáš spojové seznamy a dokážeš využít jejich výhody oproti klasickým polím. Budeš se orientovat v základních datových strukturách, frontě a zásobníku a budeš vědět, jaké operace nabízí.
Úkol: Procvičení stromových struktur na praktické úloze.
Teď už víš, co to znamená strom a jaké jsou jeho varianty a vlastnosti. Dokážeš ho použít v problémech z praxe a znáš techniky, které ti pomohou s jeho implementací.
Už víš, jaké jsou nejznámější vyhledávací stromy a jejich vlastnosti. Chápeš využití vyhledávacích stromů v praxi a proč je důležité, aby byl vyhledávací strom vyvážený.
Úkol: Procvičení prioritní fronty na praktické úloze.
Víš, jak funguje binární halda, jak ji implementovat a znáš její časovou a paměťovou složitost. Znáš vylepšené verze hald a procvičíš si prioritní fronty na praktické úloze.
Chápeš pojem grafu, jeho definici i využití v reálném světě. Dokážeš rozlišit různé typy grafů, znáš názvosloví a víš, jak efektivně graf uložit do paměti.
Úkol: Procvičení průchodů grafu na praktické úloze.
Už znáš dva různé přístupy k průchodu grafu i jejich specifika. Dokážeš implementovat prohledávání do hloubky i do šířky a dobře víš, k čemu jsou tyto algoritmy vhodné.
Úkol: Procvičení nalezení minimální kostry na praktické úloze.
Rozšíříš své povědomí o „hladových“ algoritmech a víš, jaké jsou jejich vlastnosti. Zároveň dokážeš najít minimální kostru grafu a tuto znalost využít i v praxi.
Úkol: Procvičení nalezení nejkratší cesty v grafu na praktické úloze.
Máš představu o tom, co obnáší úloha nejkratší cesty v grafu, znáš nejdůležitější algoritmy s tím spojené i jejich složitosti a předpoklady. Vše pak dokážeš implementovat do reálného příkladu.
Úkol: Procvičení dynamického programování na praktické úloze.
Seznámil*a ses s dynamickým programováním a víš, kde ti pomůže, a znáš dva přístupy k implementaci a jejich (ne)výhody.
Úkol: Procvičení nalezení topologického uspořádání na praktické úloze.
Pronikneš do speciálních tříd acyklicky orientovaných grafů, vyznáš se v jejich typologickém uspořádání a v tom, jak jej vytvořit.
Znáš komplexní případy, kdy se používá dynamické programování.
Poznáš, jak se liší asocitativní a adresní vyhledávací struktury. Zároveň chápeš, jaké jsou důležité vlastnosti hashovací funkce a jakou to hraje roli v implementaci slovníku a dalších struktur. Poradíš si s dalšími praktickými aspekty při implementaci slovníku a vyřešíš případné kolize i rozšiřování kapacity.
Dozvíš se, jak používat hashovací techniky i mimo nejrozšířenější slovníky a budeš chápat, jak pravděpodobnostní datové struktury šetří paměť i čas s ohledem na přesnost výsledků.
Úkol: Procvičení bruteforce řešení a backtrackingu na praktické úloze.
Víš, že existují úlohy, které nemají rychlé řešení. Zároveň budeš znát základní představitele třídy NP-úplných úloh, budeš mít základní povědomí o převodech úloh a také se dozvíš o přístupech k praktickým řešením NP-úplných úloh.
Budeš vědět, co očekávat od praktické části programovacího interview, které často zahrnuje live-coding a řešení algoritmických problémů. Zjistíš, kde se dají najít další informace, abys dokázal*a výběrovým řízením úspěšně projít.
Vyplň registrační formulář a připoj se k nám!
Náš tým konzultantů z robot_dreams Czech se s tebou spojí co nejdříve,
abys získal všechny potřebné detaily o obsahu kurzu a jeho ceně.