Big Data Infrastructure - ingyenes tanfolyam a School of Data Analysis-től, 4 félév, Időpont: 2023. december 5.
Vegyes Cikkek / / December 08, 2023
Azoknak, akik szeretik az algoritmusokat, az adatokkal dolgozni és szeretik a programozást, de nem szeretnék az életüket a gépi tanulással összekötni.
Algoritmusok, programozás, fájlrendszerek, lemezek, hálózatok és processzorok, valamint elosztott rendszerek tervezése.
Hatékony és megbízható elosztott rendszerek létrehozásában és támogatásában nagy adatok tárolására és feldolgozására.
Minden hallgatónak sikeresen teljesítenie kell legalább három kurzust a félév során. Például, ha kettő van belőlük a fő programban, akkor a speciális kurzusok egyikét kell választania.
Az ismeretek ellenőrzése elsősorban házi feladatokkal történik – vizsgákra és tesztekre csak bizonyos tantárgyakból kerül sor.
Első szemeszter
Kötelező
Algoritmusok és adatstruktúrák, 1. rész
01 Komplexitás és számítási modellek. Számviteli értékek elemzése (eleje)
02 Számviteli értékek elemzése (vége)
03 Merge-Sort és Quick-Sort algoritmusok
04 Rendes statisztika. Halmok (eleje)
05 kupacok (vége)
06 Kivonatolás
07 Keresőfák (eleje)
08 Search Trees (folytatás)
09 Fák keresése (vége). Diszjunkt halmazok rendszere
10 Az RMQ és az LCA céljai
11 Adatszerkezetek geometriai kereséshez
12 A dinamikus kapcsolódás problémája irányítatlan gráfban
Számítógép architektúra és operációs rendszerek
01 UNIX és programozás C-ben: parancssor, folyamatvezérlés, csatornák, jelek. Parancssori shell megvalósítása.
02 x86 assembler: aritmetika, átmenetek, feltételek és függvényhívások. Verem, feljebb a veremben.
03 Programok és az ELF formátum összekapcsolása. Dinamikus összekapcsolás.
04 A kontextus és a végrehajtási folyamat fogalma. Könnyű szálak megvalósítása.
05 Megelőző többfeladatos munkavégzés: támogatás az x86-os processzortól és folyamatok megvalósítása a UNIX kernelben.
06 Többmagos architektúra: gyorsítótár-koherencia és memóriamodellek. Szinkronizációs primitívek többszálú programokban.
07 Folyamatok ütemezése egy magon és több magon.
08 Külső memória: merevlemezek és szilárdtestalapú meghajtók. A fájlrendszerek működési elvei.
09 Virtualizáció: hardver és szoftver. Bináris adás.
C++ nyelvi képzés, 1. rész
A C++ egy erőteljes nyelv gazdag örökséggel. Azok számára, akik most indultak el e nyelv elsajátításának útján, nagyon könnyen eltévedhetnek az elmúlt 30 év során megalkotott technikák és technikák rengetegében. A kurzus a „Modern C++” nyelvet – a nyelv modern részhalmazát – tanítja (11., 14. és 17. szabvány). Nagy figyelmet fordítanak az eszközökre és a könyvtárakra – olyan dolgokra, amelyek nem részei a nyelvnek, de amelyek nélkül nem lehet nagy és összetett projektet felépíteni.
01 Bevezetés a C++-ba.
02 Állandók. Mutatók és linkek. Argumentumok átadása függvénynek.
03 Osztályok.
04 Dinamikus memóriakezelés.
05 Változók, mutatók és hivatkozások.
06 Memóriakezelés, intelligens mutatók, RAII.
07 Szabványos sablonkönyvtár.
08 Öröklődés és virtuális funkciók.
09 Hibakezelés.
10 Tervezési minták.
11 Névterek Szemantika áthelyezése Tökéletes továbbítás.
12 Struktúrák és osztályok ábrázolása a memóriában. Adatigazítás. Mutatók az osztály tagjaira/módszereire. Változatos sablonok.
Második időszak
Kötelező
Algoritmusok és adatstruktúrák, 2. rész
01 Bypass szélességben. Mélység első bejárás (kezdet)
02 Mélység bejárás (folytatás)
03 Bejárás mélységben (vége). 2-vágás
04 A legrövidebb utak megtalálása (eleje)
05 A legrövidebb utak keresése (folytatás)
06 Minimálisan feszülő fák
07 Minimális vágás. Alkarakterláncok keresése (kezdet)
08 Alkarakterláncok keresése (folytatás)
09 Alkarakterláncok keresése (vége)
10 utótagfa (eleje)
11 Utótag fák (végződés). Utótag tömbök (kezdet)
12 utótag tömb (végződés)
13 leghosszabb közös karakterlánc. Hozzávetőleges részkarakterlánc keresés.
C++ nyelvi képzés, 2. rész
A C++ tanfolyam második része, amely haladó témákat és nyelvi képességeket ölel fel.
01 Többszálú programozás. Szálak szinkronizálása mutexek és feltételváltozók használatával.
02 Atomváltozók. C++ memória modell. Példák zármentes adatstruktúrákra.
03 Fejlett meta-programozási technikák C++ nyelven. Metafunkciók, SFINAE, fogalmak.
04 Versenyképes programozás, interakció a hálózattal.
05 llvm architektúra. Munka a C++ értelmezőfával. Eszközök fejlesztése a C++ kód elemzéséhez.
Választani
A párhuzamosság elmélete és gyakorlata
A kurzus a legtágabb értelemben vett versenyképes rendszereknek és feladatoknak szól: a processzormagok közötti versengés szintjétől az írásért az egy celláig memória olyan elosztott rendszerekre, amelyek hibatűrő és konzisztens módon szeretnék replikálni állapotukat több szerveren.
01 https://gitlab.com/Lipovsky/shad-tpcc-course-2019/blob/master/lectures/syllabus.md
vagy
Menj nyelv
01 Bevezetés. Tanfolyami program. Beszámoló a tanfolyamról, értékelési szempontok. Tervezési filozófia. ha, vált, for. Helló Világ. Parancssori argumentumok. Szavak száma. Animált gif. URL lekérése. URL egyidejű lekérése. Web szerver. Tour of go. Helyi IDE beállítás. gofmt. goimport. szöszölés
02 Alapvető nyelvi szerkezetek. nevek, deklarációk, változók, hozzárendelések. típusú deklarációk. csomagok és fájlok. hatálya. Nulla érték. Memóriakiosztás. Stack vs kupac. Alapvető adattípusok. Állandók. Összetett adattípusok. Tömbök. Szeletek. Térképek. Struktúrák. JSON. szöveg/sablon. karakterlánc és []byte. Munka Unicode-dal. Unicode helyettesítő karakter. Funkciók. Változó számú argumentumú függvények. Névtelen funkciók. Hibák.
03 Módszerek. Érték vevő vs mutató vevő. Beágyazás. Módszer értéke. Egységbezárás. Interfészek. Interfészek mint szerződések. io. Író, io. Olvasó és megvalósításaik. fajta. Felület. hiba. http. Kezelő. Interfészek mint felsorolások. Típus állítás. Típuskapcsoló. Minél nagyobb a felület, annál gyengébb az absztrakció. Hiba a feldolgozásban. pánik, halasztás, felépülés. hibákat.{Unwrap, Is, As}. fmt. Errorf. %w.
04 Gorutinok és csatornák. óra szerver. echo szerver. Csatorna mérete. Blokkolás és nem blokkoló olvasás. válasszon kijelentést. Csatorna axiómák. idő. Után. idő. NewTicker. Csővezeték minta. Törlés. Párhuzamos hurok. szinkronizál. WaitGroup. Hibakezelés a párhuzamos kódban. errgroup. Csoport. Egyidejű webrobot. Egyidejű címtárbejárás.
05 Haladó tesztelés. Altesztek. tesztelés. B. (T).Logf. (T).Skipf. (T).FailNow. tesztelés. Short(), tesztjelzők. Gúnyok generálása. tanúskodik/{követel, állít}. tanúskodik/lakosztály. Tesztberendezés. Integrációs tesztek. Goroutine szivárgásérzékelő. TestingMain. Lefedettség. A benchmarkok összehasonlítása.
06 Speciális tesztelés. Altesztek. tesztelés. B. (T).Logf. (T).Skipf. (T).FailNow. tesztelés. Short(), tesztjelzők. Gúnyok generálása. tanúskodik/{követel, állít}. tanúskodik/lakosztály. Tesztberendezés. Integrációs tesztek. Goroutine szivárgásérzékelő. TestingMain. Lefedettség. A benchmarkok összehasonlítása.
07 A csomag kontextusa. Kérelemre kiterjedő adatok átadása. http köztes szoftver. chi. Router. Felkérés visszavonása. Speciális párhuzamossági minták. Aszinkron gyorsítótár. Kecses szerverleállás. kontextus. Időtúllépéssel. Kötegeltetés és törlés.
08 adatbázis/sql, sqlx, adatbázisokkal való munka, redis.
09 Reflexió. tükrözik. Írja be és tükrözze. Érték. struct címkék. net/rpc. kódolás/gob. szinkronizál. Térkép. tükrözik. DeepEqual.
10 Package io, Reader és Writer implementáció a szabványos könyvtárból. Alacsony szintű programozás. nem biztonságos. Bináris csomag. bájtok. Puffer. cgo, syscall.
11 GC architektúra. Írási akadály. Stack növekedés. GC szünet. GOGC. szinkronizál. Medence. Goroutine ütemező. GOMACPROCS. Kiszivárgott szálak.
12 Szerszámozás. pprof. CPU és memória profilozás. Kereszt összeállítás. GOOS, GOARCH. CGO_ENABLED=0. Építsen címkéket. menj modulok. goddoc. x/elemzés. Kódgenerálás.
13 Hasznos könyvtárak. CLI alkalmazások kobrával. Protobuf és GRPC. zap naplózás.
Harmadik félév
Kötelező
Algoritmusok a külső memóriában
A kurzus megismerteti a hallgatókkal a számítógép RAM-jába nem férő adatokkal való munkavégzéshez szükséges algoritmusok felépítésének alapelveit.
01 Algoritmusok a külső memóriában.
02 A gyorsítótárat figyelmen kívül hagyó algoritmusok.
03 Algoritmusok adatfolyam-feldolgozáshoz.
Elosztott rendszerek
Ajánlott speciális tanfolyamok
A kriptográfiai rendszerek erőssége
01 A modern kriptográfia alapvető megközelítései és elvei. Az ellenfél modellje, az erő fogalmának formalizálása, az erő felmérésének problémája és a kapcsolódó problémák, felosztás primitívekre és protokollokra, egy kriptográfiai rendszer „életének” szakaszai.
02 Titoktartás. A titoktartás mindennapi definíciói, formalizálási megközelítések (az ellenség információelméleti modellje, KR, PR, LOR, ROR modellek, IND, CPA, CCA), szimmetrikus titkosítási rendszer, komplexitáselméleti információk alkalmazása a kapcsolat meghatározására modellek. Kapcsolatok alapvető ellenfél modellek között a titkosítási rendszerek erősségének felméréséhez.
03 A titkosítási rendszerek kiépítésének megközelítései. Építés a semmiből. Blokkrejtjeleken alapuló konstrukciók, blokk-rejtjel definíciója, főbb jellemzői, konstrukciós megközelítései és tulajdonságai. PRP és PRF modellek. A születésnapi probléma paradoxona. Lemma az ellenállás közötti kapcsolatról a PRF és a PRP modellekben.
04 Titkosítási módok. Alapvető titkosítási módok: ECB, CBC, CFB, OFB, CTR. Alapvető teljesítménytulajdonságok. A CTR tartóssága LOR-CPA-ban, az EKB instabilitása LOR-CPA-ban. Az alapmódok instabilitása a CCA modellekben.
05 Integritás. Az integritás fogalmának meghatározása. A formalizálás megközelítései (UF-CMA modell, diszkriminációs feladaton alapuló modellek, PRF modell). Üzenet hitelesítési kódok és funkciók imitált betétek generálásához. Blokk titkosításon alapuló tervek: CBC-MAC, XCBC, TMAC, OMAC. Sebezhető módok.
06 Hash függvények. Definíció, alapvető tulajdonságok, konstrukciós megközelítések, formalizálás és kapcsolódó problémák. Példák a hash függvények használatára: jelszó kivonatolás, entrópia kivonás. Ütközések és előképek konstruálása alacsony számosságú halmazokból.
07 HMAC, KDF, PRF, DRNG áramkörök. HMAC diagram, alapvető lépések az ellenállási minősítés megszerzéséhez. Kulcsdiverzifikáció és a kulcsok szétválasztásának elve, KDF és PRF sémák. Pseudorandom generátor, DRNG áramkörök.
08 Kulcsbetöltés. Kulcsbetöltési probléma. A kulcsok terhelésének csökkentésének fő módszerei a külső és belső kulcskonverziók. Párhuzamos és soros újrakulcsolási sémák, alaptulajdonságok. Kulcsfa. Belső kulcscsere és CTR-ACPKM mód.
09 Titkosítás utánzásvédelemmel. Probléma megfogalmazása. Általános szerkezetek (EtA, AtE, A&E) és tulajdonságaik. Példák sebezhető módokra, amelyek egyetlen kulcs használatával biztosítják a titkosságot és az integritást. AEAD titkosítási módok: GCM, MGM.
10 Biztonságos kommunikációs csatorna. A biztonságos kommunikációs csatorna fogalma: csatornák típusai, alapvető tulajdonságai (az adatfolyam integritása és titkossága). Példák sebezhető protokollokra. Rögzítse a TLS 1.3 protokollt.
Negyedik félév
Választani
A párhuzamosság elmélete és gyakorlata
A kurzus a legtágabb értelemben vett versenyképes rendszereknek és feladatoknak szól: a processzormagok közötti versengés szintjétől az írásért az egy celláig memória olyan elosztott rendszerekre, amelyek hibatűrő és konzisztens módon szeretnék replikálni állapotukat több szerveren.
01 https://gitlab.com/Lipovsky/shad-tpcc-course-2019/blob/master/lectures/syllabus.md
vagy
Menj nyelv
01 Bevezetés. Tanfolyami program. Beszámoló a tanfolyamról, értékelési szempontok. Tervezési filozófia. ha, vált, for. Helló Világ. Parancssori argumentumok. Szavak száma. Animált gif. URL lekérése. URL egyidejű lekérése. Web szerver. Tour of go. Helyi IDE beállítás. gofmt. goimport. szöszölés
02 Alapvető nyelvi szerkezetek. nevek, deklarációk, változók, hozzárendelések. típusú deklarációk. csomagok és fájlok. hatálya. Nulla érték. Memóriakiosztás. Stack vs kupac. Alapvető adattípusok. Állandók. Összetett adattípusok. Tömbök. Szeletek. Térképek. Struktúrák. JSON. szöveg/sablon. karakterlánc és []byte. Munka Unicode-dal. Unicode helyettesítő karakter. Funkciók. Változó számú argumentumú függvények. Névtelen funkciók. Hibák.
03 Módszerek. Érték vevő vs mutató vevő. Beágyazás. Módszer értéke. Egységbezárás. Interfészek. Interfészek mint szerződések. io. Író, io. Olvasó és megvalósításaik. fajta. Felület. hiba. http. Kezelő. Interfészek mint felsorolások. Típus állítás. Típuskapcsoló. Minél nagyobb a felület, annál gyengébb az absztrakció. Hiba a feldolgozásban. pánik, halasztás, felépülés. hibákat.{Unwrap, Is, As}. fmt. Errorf. %w.
04 Gorutinok és csatornák. óra szerver. echo szerver. Csatorna mérete. Blokkolás és nem blokkoló olvasás. válasszon kijelentést. Csatorna axiómák. idő. Után. idő. NewTicker. Csővezeték minta. Törlés. Párhuzamos hurok. szinkronizál. WaitGroup. Hibakezelés a párhuzamos kódban. errgroup. Csoport. Egyidejű webrobot. Egyidejű címtárbejárás.
05 Haladó tesztelés. Altesztek. tesztelés. B. (T).Logf. (T).Skipf. (T).FailNow. tesztelés. Short(), tesztjelzők. Gúnyok generálása. tanúskodik/{követel, állít}. tanúskodik/lakosztály. Tesztberendezés. Integrációs tesztek. Goroutine szivárgásérzékelő. TestingMain. Lefedettség. A benchmarkok összehasonlítása.
06 Egyidejűség a megosztott memóriával. szinkronizál. Mutex. szinkronizál. RWMutex. szinkronizál. Kond. atom szinkronizál. Egyszer. Versenydetektor. Aszinkron gyorsítótár. Munka az adatbázissal. adatbázis/sql. sqlx.
07 A csomag kontextusa. Kérelemre kiterjedő adatok átadása. http köztes szoftver. chi. Router. Felkérés visszavonása. Speciális párhuzamossági minták. Aszinkron gyorsítótár. Kecses szerverleállás. kontextus. Időtúllépéssel. Kötegeltetés és törlés.
08 adatbázis/sql, sqlx, adatbázisokkal való munka, redis.
09 Reflexió. tükrözik. Írja be és tükrözze. Érték. struct címkék. net/rpc. kódolás/gob. szinkronizál. Térkép. tükrözik. DeepEqual.
10 Package io, Reader és Writer implementáció a szabványos könyvtárból. Alacsony szintű programozás. nem biztonságos. Bináris csomag. bájtok. Puffer. cgo, syscall.
11 GC architektúra. Írási akadály. Stack növekedés. GC szünet. GOGC. szinkronizál. Medence. Goroutine ütemező. GOMACPROCS. Kiszivárgott szálak.
12 Szerszámozás. pprof. CPU és memória profilozás. Kereszt összeállítás. GOOS, GOARCH. CGO_ENABLED=0. Építsen címkéket. menj modulok. goddoc. x/elemzés. Kódgenerálás.
13 Hasznos könyvtárak. CLI alkalmazások kobrával. Protobuf és GRPC. zap naplózás.
vagy
Adatbázis
01 Modern adatbázisok felületei: relációs, kulcsérték, dokumentum, gráf. Relációs algebra és SQL nyelv.
02 Munka lemezzel a klasszikus relációs DBMS-ben: oldalak, oldalkészlet, kiürítés a készletből.
03 SQL lekérdezések végrehajtása: kifejezések elemzése, tervezés, végrehajtás. Értelmezés és kódgenerálás LLVM segítségével.
04 Indexek a relációs DBMS-ben: indexek típusai, tárolási módszerek, felhasználás a lekérdezésekben.
05 Tranzakciók: ACID betűszó, elkülönítési szintek, tranzakciók végrehajtása zárakon és MVCC-n keresztül.
06 Katasztrófa utáni helyreállítás: napló, ellenőrző pontok, ARIES algoritmus.
07 Adattárolás a Log-Structured Merge Tree módszerrel.
08 Oszlop alapú DBMS: előnyei, jellemzői, adattömörítési algoritmusok.
09 Elosztott DBMS: felosztás, tranzakciók, lekérdezések végrehajtása.
10 DBMS található a fő memóriában. Adatstruktúrák a memórián belüli indexekhez.
vagy
Számítógépes hálózatok
01 Bevezetés a hálózati technológiákba. A hálózatok története, a hálózati protokollok, a hálózati interakció megszervezése peer-to-peer hálózatban és a peer-to-peer hálózatok összekapcsolása egymással.
02 Közlekedés. OSI/ISO hálózati modell. TCP, hálózati kapcsolat létrehozása, TCP és UDP összehasonlítása. Tcpdump elemzés – bájtok repülnek, grafikonokat újraküldenek. Módszerek az adatáramlás vezérlésére egy TCP-munkamenetben. Különböző típusú TCP-munkamenetek és a továbbított adatok sávszélesség-kezelése csomaghálózatokban.
03 Útválasztás. Az útválasztás fogalma a hálózatokban. Statikus és dinamikus útválasztás. A dinamikus útválasztás alapjai. Dinamikus útválasztási protokoll - OSPF. Távolságvektoros útválasztási protokollok. A BGP útválasztási protokoll áttekintése - üzenettípusok, BGP attribútumok, az optimális útvonal kiválasztása a BGP-ben.
04 Az Internet működése: BGP és DNS. Internet útválasztás. A DNS-protokoll áttekintése.
05 Hálózatok nagy adatközpontokban. Az adatközponti hálózatok architektúrájának jellemzői. Az adatközponti hálózatokra vonatkozó követelmények. CLOS architektúra adatközponti hálózatokhoz.
06 Késések a hálózatokban. A nagy gerinchálózatok kiépítésének jellemzői. A gerinchálózaton keresztüli adatátvitel késésének okai.
07 Internetes szolgáltatások méretezése és elérhetősége. Terheléselosztási technológiák és szolgáltatási architektúra.
08 MPLS és SR, Hálózati programozhatóság. MPLS és Segment Routing technológiák gerinchálózatok kiépítéséhez. Az MPLS technológia célja, a címkecseréhez használt protokollok.
09 A hálózati eszközök működési elvei. Router architektúra, hálózati eszközökön belüli hálózati forgalom feldolgozásának jellemzői.
10 Felhők. Software Defined Networking Fundamentals – Szoftver által meghatározott hálózatok felépítésére használt protokollok. Virtualizációs platformok és hálózati infrastruktúra integrációja.
vagy
Kriptográfiai protokollok
01 Az aszimmetrikus kriptográfia alapötletei. A fő különbség az aszimmetrikus kriptográfia és a szimmetrikus kriptográfia között. Főbb ötletek: protokoll megosztott kulcs generálására, nyilvános kulcsú titkosítás, elektronikus aláírás (megoldandó problémák, biztonsági tulajdonságok intuitív megértése). Konkrét kriptográfiai sémák: Diffie-Hellman protokoll, ElGamal és RSA titkosítási sémák, ElGamal és RSA aláírások. Az aszimmetrikus sémák alapvető problémája a nyilvános kulcsba vetett bizalom.
02 Az alapvető aszimmetrikus titkosítási sémák erőssége. Az ellenállás formális meghatározása: UF-CMA, IND-CPA, DLP, CDH, DDH modellek. A köztük lévő kapcsolatok. Az ElGamal titkosítási séma erőssége. Az RSA aláírási séma instabilitása hash függvény használata nélkül.
03 Tudjon meg többet az aszimmetrikus titkosításról. Lampart aláírása, Merkle diagramja. DSKS támadás.
04 Az aszimmetrikus kriptográfia algebrai és számelméleti alapjai. Véges csoportok, ciklikus csoportok, csoportelem sorrendje. Diszkrét logaritmus probléma (DLP). Véges mezők multiplikatív csoportjai. Alapvető információk az elliptikus görbékről.
05 Elliptikus görbék. Hasse tétele. Pontok összeadása elliptikus görbén. Pontok csoportja egy elliptikus görbén. Aláírási séma GOST R 34.10-2012.
06 Diszkrét logaritmus. Diszkrét logaritmus-algoritmusok (Pollard-féle Rho módszer, illesztési módszer, Polig-Hellman módszer, indexszámítási módszer).
07 PKI technológia. A nyilvános kulcsú infrastruktúra (PKI) alapelvei és fogalmai. Tanúsítvány, CA, CRL, OCSP, bizalmi terület.
08 TLS protokoll. A TLS protokoll története. Protokoll felépítés, alapvető működési elvek. Orosz kriptográfiai algoritmusokon alapuló TLS protokoll kriptográfiai csomagok.
09 Az AKE protokollok felépítésének alapjai. Az AKE protokoll fogalma. Céltulajdonságok. Az építkezés alapvető megközelítései.
10 Biztonságos kulcstároló. A privát kulcsok biztonságos használatának problémája. Kulcshordozók, nem eltávolítható kulcsok. Az ellenfél jelenlétének problémája a csatornában, a PAKE család protokolljai.
11 A blokklánc technológia alapfogalmai. Az összehangolt decentralizált interakció feladata. A biztonság fogalmának alapfogalmai. Biztonsági megközelítések.
12 Kvantumtechnológiák alapelvei és alkalmazásaik a kriptográfiában