should_authorize_via_email
email.input_code tel.input_code
 
email.code_actual_for tel.code_actual_for
apply_exit_text
session_ended
to_homepage
Šimon Mandlík: Algoritmy a datové struktury jako základní stavební kameny umělé inteligence a kyberbezpečnosti

Šimon Mandlík: Algoritmy a datové struktury jako základní stavební kameny umělé inteligence a kyberbezpečnosti

Rozhovor s odborníkem a lektorem v oblasti algoritmů a datových struktur

Algoritmy a datové struktury jsou dvěma z klíčových pilířů, na kterých stojí moderní informační technologie. Tyto koncepty jsou nesmírně důležité v dnešním rychle se vyvíjejícím světě datové analýzy, umělé inteligence a kyberbezpečnosti. Abychom měli možnost nahlédnout do této komplexní disciplíny, vyzpovídali jsme Ing. Šimona Mandlíka, vědce a lektora našeho kurzu, jehož odborné zaměření spočívá v algoritmech a datových strukturách.

Šimon Mandlík

Než se do ale našeho rozhovoru ponoříme , představíme našeho lektora Šimona Mandlíka. Je absolventem programů “Computer Science” a “Artificial Intelligence” na ČVUT FEL, kde nyní pokračuje v doktorském studiu se zaměřením na strojové učení a kyberbezpečnost. Má za sebou 8 let praxe v IT sektoru – začínal jako programátor a postupně se specializoval na řešení fundamentálních problémů ve firmách. V rámci své kariéry pracoval pro Centrum strojového vnímání, kde se zabýval implementací a realizací systému FERDA pro sledování zvířat ve videosekvencích. 

Algoritmy a datové struktury jsou zásadní nejen pro jeho doktorandskou práci, ale také pro moderní průmyslové aplikace, které čelí neustále rostoucím požadavkům na rychlou a efektivní manipulaci s daty. Jde o základní stavební kameny pro strojové učení, kyberbezpečnost a mnoho dalších oblastí, které jsou v současné době v centru pozornosti.

Algoritmy a datové struktury

Algoritmy a datové struktury jsou v srdci všech vyspělých technologických aplikací, od analýzy velkých datových souborů po implementaci pokročilých systémů strojového učení. Tyto koncepty jsou nejen klíčové pro efektivní manipulaci s daty, ale také zásadní pro řešení komplexních problémů v rámci kyberbezpečnosti.

Algoritmy jsou vlastně sériemi instrukcí, které počítači říkají, co má dělat, aby dokončil konkrétní úkol. Můžeme je vnímat jako recepty, které přesně určují, jakým způsobem se dosáhne výsledku, ať už jde o vyhledávání informací na webu nebo filtraci spamových e-mailů. Existuje nespočet druhů algoritmů – od jednoduchých, které řeší běžné úkoly, až po komplexní, které umožňují fungování například blockchainových technologií nebo strojového učení.

Datové struktury, na druhou stranu, jsou organizované způsoby ukládání dat v počítači. Pomáhají nám efektivně manipulovat s velkým množstvím informací a mohou mít různé formy, jako jsou pole, seznamy, stromy nebo hashovací tabulky. Správná volba datové struktury je klíčová pro rychlou a efektivní práci s daty, což je zásadní v aplikacích od databází až po grafické enginy.

Algoritmy i datové struktury jsou základními stavebními kameny pro vývoj softwarových a hardwarových řešení. Důležitost těchto konceptů nelze přehlédnout, pokud chceme, aby byly naše technologie rychlé, bezpečné a efektivní. Proto jsme vyvinuli kurz, který pojí jak obor algoritmů, tak datových struktur. Podíváme se na teoretické koncepty, ale i na praktická použití a demonstrace. Šimon Mandlík je skvělým příkladem odborníka, který spojuje právě teoretické znalosti s praktickými zkušenostmi. Jeho dovednosti a zkušenosti jsou vynikajícím zdrojem informací pro všechny, kteří se zajímají o algoritmy, datové struktury a strojové učení.

Takže, zpět k tématu interview – jaké je místo algoritmů a datových struktur v digitálním světě, jak s nimi efektivně pracovat a jaké jsou oblíbené algoritmy a datové struktury našeho expertního lektora? To vše a ještě mnohem více se dozvíte v našem rozhovoru s lektorem Šimonem Mandlíkem.

Jak bys charakterizoval důležitost algoritmického myšlení v každodenním programování?

To poměrně záleží na tom, jakému typu programování se věnuješ. Data scientist, který se každý den probírá terabajty dat a potřebuje je efektivně zpracovávat, si s algoritmizací užije přece jenom více než vývojář webových front-endů. Obecně bychom ale mohli říct, že algoritmicky a analyticky se musí naučit myslet každý, kdo to s programováním myslí vážně. A v našem kurzu to určitě velmi dobře potrénujeme.

Můžete nám dát konkrétní příklad, kdy efektivní algoritmus změnil proces, který by trval dny, na proces, který trval jen několik minut?

V historii computer science je celá řada takových příkladů, jeden z nejznámějších je vynález rychlé Fourierovy transformace (Fast Fourier Transform). Fourierova transformace se používá například pro zpracování signálu, a tak každý mobilní telefon v sobě má nějakou implementaci rychlé Fourierovy transformace uloženou. To slovíčko „rychlá“ nepoužíváme pro nic za nic, ona je vskutku rychlejší než algoritmy známé předtím (odborně říkáme, že patří do jiné třídy složitosti). Jinými slovy, nějaké větší vstupy, které bychom s předchozími algoritmy počítali klidně několik dní, i ten náš mobil zvládne za vteřinu.

V kurzu také uvidíme hned několik příkladů, kde by naivní algoritmus běžel delší dobu, než existuje vesmír. Ukážeme si mnohem efektivnější řešení.

Jak byste popsal „toolbox“ užitečných algoritmů a datových struktur?

Absolventi kurzu „Algoritmy a datové struktury“ si odnesou pomyslnou „knihovničku“ existujících konkrétních algoritmů a datových struktur. Některé z nich si v rámci domácích úloh sami naimplementují, o některých budou mít základní povědomí. Jakmile pak narazí na nějaký praktický algoritmický problém, hned budou vědět, jaké řešení je vhodné a jaké není.

Jaké jsou nejčastější mýty nebo omyly, které mají lidé o algoritmech a datových strukturách?

Někteří lidé bagatelizují důležitost algoritmů a datových struktur a tvrdí, že v dnešní době může programátor fungovat i bez jejich znalostí — „vždyť přece na všechno existují knihovny a frameworky, které lze pouze přepoužít“.

To je pravda, v dnešní době bez knihoven a frameworků neprogramuje opravdu skoro nikdo, ale je velmi důležité nepoužívat tyto nástroje jako magickou černou skříňku, blackbox, která vyřeší všechny moje problémy. Zejména pokud se bavíme o podobné úrovni abstrakce, a ne například o nějakých low-level záležitostech. Dobrý programátor používá cizí kód často, ale pouze jako zkratku, aby si ušetřil práci. Pořád tuší, co se děje „pod pokličkou“ a jaká jsou realistická očekávání od dané knihovny či frameworku. Když dojde na lámání chleba, knihovna není dostatečně dobrá nebo nějak jinak nevyhovuje, je programátor schopen vyvinout vlastní řešení nebo vylepšit to existující. Může se stát, ve startupech obzvlášť, že vhodná knihovna či framework dokonce vůbec neexistuje. Ne nadarmo je v těch největší a nejprestižnější firmách nějaká forma testu algoritmizačních schopností součástí přijímacího procesu.

Jaký je váš oblíbený algoritmus a datová struktura a proč?

Mám spoustu oblíbených technik a konceptů z tohoto oboru, ale moje nejoblíbenější bude asi datová struktura „union-find“. Ta se dá použít v situaci, kdy chceme nějaké prvky postupně spojovat do stále větších skupin a během tohoto procesu mít stále přehled o tom, které prvky patří k sobě. Řešení je velmi elegantní a samotná implementace je doslova na několik řádků. Asi vás nepřekvapí, že o této datové struktuře bude v kurzu také řeč.

Co byste si přál, aby si absolventi kurzu odnesli jako hlavní poznatek či dovednost?

Přál bych si, aby si odnesli právě ten toolbox, o kterém jsme před chvílí mluvili, a aby s ním uměli efektivně pracovat. To znamená, že když se dostanou k nějakém zapeklitému algoritmickému problému, měli by umět rozpoznat situace, kdy se jedná o nějaký standardní problém pouze převlečený v jiném kabátě a takový problém rychle vyřešit a řešení realizovat. To budeme hodně trénovat v domácích úkolech. Pokud bude potřeba pro ten problém speciálnější, komplexnější řešení, rád bych, aby věděli, co přesně napsat do Googlu. A ze všeho nejvíc bych si přál, aby věděli, co přesně z algoritmického hlediska počítačové programy zpomaluje a vyvinuli si intuici kde, jak a co se dá zefektivnit.

Kurz Algoritmy a datové struktury

Zapoj se do našeho digitálního ekosystému. Staň se součástí komunity a prozkoumej cutting-edge algoritmické přístupy a inovativní datové architektury online v reálném čase.

Náš kurz Algorithms and data structures je navržen pro širokou škálu programátorů a IT profesionálů, od junior vývojářů po architekty a datové analytiky. Cílem kurzu je poskytnout ti toolbox algoritmického myšlení a datových struktur, který je kritický pro efektivní kódování. Kurz se zaměřuje na praktické návody a příklady, které tě naučí nejen jak psát kód, ale i jak konceptualizovat a optimalizovat svá řešení. Kurz je také skvělou přípravou na technické pohovory a nabízí konkrétní rady pro úspěšné zvládnutí coding interviews. Po dokončení tohoto kurzu budeš mít pevný základ, na kterém můžeš stavět svou kariéru, ať už jako kodér, architekt, nebo analytik.

Využij našich online vzdělávacích programů pro rychlé a efektivní zvládnutí nejnovějších technologických trendů a získej kompetence, které tě posunou v kariéře v IT.

Autor: Jan Bílek

Více článků
Jak ovlivňuje placený a organický obsah
Čekají nás kvůli technologickému pokroku společenské změny?