Big Data Infrastructure - bezplatný kurz od School of Data Analysis, 4 semestry, Datum: 5. prosince 2023.
Různé / / December 08, 2023
Pro ty, kteří milují algoritmy, práci s daty a baví je programování, ale nechtěli by spojovat svůj život se strojovým učením.
Algoritmy, programování, návrh souborových systémů, disků, sítí a procesorů i distribuovaných systémů.
Při vytváření a podpoře efektivních a spolehlivých distribuovaných systémů pro ukládání a zpracování velkých dat.
Každý student musí v průběhu semestru úspěšně absolvovat minimálně tři předměty. Pokud jsou například v hlavním programu dva z nich, musíte si vybrat jeden ze speciálních kurzů.
Znalosti se ověřují především prostřednictvím domácích úkolů - zkoušky a testy probíhají pouze z některých předmětů.
První semestr
Povinné
Algoritmy a datové struktury, část 1
01 Složitost a výpočtové modely. Analýza účetních hodnot (začátek)
02 Analýza účetních hodnot (konec)
03 Algoritmy Merge-Sort a Quick-Sort
04 Pořadové statistiky. Hromady (začátek)
05 Hromady (konec)
06 Hašování
07 Hledat stromy (začátek)
08 Hledat stromy (pokračování)
09 Prohledejte stromy (konec). Systém disjunktních množin
10 Cíle RMQ a LCA
11 Datové struktury pro geometrické vyhledávání
12 Problém dynamické konektivity v neorientovaném grafu
Architektura počítače a operační systémy
01 UNIX a programování v C: příkazový řádek, řízení procesů, kanály, signály. Implementace shellu příkazového řádku.
02 x86 assembler: aritmetika, přechody, podmínky a volání funkcí. Zásobník, pohyb nahoru po zásobníku.
03 Propojení programů a formátu ELF. Dynamické propojení.
04 Koncept kontextu a toku provádění. Provádění lehkých nití.
05 Preemptivní multitasking: podpora ze strany procesoru x86 a implementace procesů v jádře UNIX.
06 Vícejádrová architektura: koherence mezipaměti a modely paměti. Synchronizační primitiva ve vícevláknových programech.
07 Plánování procesů na jednom jádru a na mnoha jádrech.
08 Externí paměť: pevné disky a disky SSD. Principy fungování souborových systémů.
09 Virtualizace: hardware a software. Binární vysílání.
Jazykové školení C++, část 1
C++ je výkonný jazyk s bohatým dědictvím. Pro ty, kteří se právě vydali na cestu zvládnutí tohoto jazyka, je velmi snadné se ztratit v přemírě technik a technik vytvořených za posledních 30 let. Předmět vyučuje "Moderní C++" - moderní podmnožinu jazyka (standardy 11, 14 a 17). Velká pozornost je věnována nástrojům a knihovnám – věcem, které nejsou součástí jazyka, ale bez kterých nebude možné postavit velký a komplexní projekt.
01 Úvod do C++.
02 Konstanty. Ukazatele a odkazy. Předávání argumentů funkci.
03 Třídy.
04 Dynamická správa paměti.
05 Proměnné, ukazatele a odkazy.
06 Správa paměti, inteligentní ukazatele, RAII.
07 Standardní knihovna šablon.
08 Dědičnost a virtuální funkce.
09 Ošetření chyb.
10 návrhových vzorů.
11 Jmenné prostory Sémantika pohybu Perfektní předávání.
12 Reprezentace struktur a tříd v paměti. Zarovnání dat. Ukazatele na členy/metody třídy. Variadické šablony.
Druhé období
Povinné
Algoritmy a datové struktury, část 2
01 Obchvat na šířku. Hloubka první průchod (start)
02 Depth Traversal (pokračování)
03 Přejezd do hloubky (konec). 2 řezy
04 Hledání nejkratších cest (začátek)
05 Hledání nejkratších cest (pokračování)
06 Minimální kostry
07 Minimální řezy. Hledat podřetězce (start)
08 Hledání podřetězců (pokračování)
09 Hledání podřetězců (konec)
10 stromů přípon (začátek)
11 Příponové stromy (koncovka). Pole přípon (start)
12 polí přípon (koncovka)
13 Nejdelší společné podřetězce. Přibližné vyhledávání podřetězců.
Jazykové školení C++, část 2
Druhá část kurzu C++, která pokrývá pokročilá témata a jazykové schopnosti.
01 Vícevláknové programování. Synchronizace vláken pomocí mutexů a proměnných podmínek.
02 Atomové proměnné. C++ paměťový model. Příklady bezzámkových datových struktur.
03 Pokročilé techniky metaprogramování v C++. Metafunkce, SFINAE, koncepty.
04 Soutěžní programování, interakce se sítí.
05 architektura llvm. Práce se stromem analýzy C++. Vývoj nástrojů pro analýzu C++ kódu.
Vybrat si z
Teorie a praxe souběžnosti
Kurz je věnován konkurenčním systémům a úlohám v nejširším slova smyslu: od úrovně konkurence mezi procesorovými jádry o zápis do jedné buňky paměti distribuovaným systémům, které chtějí replikovat svůj stav na více serverech odolným a konzistentním způsobem.
01 https://gitlab.com/Lipovsky/shad-tpcc-course-2019/blob/master/lectures/syllabus.md
nebo
Přejít na jazyk
01 Úvod. Program kurzu. Reportování o průběhu, hodnotící kritéria. Filozofie designu. if, switch, for. Ahoj světe. Argumenty příkazového řádku. Počet slov. Animovaný gif. Načítání adresy URL. Souběžné načítání adresy URL. Webový server. Prohlídka jít. Místní nastavení IDE. gofmt. goimports. lining
02 Základní jazykové struktury. jména, deklarace, proměnné, přiřazení. deklarace typu. balíčky a soubory. rozsah. Nulová hodnota. Alokace paměti. Zásobník vs hromada. Základní datové typy. Konstanty. Složené datové typy. Pole. Plátky. Mapy. Struktury. JSON. text/šablona. řetězec a []bajt. Práce s unicode. Náhradní znak Unicode. Funkce. Funkce s proměnným počtem argumentů. Anonymní funkce. Chyby.
03 Metody. Přijímač hodnoty vs přijímač ukazatele. Vkládání. Hodnota metody. Zapouzdření. Rozhraní. Rozhraní jako smlouvy. io. Spisovatel, io. Reader a jejich implementace. seřadit. Rozhraní. chyba. http. Psovod. Rozhraní jako výčty. Zadejte aserci. Typový přepínač. Čím větší rozhraní, tím slabší abstrakce. Chyba při zpracování. panikařit, odložit, vzpamatovat se. chyby.{Unwrap, Is, As}. fmt. Chyba. % hm.
04 Goroutines a kanály. hodinový server. echo server. Velikost kanálu. Blokující a neblokující čtení. vybrat prohlášení. Kanálové axiomy. čas. Po. čas. NewTicker. Vzor potrubí. Zrušení. Paralelní smyčka. synchronizace. WaitGroup. Zpracování chyb v paralelním kódu. chybová skupina. Skupina. Souběžný webový prohledávač. Souběžné procházení adresáře.
05 Pokročilé testování. Dílčí testy. testování. B. (T).Logf. (T).Přeskočit. (T).FailNow. testování. Short(), testovací příznaky. Generování maket. dosvědčit/{vyžadovat, tvrdit}. svědčit/suite. Testovací přípravek. Integrační testy. Goroutine detektor úniku. TestováníHlavní. Dosah. Porovnání benchmarků.
06 Pokročilé testování. Dílčí testy. testování. B. (T).Logf. (T).Přeskočit. (T).FailNow. testování. Short(), testovací příznaky. Generování maket. dosvědčit/{vyžadovat, tvrdit}. svědčit/suite. Testovací přípravek. Integrační testy. Goroutine detektor úniku. TestováníHlavní. Dosah. Porovnání benchmarků.
07 Kontext balíčku. Předávání dat v rozsahu požadavku. http middleware. chi. Směrovač. Zrušení požadavku. Pokročilé vzory souběžnosti. Asynchronní mezipaměť. Slušné vypnutí serveru. kontext. S časovým limitem. Dávkování a zrušení.
08 databáze/sql, sqlx, práce s databázemi, redis.
09 Reflexe. odrážet. Napište a přemýšlejte. Hodnota. struct tagy. net/rpc. kódování/gob. synchronizace. Mapa. odrážet. DeepEqual.
10 Implementace balíčku io, Reader a Writer ze standardní knihovny. Nízkoúrovňové programování. nebezpečný. Balíček binární. bajtů. Buffer. cgo, syscall.
11 GC architektura. Zápisová bariéra. Růst zásobníku. GC pauza. GOGC. synchronizace. Bazén. Goroutine plánovač. GOMACPROCS. Uniklé nitě.
12 Jděte na nářadí. pprof. Profilování CPU a paměti. Křížová kompilace. GOOS, GOARCH. CGO_ENABLED=0. Vytvářejte značky. go moduly. godoc. x/analýza. Generování kódu.
13 Užitečné knihovny. Aplikace CLI s kobrou. Protobuf a GRPC. zap logování.
Třetí semestr
Povinné
Algoritmy v externí paměti
Předmět seznamuje studenty se základními principy konstrukce algoritmů pro práci s daty, která se nevejdou do paměti RAM počítače.
01 Algoritmy v externí paměti.
02 Algoritmy ignorující vyrovnávací paměť.
03 Algoritmy pro zpracování datových proudů.
Distribuované systémy
Doporučené speciální kurzy
Síla kryptografických systémů
01 Základní přístupy a principy moderní kryptografie. Model protivníka, formalizace pojmu síla, problém hodnocení síly a související problémy, rozdělení na primitiva a protokoly, fáze „života“ kryptografického systému.
02 Důvěrnost. Každodenní definice důvěrnosti, přístupy k formalizaci (informačně-teoretický model nepřítele, modely KR, PR, LOR, ROR, IND, CPA, CCA), symetrický šifrovací systém, aplikace teoreticky složitých informací k určení vztahu mezi modely. Vztahy mezi základními modely protivníka pro hodnocení síly šifrovacích systémů.
03 Přístupy k budování šifrovacích systémů. Budování od nuly. Konstrukce na základě blokových šifer, definice blokové šifry, hlavní charakteristiky, přístupy ke konstrukci a vlastnosti. Modely PRP a PRF. Paradox narozeninového problému. Lemma o vztahu mezi odporem v modelech PRF a PRP.
04 Režimy šifrování. Základní režimy šifrování: ECB, CBC, CFB, OFB, CTR. Základní výkonové vlastnosti. Trvanlivost CTR v LOR-CPA, nestabilita ECB v LOR-CPA. Nestabilita základních režimů v modelech CCA.
05 Bezúhonnost. Definice pojmu integrita. Přístupy k formalizaci (model UF-CMA, modely založené na diskriminační úloze, model PRF). Ověřovací kódy zpráv a funkce pro generování imitovaných vložek. Návrhy založené na blokových šifrách: CBC-MAC, XCBC, TMAC, OMAC. Zranitelné režimy.
06 Hashovací funkce. Definice, základní vlastnosti, přístupy ke konstrukci, formalizace a související problémy. Příklady použití hashovacích funkcí: hash hesla, extrakce entropie. Konstrukce kolizí a předobrazů z množin nízké mohutnosti.
07 Obvody HMAC, KDF, PRF, DRNG. Diagram HMAC, základní kroky pro získání jmenovitého odporu. Klíčová diverzifikace a princip oddělení klíčů, schémata KDF a PRF. Pseudonáhodný generátor, obvody DRNG.
08 Zatížení klíče. Problém se zatížením klíče. Hlavní metody pro snížení zatížení klíče jsou externí a interní konverze klíče. Schémata paralelního a sériového překlíčování, základní vlastnosti. Klíčový strom. Interní změna klíče a režim CTR-ACPKM.
09 Šifrování s ochranou proti imitaci. Formulace problému. Obecné struktury (EtA, AtE, A&E) a jejich vlastnosti. Příklady zranitelných režimů pro zajištění důvěrnosti a integrity pomocí jediného klíče. Režimy šifrování AEAD: GCM, MGM.
10 Bezpečný komunikační kanál. Pojem bezpečný komunikační kanál: typy kanálů, základní vlastnosti (integrita a důvěrnost datového toku). Příklady zranitelných protokolů. Záznam protokolu TLS 1.3.
Čtvrtý semestr
Vybrat si z
Teorie a praxe souběžnosti
Kurz je věnován konkurenčním systémům a úlohám v nejširším slova smyslu: od úrovně konkurence mezi procesorovými jádry o zápis do jedné buňky paměti distribuovaným systémům, které chtějí replikovat svůj stav na více serverech odolným a konzistentním způsobem.
01 https://gitlab.com/Lipovsky/shad-tpcc-course-2019/blob/master/lectures/syllabus.md
nebo
Přejít na jazyk
01 Úvod. Program kurzu. Reportování o průběhu, hodnotící kritéria. Filozofie designu. if, switch, for. Ahoj světe. Argumenty příkazového řádku. Počet slov. Animovaný gif. Načítání adresy URL. Souběžné načítání adresy URL. Webový server. Prohlídka jít. Místní nastavení IDE. gofmt. goimports. lining
02 Základní jazykové struktury. jména, deklarace, proměnné, přiřazení. deklarace typu. balíčky a soubory. rozsah. Nulová hodnota. Alokace paměti. Zásobník vs hromada. Základní datové typy. Konstanty. Složené datové typy. Pole. Plátky. Mapy. Struktury. JSON. text/šablona. řetězec a []bajt. Práce s unicode. Náhradní znak Unicode. Funkce. Funkce s proměnným počtem argumentů. Anonymní funkce. Chyby.
03 Metody. Přijímač hodnoty vs přijímač ukazatele. Vkládání. Hodnota metody. Zapouzdření. Rozhraní. Rozhraní jako smlouvy. io. Spisovatel, io. Reader a jejich implementace. seřadit. Rozhraní. chyba. http. Psovod. Rozhraní jako výčty. Zadejte aserci. Typový přepínač. Čím větší rozhraní, tím slabší abstrakce. Chyba při zpracování. panikařit, odložit, vzpamatovat se. chyby.{Unwrap, Is, As}. fmt. Chyba. % hm.
04 Goroutines a kanály. hodinový server. echo server. Velikost kanálu. Blokující a neblokující čtení. vybrat prohlášení. Kanálové axiomy. čas. Po. čas. NewTicker. Vzor potrubí. Zrušení. Paralelní smyčka. synchronizace. WaitGroup. Zpracování chyb v paralelním kódu. chybová skupina. Skupina. Souběžný webový prohledávač. Souběžné procházení adresáře.
05 Pokročilé testování. Dílčí testy. testování. B. (T).Logf. (T).Přeskočit. (T).FailNow. testování. Short(), testovací příznaky. Generování maket. dosvědčit/{vyžadovat, tvrdit}. svědčit/suite. Testovací přípravek. Integrační testy. Goroutine detektor úniku. TestováníHlavní. Dosah. Porovnání benchmarků.
06 Souběžnost se sdílenou pamětí. synchronizace. Mutex. synchronizace. RWMutex. synchronizace. Cond. atomový synchronizace. Jednou. Závodní detektor. Asynchronní mezipaměť. Práce s databází. databáze/sql. sqlx.
07 Kontext balíčku. Předávání dat v rozsahu požadavku. http middleware. chi. Směrovač. Zrušení požadavku. Pokročilé vzory souběžnosti. Asynchronní mezipaměť. Slušné vypnutí serveru. kontext. S časovým limitem. Dávkování a zrušení.
08 databáze/sql, sqlx, práce s databázemi, redis.
09 Reflexe. odrážet. Napište a přemýšlejte. Hodnota. struct tagy. net/rpc. kódování/gob. synchronizace. Mapa. odrážet. DeepEqual.
10 Implementace balíčku io, Reader a Writer ze standardní knihovny. Nízkoúrovňové programování. nebezpečný. Balíček binární. bajtů. Buffer. cgo, syscall.
11 GC architektura. Zápisová bariéra. Růst zásobníku. GC pauza. GOGC. synchronizace. Bazén. Goroutine plánovač. GOMACPROCS. Uniklé nitě.
12 Jděte na nářadí. pprof. Profilování CPU a paměti. Křížová kompilace. GOOS, GOARCH. CGO_ENABLED=0. Vytvářejte značky. go moduly. godoc. x/analýza. Generování kódu.
13 Užitečné knihovny. Aplikace CLI s kobrou. Protobuf a GRPC. zap logování.
nebo
Databáze
01 Rozhraní moderních databází: relační, klíč-hodnota, dokument, graf. Relační algebra a jazyk SQL.
02 Práce s diskem v klasickém relačním DBMS: stránky, stránkovací fond, vyřazení z fondu.
03 Provádění SQL dotazů: parsování výrazů, plánování, provádění. Interpretace a generování kódu pomocí LLVM.
04 Indexy v relační DBMS: typy indexů, způsoby ukládání, použití v dotazech.
05 Transakce: zkratka ACID, úrovně izolace, implementace transakcí prostřednictvím zámků a MVCC.
06 Obnova po havárii: protokol, kontrolní body, algoritmus ARIES.
07 Ukládání dat pomocí metody Log-Structured Merge Tree.
08 Sloupcová DBMS: výhody, vlastnosti, algoritmy komprese dat.
09 Distribuované DBMS: sharding, transakce, provádění dotazů.
10 DBMS umístěných v hlavní paměti. Datové struktury pro indexy v paměti.
nebo
Počítačové sítě
01 Úvod do síťových technologií. Historie sítí, síťové protokoly, organizace síťové interakce v síti peer-to-peer a propojení sítí peer-to-peer mezi sebou.
02 Doprava. OSI/ISO síťový model. TCP, navázání síťového spojení, porovnání TCP a UDP. Tcpdump analýza – bajty za běhu, přeposílá grafy. Metody řízení toku dat v relaci TCP. Různé typy TCP relací a správa šířky pásma přenášených dat v paketových sítích.
03 Směrování. Pojem směrování v sítích. Statické a dynamické směrování. Základy dynamického směrování. Dynamický směrovací protokol - OSPF. Distanční vektorové směrovací protokoly. Přehled směrovacího protokolu BGP - typy zpráv, atributy BGP, výběr optimální cesty v BGP.
04 Jak funguje internet: BGP a DNS. Směrování internetu. Přehled protokolu DNS.
05 Sítě ve velkých datových centrech. Vlastnosti architektury sítí datových center. Požadavky na sítě datových center. Architektura CLOS pro sítě datových center.
06 Zpoždění v sítích. Vlastnosti budování velkých páteřních sítí. Důvody zpoždění při přenosu dat po páteřních sítích.
07 Škálování a dostupnost internetových služeb. Technologie vyvažování zátěže a architektura služeb.
08 MPLS a SR, Programovatelnost sítě. Technologie MPLS a Segment Routing pro budování páteřních sítí. Účel technologie MPLS, protokoly používané pro výměnu štítků.
09 Zásady činnosti síťových zařízení. Architektura routeru, vlastnosti zpracování síťového provozu uvnitř síťových zařízení.
10 Mraky. Software Definoval Networking Fundamentals - Protokoly používané k budování sítí definovaných softwarem. Integrace virtualizačních platforem a síťové infrastruktury.
nebo
Kryptografické protokoly
01 Základní myšlenky asymetrické kryptografie. Hlavní rozdíl mezi asymetrickou kryptografií a symetrickou kryptografií. Hlavní myšlenky: protokol pro generování sdíleného klíče, šifrování veřejným klíčem, elektronický podpis (problémy k řešení, intuitivní pochopení bezpečnostních vlastností). Specifická kryptografická schémata: protokol Diffie-Hellman, šifrovací schémata ElGamal a RSA, signatury ElGamal a RSA. Základním problémem asymetrických schémat je důvěra ve veřejný klíč.
02 Síla základních asymetrických kryptografických schémat. Formální definice odporu: modely UF-CMA, IND-CPA, DLP, CDH, DDH. Vztahy mezi nimi. Síla šifrovacího schématu ElGamal. Nestabilita podpisového schématu RSA bez použití hashovací funkce.
03 Zjistěte více o asymetrické kryptografii. Lampartův podpis, Merkleův diagram. Útok DSKS.
04 Algebraické a číselně teoretické základy asymetrické kryptografie. Konečné grupy, cyklické grupy, řád prvku grupy. Problém diskrétního logaritmu (DLP). Multiplikativní grupy konečných těles. Základní informace o eliptických křivkách.
05 Eliptické křivky. Hasseova věta. Sčítání bodů na eliptické křivce. Skupina bodů na eliptické křivce. Podpisové schéma GOST R 34.10-2012.
06 Diskrétní logaritmus. Diskrétní logaritmické algoritmy (Pollardova Rho metoda, metoda párování, Polig-Hellmanova metoda, metoda výpočtu indexu).
07 Technologie PKI. Základní principy a koncepty infrastruktury veřejných klíčů (PKI). Certifikát, CA, CRL, OCSP, důvěryhodný prostor.
08 protokol TLS. Historie protokolu TLS. Struktura protokolu, základní principy fungování. Kryptografické sady protokolu TLS založené na ruských kryptografických algoritmech.
09 Základy budování protokolů AKE. Koncepce protokolu AKE. Vlastnosti cíle. Základní přístupy ke stavbě.
10 Bezpečné úložiště klíčů. Problém bezpečného používání soukromých klíčů. Klíčová média, nevyjímatelné klíče. Problém přítomnosti protivníka v kanálu, protokoly rodiny PAKE.
11 Základní pojmy technologie blockchain. Úkolem koordinované decentralizované interakce. Základní pojmy z konceptu bezpečnosti. Bezpečnostní přístupy.
12 Základní principy kvantových technologií a jejich aplikace v kryptografii