Big Data Infrastructure - bezplatný kurz od School of Data Analysis, 4 semestre, Dátum: 5. decembra 2023.
Rôzne / / December 08, 2023
Pre tých, ktorí milujú algoritmy, prácu s dátami a baví ich programovanie, no nechceli by spájať svoj život so strojovým učením.
Algoritmy, programovanie, návrh súborových systémov, diskov, sietí a procesorov, ako aj distribuovaných systémov.
Pri vytváraní a podpore efektívnych a spoľahlivých distribuovaných systémov na ukladanie a spracovanie veľkých dát.
Každý študent musí počas semestra úspešne absolvovať aspoň tri predmety. Napríklad, ak sú v hlavnom programe dva z nich, musíte si vybrať jeden zo špeciálnych kurzov.
Vedomosti sa testujú predovšetkým prostredníctvom domácich úloh – skúšky a testy sa robia len z niektorých predmetov.
Prvý semester
Povinné
Algoritmy a dátové štruktúry, časť 1
01 Zložitosť a výpočtové modely. Analýza účtovných hodnôt (začiatok)
02 Analýza účtovných hodnôt (koniec)
03 Algoritmy Merge-Sort a Quick-Sort
04 Radová štatistika. Hromady (začiatok)
05 Hromady (koniec)
06 Hašovanie
07 Vyhľadávacie stromy (začiatok)
08 Vyhľadávacie stromy (pokračovanie)
09 Prehľadávanie stromov (koniec). Systém disjunktných množín
10 Ciele RMQ a LCA
11 Dátové štruktúry pre geometrické vyhľadávanie
12 Problém dynamickej konektivity v neorientovanom grafe
Počítačová architektúra a operačné systémy
01 UNIX a programovanie v C: príkazový riadok, riadenie procesov, kanály, signály. Implementácia shellu príkazového riadku.
02 x86 assembler: aritmetika, prechody, podmienky a volania funkcií. Zásobník, pohyb hore zásobníkom.
03 Prepojenie programov a formátu ELF. Dynamické prepojenie.
04 Koncept kontextu a toku vykonávania. Implementácia ľahkých nití.
05 Preemptívny multitasking: podpora od x86 procesora a implementácia procesov v UNIXovom jadre.
06 Viacjadrová architektúra: koherencia vyrovnávacej pamäte a modely pamäte. Synchronizačné primitíva vo viacvláknových programoch.
07 Plánovanie procesov na jednom jadre a na mnohých jadrách.
08 Externá pamäť: pevné disky a disky SSD. Princípy fungovania súborových systémov.
09 Virtualizácia: hardvér a softvér. Binárne vysielanie.
Jazykové školenie C++, časť 1
C++ je výkonný jazyk s bohatým dedičstvom. Pre tých, ktorí sa práve vydali na cestu zvládnutia tohto jazyka, je veľmi ľahké stratiť sa v množstve techník a techník vytvorených za posledných 30 rokov. V kurze sa vyučuje "Modern C++" - moderná podmnožina jazyka (štandardy 11, 14 a 17). Veľká pozornosť sa venuje nástrojom a knižniciam – veciam, ktoré nie sú súčasťou jazyka, ale bez ktorých nebude možné postaviť veľký a zložitý projekt.
01 Úvod do C++.
02 Konštanty. Ukazovatele a odkazy. Odovzdávanie argumentov funkcii.
03 Triedy.
04 Dynamická správa pamäte.
05 Premenné, ukazovatele a referencie.
06 Správa pamäte, inteligentné ukazovatele, RAII.
07 Štandardná knižnica šablón.
08 Dedičnosť a virtuálne funkcie.
09 Riešenie chýb.
10 dizajnových vzorov.
11 Menné priestory Sémantika pohybu Perfektné preposielanie.
12 Reprezentácia štruktúr a tried v pamäti. Zarovnanie údajov. Ukazovatele na členov triedy/metódy. Variadické šablóny.
Druhý termín
Povinné
Algoritmy a dátové štruktúry, časť 2
01 Obchádzka na šírku. Prvý prechod do hĺbky (začiatok)
02 Hĺbkový prechod (pokračovanie)
03 Prechod do hĺbky (koniec). 2-rezy
04 Hľadanie najkratších ciest (začiatok)
05 Hľadanie najkratších ciest (pokračovanie)
06 Minimálne kostry
07 Minimálne rezy. Hľadať podreťazce (začiatok)
08 Vyhľadajte podreťazce (pokračovanie)
09 Vyhľadajte podreťazce (koniec)
10 stromov prípon (začiatok)
11 Príponové stromy (koncovka). Polia prípon (štart)
12 polí prípon (končiace)
13 Najdlhšie spoločné podreťazce. Približné vyhľadávanie podreťazca.
Jazykové školenie C++, časť 2
Druhá časť kurzu C++, ktorá pokrýva pokročilé témy a jazykové schopnosti.
01 Viacvláknové programovanie. Synchronizácia vlákien pomocou mutexov a premenných podmienok.
02 Atómové premenné. C++ pamäťový model. Príklady dátových štruktúr bez zámku.
03 Pokročilé techniky metaprogramovania v C++. Metafunkcie, SFINAE, koncepty.
04 Súťažné programovanie, interakcia so sieťou.
05 architektúra llvm. Práca so stromom analýzy C++. Vývoj nástrojov na analýzu kódu C++.
Vybrať si z
Teória a prax súbežnosti
Kurz je venovaný konkurenčným systémom a úlohám v najširšom zmysle: od úrovne konkurencie medzi jadrami procesorov pri zápise do jednej bunky pamäte distribuovaným systémom, ktoré chcú replikovať svoj stav na viacerých serveroch spôsobom odolným voči chybám a konzistentným spôsobom.
01 https://gitlab.com/Lipovsky/shad-tpcc-course-2019/blob/master/lectures/syllabus.md
alebo
Choďte do jazyka
01 Úvod. Program kurzu. Reportovanie o priebehu, hodnotiace kritériá. Filozofia dizajnu. ak, prepnúť, za. Ahoj svet. Argumenty príkazového riadku. Počet slov. Animovaný gif. Načítava sa adresa URL. Súbežné načítanie adresy URL. Webový server. Prehliadka ísť. Lokálne nastavenie IDE. gofmt. goimports. lining.
02 Základné jazykové štruktúry. mená, deklarácie, premenné, priradenia. deklarácie typu. balíky a súbory. rozsah. Nulová hodnota. Pridelenie pamäte. Zásobník vs. Základné dátové typy. Konštanty. Kompozitné dátové typy. Polia. Plátky. Mapy. Štruktúry. JSON. text/šablónu. reťazec a []bajt. Práca s unicode. Náhradný znak Unicode. Funkcie. Funkcie s premenlivým počtom argumentov. Anonymné funkcie. Chyby.
03 Metódy. Prijímač hodnoty vs prijímač ukazovateľa. Vkladanie. Hodnota metódy. Zapuzdrenie. Rozhrania. Rozhrania ako zmluvy. io. Spisovateľ, io. Čítačka a ich implementácia. triediť. Rozhranie. chyba. http. Handler. Rozhrania ako enumerácie. Zadajte tvrdenie. Typový prepínač. Čím väčšie rozhranie, tým slabšia abstrakcia. Chyba pri spracovaní. panika, odložiť, zotaviť sa. chyby.{Unwrap, Is, As}. fmt. Chyba. % hm.
04 Goroutines a kanály. hodinový server. echo server. Veľkosť kanála. Blokujúce a neblokujúce čítanie. vyberte vyhlásenie. Kanálové axiómy. čas. Po. čas. NewTicker. Vzor potrubia. Zrušenie. Paralelná slučka. synchronizácia. WaitGroup. Spracovanie chýb v paralelnom kóde. chybná skupina. Skupina. Súbežný webový prehľadávač. Súbežné prechádzanie adresára.
05 Pokročilé testovanie. Čiastkové testy. testovanie. B. (T).Logf. (T).Skipf. (T).FailNow. testovanie. Short(), testovacie príznaky. Generovanie simulácií. svedčiť/{vyžadovať, tvrdiť}. svedčiť/suite. Testovacie zariadenie. Integračné testy. Gorutine detektor úniku. TestingMain. Pokrytie. Porovnanie benchmarkov.
06 Pokročilé testovanie. Čiastkové testy. testovanie. B. (T).Logf. (T).Skipf. (T).FailNow. testovanie. Short(), testovacie príznaky. Generovanie simulácií. svedčiť/{vyžadovať, tvrdiť}. svedčiť/suite. Testovacie zariadenie. Integračné testy. Gorutine detektor úniku. TestingMain. Pokrytie. Porovnanie benchmarkov.
07 Kontext balenia. Odovzdávanie údajov v rozsahu žiadosti. http middleware. chi. Router. Požiadať o zrušenie. Pokročilé vzory súbežnosti. Asynchrónna vyrovnávacia pamäť. Elegantné vypnutie servera. kontext. S časovým limitom. Dávkovanie a zrušenie.
08 databáza/sql, sqlx, práca s databázami, redis.
09 Úvaha. odrážať. Napíšte a premýšľajte. Hodnota. struct tags. net/rpc. encoding/gob. synchronizácia. Mapa. odrážať. DeepEqual.
10 Implementácie balíka io, Reader a Writer zo štandardnej knižnice. Nízkoúrovňové programovanie. nebezpečné. Balík binárny. bajtov. Buffer. cgo, syscall.
11 architektúra GC. Písať bariéra. Rast zásobníka. GC pauza. GOGC. synchronizácia. bazén. Gorutine plánovač. GOMACPROCS. Netesné nite.
12 Choďte na náradie. pprof. Profilovanie CPU a pamäte. Krížová kompilácia. GOOS, GOARCH. CGO_ENABLED=0. Vytvárajte značky. go moduly. godoc. x/analýza. Generovanie kódu.
13 Užitočné knižnice. CLI aplikácie s kobrou. Protobuf a GRPC. zap logovanie.
Tretí semester
Povinné
Algoritmy v externej pamäti
Kurz oboznámi študentov so základnými princípmi konštrukcie algoritmov pre prácu s dátami, ktoré sa nezmestia do RAM počítača.
01 Algoritmy v externej pamäti.
02 Algoritmy nezabúdajúce na vyrovnávaciu pamäť.
03 Algoritmy na spracovanie tokových dát.
Distribuované systémy
Odporúčané špeciálne kurzy
Sila kryptografických systémov
01 Základné prístupy a princípy modernej kryptografie. Model protivníka, formalizácia konceptu sily, problém hodnotenia sily a súvisiace problémy, rozdelenie na primitíva a protokoly, etapy „života“ kryptografického systému.
02 Dôvernosť. Každodenné definície dôvernosti, prístupy k formalizácii (informačno-teoretický model nepriateľa, modely KR, PR, LOR, ROR, IND, CPA, CCA), symetrický šifrovací systém, aplikácia teoretických informácií o komplexnosti na určenie vzťahu medzi modelov. Vzťahy medzi základnými modelmi protivníka na hodnotenie sily šifrovacích systémov.
03 Prístupy k budovaniu šifrovacích systémov. Budovanie od nuly. Konštrukcie na základe blokových šifier, definícia blokovej šifry, hlavné charakteristiky, prístupy ku konštrukcii a vlastnosti. Modely PRP a PRF. Paradox narodeninového problému. Lema o vzťahu medzi odporom v modeloch PRF a PRP.
04 Režimy šifrovania. Základné režimy šifrovania: ECB, CBC, CFB, OFB, CTR. Základné výkonové vlastnosti. Trvanlivosť CTR v LOR-CPA, nestabilita ECB v LOR-CPA. Nestabilita základných režimov v modeloch CCA.
05 Bezúhonnosť. Definícia pojmu integrita. Prístupy k formalizácii (model UF-CMA, modely založené na diskriminačnej úlohe, model PRF). Overovacie kódy správ a funkcie na generovanie imitovaných vložiek. Návrhy založené na blokových šifrách: CBC-MAC, XCBC, TMAC, OMAC. Zraniteľné režimy.
06 Hashovacie funkcie. Definícia, základné vlastnosti, prístupy ku konštrukcii, formalizácia a súvisiace problémy. Príklady použitia hashovacích funkcií: hashovanie hesiel, extrakcia entropie. Vytváranie kolízií a predobrazov zo súborov s nízkou mohutnosťou.
07 obvody HMAC, KDF, PRF, DRNG. Diagram HMAC, základné kroky na získanie hodnotenia odporu. Kľúčová diverzifikácia a princíp oddelenia kľúčov, schémy KDF a PRF. Pseudonáhodný generátor, obvody DRNG.
08 Zaťaženie kľúča. Problém s načítaním kľúča. Hlavnými metódami na zníženie zaťaženia kľúča sú externé a interné konverzie kľúčov. Schémy paralelného a sériového prekľúčovania, základné vlastnosti. Kľúčový strom. Interná zmena kľúča a režim CTR-ACPKM.
09 Šifrovanie s ochranou proti imitácii. Formulácia problému. Všeobecné štruktúry (EtA, AtE, A&E) a ich vlastnosti. Príklady zraniteľných režimov na zabezpečenie dôvernosti a integrity pomocou jediného kľúča. Režimy šifrovania AEAD: GCM, MGM.
10 Bezpečný komunikačný kanál. Pojem bezpečný komunikačný kanál: typy kanálov, základné vlastnosti (integrita a dôvernosť dátového toku). Príklady zraniteľných protokolov. Zaznamenajte protokol TLS 1.3.
Štvrtý semester
Vybrať si z
Teória a prax súbežnosti
Kurz je venovaný konkurenčným systémom a úlohám v najširšom zmysle: od úrovne konkurencie medzi jadrami procesorov pri zápise do jednej bunky pamäte distribuovaným systémom, ktoré chcú replikovať svoj stav na viacerých serveroch spôsobom odolným voči chybám a konzistentným spôsobom.
01 https://gitlab.com/Lipovsky/shad-tpcc-course-2019/blob/master/lectures/syllabus.md
alebo
Choďte do jazyka
01 Úvod. Program kurzu. Reportovanie o priebehu, hodnotiace kritériá. Filozofia dizajnu. ak, prepnúť, za. Ahoj svet. Argumenty príkazového riadku. Počet slov. Animovaný gif. Načítava sa adresa URL. Súbežné načítanie adresy URL. Webový server. Prehliadka ísť. Lokálne nastavenie IDE. gofmt. goimports. lining.
02 Základné jazykové štruktúry. mená, deklarácie, premenné, priradenia. deklarácie typu. balíky a súbory. rozsah. Nulová hodnota. Pridelenie pamäte. Zásobník vs. Základné dátové typy. Konštanty. Kompozitné dátové typy. Polia. Plátky. Mapy. Štruktúry. JSON. text/šablónu. reťazec a []bajt. Práca s unicode. Náhradný znak Unicode. Funkcie. Funkcie s premenlivým počtom argumentov. Anonymné funkcie. Chyby.
03 Metódy. Prijímač hodnoty vs prijímač ukazovateľa. Vkladanie. Hodnota metódy. Zapuzdrenie. Rozhrania. Rozhrania ako zmluvy. io. Spisovateľ, io. Čítačka a ich implementácia. triediť. Rozhranie. chyba. http. Handler. Rozhrania ako enumerácie. Zadajte tvrdenie. Typový prepínač. Čím väčšie rozhranie, tým slabšia abstrakcia. Chyba pri spracovaní. panika, odložiť, zotaviť sa. chyby.{Unwrap, Is, As}. fmt. Chyba. % hm.
04 Goroutines a kanály. hodinový server. echo server. Veľkosť kanála. Blokujúce a neblokujúce čítanie. vyberte vyhlásenie. Kanálové axiómy. čas. Po. čas. NewTicker. Vzor potrubia. Zrušenie. Paralelná slučka. synchronizácia. WaitGroup. Spracovanie chýb v paralelnom kóde. chybná skupina. Skupina. Súbežný webový prehľadávač. Súbežné prechádzanie adresára.
05 Pokročilé testovanie. Čiastkové testy. testovanie. B. (T).Logf. (T).Skipf. (T).FailNow. testovanie. Short(), testovacie príznaky. Generovanie simulácií. svedčiť/{vyžadovať, tvrdiť}. svedčiť/suite. Testovacie zariadenie. Integračné testy. Gorutine detektor úniku. TestingMain. Pokrytie. Porovnanie benchmarkov.
06 Súbežnosť so zdieľanou pamäťou. synchronizácia. Mutex. synchronizácia. RWMutex. synchronizácia. Cond. atómový synchronizácia. Raz. Detektor pretekov. Asynchrónna vyrovnávacia pamäť. Práca s databázou. databáza/sql. sqlx.
07 Kontext balenia. Odovzdávanie údajov v rozsahu žiadosti. http middleware. chi. Router. Požiadať o zrušenie. Pokročilé vzory súbežnosti. Asynchrónna vyrovnávacia pamäť. Elegantné vypnutie servera. kontext. S časovým limitom. Dávkovanie a zrušenie.
08 databáza/sql, sqlx, práca s databázami, redis.
09 Úvaha. odrážať. Napíšte a premýšľajte. Hodnota. struct tags. net/rpc. encoding/gob. synchronizácia. Mapa. odrážať. DeepEqual.
10 Implementácie balíka io, Reader a Writer zo štandardnej knižnice. Nízkoúrovňové programovanie. nebezpečné. Balík binárny. bajtov. Buffer. cgo, syscall.
11 architektúra GC. Písať bariéra. Rast zásobníka. GC pauza. GOGC. synchronizácia. bazén. Gorutine plánovač. GOMACPROCS. Netesné nite.
12 Choďte na náradie. pprof. Profilovanie CPU a pamäte. Krížová kompilácia. GOOS, GOARCH. CGO_ENABLED=0. Vytvárajte značky. go moduly. godoc. x/analýza. Generovanie kódu.
13 Užitočné knižnice. CLI aplikácie s kobrou. Protobuf a GRPC. zap logovanie.
alebo
Databáza
01 Rozhrania moderných databáz: relačné, kľúč-hodnota, dokument, graf. Relačná algebra a jazyk SQL.
02 Práca s diskom v klasickej relačnej DBMS: stránky, stránkový fond, vysťahovanie z fondu.
03 Vykonávanie SQL dotazov: analýza výrazov, plánovanie, vykonávanie. Interpretácia a generovanie kódu pomocou LLVM.
04 Indexy v relačnej DBMS: typy indexov, metódy ukladania, použitie v dotazoch.
05 Transakcie: skratka ACID, úrovne izolácie, implementácia transakcií cez zámky a MVCC.
06 Obnova po havárii: denník, kontrolné body, algoritmus ARIES.
07 Ukladanie údajov pomocou metódy Log-Structured Merge Tree.
08 Stĺpcové DBMS: výhody, vlastnosti, algoritmy kompresie údajov.
09 Distribuované DBMS: sharding, transakcie, vykonávanie dotazov.
10 DBMS umiestnených v hlavnej pamäti. Dátové štruktúry pre indexy v pamäti.
alebo
Počítačové siete
01 Úvod do sieťových technológií. História sietí, sieťové protokoly, organizácia sieťovej interakcie v sieti typu peer-to-peer a vzájomné prepojenie sietí typu peer-to-peer.
02 Doprava. OSI/ISO sieťový model. TCP, nadviazanie sieťového spojenia, porovnanie TCP a UDP. Analýza Tcpdump – bajty za chodu, opakovaný prenos grafov. Metódy riadenia toku údajov v relácii TCP. Rôzne typy TCP relácií a riadenie šírky pásma prenášaných dát v paketových sieťach.
03 Smerovanie. Koncept smerovania v sieťach. Statické a dynamické smerovanie. Základy dynamického smerovania. Dynamický smerovací protokol - OSPF. Protokoly smerovania vektorov vzdialenosti. Prehľad smerovacieho protokolu BGP - typy správ, atribúty BGP, výber optimálnej cesty v BGP.
04 Ako funguje internet: BGP a DNS. Internetové smerovanie. Prehľad protokolu DNS.
05 Siete vo veľkých dátových centrách. Vlastnosti architektúry sietí dátových centier. Požiadavky na siete dátových centier. Architektúra CLOS pre siete dátových centier.
06 Oneskorenia v sieťach. Vlastnosti budovania veľkých chrbticových sietí. Dôvody oneskorení pri prenose dát cez chrbticové siete.
07 Škálovanie a dostupnosť internetových služieb. Technológie na vyrovnávanie záťaže a architektúra služieb.
08 MPLS a SR, Programovateľnosť siete. MPLS a Segment Routing technológie pre budovanie chrbticových sietí. Účel technológie MPLS, protokoly používané na výmenu štítkov.
09 Zásady činnosti sieťových zariadení. Architektúra smerovača, vlastnosti spracovania sieťovej prevádzky vo vnútri sieťových zariadení.
10 oblakov. Softvérovo definované sieťové základy – protokoly používané na budovanie softvérovo definovaných sietí. Integrácia virtualizačných platforiem a sieťovej infraštruktúry.
alebo
Kryptografické protokoly
01 Základné myšlienky asymetrickej kryptografie. Hlavný rozdiel medzi asymetrickou kryptografiou a symetrickou kryptografiou. Hlavné myšlienky: protokol na generovanie zdieľaného kľúča, šifrovanie verejným kľúčom, elektronický podpis (problémy na riešenie, intuitívne pochopenie bezpečnostných vlastností). Špecifické kryptografické schémy: protokol Diffie-Hellman, šifrovacie schémy ElGamal a RSA, podpisy ElGamal a RSA. Základným problémom asymetrických schém je dôvera vo verejný kľúč.
02 Sila základných asymetrických kryptografických schém. Formálna definícia rezistencie: modely UF-CMA, IND-CPA, DLP, CDH, DDH. Vzťahy medzi nimi. Sila šifrovacej schémy ElGamal. Nestabilita podpisovej schémy RSA bez použitia hašovacej funkcie.
03 Získajte viac informácií o asymetrickej kryptografii. Lampartov podpis, Merkleov diagram. Útok DSKS.
04 Algebraické a číselné základy asymetrickej kryptografie. Konečné grupy, cyklické grupy, poradie grupového prvku. Problém diskrétneho logaritmu (DLP). Multiplikatívne grupy konečných polí. Základné informácie o eliptických krivkách.
05 Eliptické krivky. Hasseho teorém. Sčítanie bodov na eliptickej krivke. Skupina bodov na eliptickej krivke. Podpisová schéma GOST R 34.10-2012.
06 Diskrétny logaritmus. Diskrétne logaritmické algoritmy (Pollardova Rho metóda, párovacia metóda, Polig-Hellmanova metóda, metóda výpočtu indexu).
07 Technológia PKI. Základné princípy a koncepty infraštruktúry verejných kľúčov (PKI). Certifikát, CA, CRL, OCSP, dôveryhodný priestor.
08 protokol TLS. História protokolu TLS. Štruktúra protokolu, základné princípy fungovania. Kryptografické sady protokolu TLS založené na ruských kryptografických algoritmoch.
09 Základy budovania protokolov AKE. Koncept protokolu AKE. Cieľové vlastnosti. Základné prístupy k výstavbe.
10 Bezpečné úložisko kľúčov. Problém bezpečného používania súkromných kľúčov. Kľúčové médiá, neodnímateľné kľúče. Problém prítomnosti protivníka v kanáli, protokoly rodiny PAKE.
11 Základné pojmy technológie blockchain. Úlohou koordinovanej decentralizovanej interakcie. Základné pojmy pojmu bezpečnosť. Bezpečnostné prístupy.
12 Základné princípy kvantových technológií a ich aplikácie v kryptografii