Big Data Infrastructure - besplatni tečaj Škole analize podataka, 4 semestra, Datum: 05.12.2023.
Miscelanea / / December 08, 2023
Za one koji vole algoritme, rad s podacima i uživaju u programiranju, ali ne bi željeli svoj život povezati sa strojnim učenjem.
Algoritmi, programiranje, dizajn datotečnih sustava, diskova, mreža i procesora, kao i distribuiranih sustava.
U stvaranju i podršci učinkovitih i pouzdanih distribuiranih sustava za pohranu i obradu velikih podataka.
Svaki student mora uspješno odslušati najmanje tri kolegija tijekom semestra. Na primjer, ako su dva od njih u glavnom programu, tada morate odabrati jedan od posebnih tečajeva.
Znanje se provjerava prvenstveno domaćim zadaćama – ispiti i kolokviji se provode samo iz pojedinih predmeta.
Prvi semestar
Obavezno
Algoritmi i strukture podataka, 1. dio
01 Složenost i računalni modeli. Analiza knjigovodstvenih vrijednosti (početak)
02 Analiza knjigovodstvenih vrijednosti (kraj)
03 Algoritmi za spajanje i brzo sortiranje
04 Redna statistika. Hrpe (početak)
05 Hrpe (kraj)
06 Raspršivanje
07 Stabla pretraživanja (početak)
08 Stabla pretraživanja (nastavak)
09 Traženje stabala (kraj). Sustav disjunktnih skupova
10 Ciljevi RMQ i LCA
11 Strukture podataka za geometrijsko pretraživanje
12 Problem dinamičke povezanosti u neusmjerenom grafu
Arhitektura računala i operativni sustavi
01 UNIX i programiranje u C-u: naredbeni red, kontrola procesa, kanali, signali. Implementacija ljuske naredbenog retka.
02 x86 asembler: aritmetika, prijelazi, uvjeti i pozivi funkcija. Stog, pomicanje prema gore.
03 Povezivanje programa i ELF formata. Dinamičko povezivanje.
04 Koncept konteksta i tijek izvršenja. Implementacija laganih niti.
05 Preemptivni multitasking: podrška iz x86 procesora i implementacija procesa u UNIX kernelu.
06 Višejezgrena arhitektura: koherencija predmemorije i memorijski modeli. Primitive sinkronizacije u višenitnim programima.
07 Zakazivanje procesa na jednoj i više jezgri.
08 Vanjska memorija: tvrdi diskovi i solid state diskovi. Principi rada datotečnih sustava.
09 Virtualizacija: hardver i softver. Binarno emitiranje.
C++ jezična obuka, 1. dio
C++ je moćan jezik s bogatim nasljeđem. Za one koji su tek krenuli putem svladavanja ovog jezika, vrlo se lako izgubiti u obilju tehnika i tehnika nastalih u proteklih 30 godina. Predmet podučava "Modern C++" - suvremeni podskup jezika (standardi 11, 14 i 17). Puno se pažnje posvećuje alatima i bibliotekama – stvarima koje nisu dio jezika, ali bez kojih neće biti moguće izgraditi velik i složen projekt.
01 Uvod u C++.
02 Konstante. Pokazivači i poveznice. Prijenos argumenata funkciji.
03 Nastava.
04 Dinamičko upravljanje memorijom.
05 Varijable, pokazivači i reference.
06 Upravljanje memorijom, pametni pokazivači, RAII.
07 Standardna biblioteka predložaka.
08 Nasljeđivanje i virtualne funkcije.
09 Rješavanje grešaka.
10 Dizajn uzoraka.
11 Imenski prostori Semantika premještanja Savršeno prosljeđivanje.
12 Predstavljanje struktura i klasa u memoriji. Usklađivanje podataka. Pokazivači na članove klase/metode. Različiti predlošci.
Drugi termin
Obavezno
Algoritmi i strukture podataka, 2. dio
01 Zaobilaznica u šir. Prvo obilaženje dubine (početak)
02 Prolaz dubine (nastavak)
03 Obilazak u dubinu (kraj). 2-reza
04 Traženje najkraćih puteva (početak)
05 Pronalaženje najkraćih putova (nastavak)
06 Minimalna razapeta stabla
07 Minimalni rezovi. Traži podstringove (početak)
08 Traženje podnizova (nastavak)
09 Traženje podnizova (kraj)
10 stabala sufiksa (početak)
11 Stabla sufiksa (završetak). Nizovi sufiksa (početak)
12 nizova sufiksa (završetak)
13 Najduži zajednički podnizovi. Približno pretraživanje podniza.
C++ jezična obuka, 2. dio
Drugi dio tečaja C++, koji pokriva napredne teme i jezične sposobnosti.
01 Višenitno programiranje. Sinkronizacija niti pomoću muteksa i uvjetnih varijabli.
02 Atomske varijable. C++ memorijski model. Primjeri struktura podataka bez zaključavanja.
03 Napredne tehnike meta-programiranja u C++. Metafunkcije, SFINAE, pojmovi.
04 Natjecateljsko programiranje, interakcija s mrežom.
05 llvm arhitektura. Rad s C++ stablom parse. Razvoj alata za analizu C++ koda.
Izabrati od
Teorija i praksa konkurentnosti
Tečaj je posvećen kompetitivnim sustavima i zadacima u najširem smislu: od razine konkurencije između procesorskih jezgri za pisanje do jedne ćelije memorije distribuiranim sustavima koji žele replicirati svoje stanje na više poslužitelja na način tolerantan na pogreške i dosljedan.
01 https://gitlab.com/Lipovsky/shad-tpcc-course-2019/blob/master/lectures/syllabus.md
ili
Go jezik
01 Uvod. Program tečaja. Izvještavanje o kolegiju, kriteriji vrednovanja. Filozofija dizajna. ako, prebaciti, za. Pozdrav svijete. Argumenti naredbenog retka. Brojanje riječi. Animirani gif. Dohvaćanje URL-a. Istovremeno dohvaćanje URL-a. Web poslužitelj. Tour of go. Lokalna IDE postavka. gofmt. goimports. linting
02 Osnovne jezične strukture. imena, deklaracije, varijable, dodjele. deklaracije tipa. paketi i datoteke. djelokrug. Nulta vrijednost. Dodjela memorije. Stog protiv gomile. Osnovni tipovi podataka. Konstante. Kompozitni tipovi podataka. Nizovi. Kriške. Karte. Strukture. JSON. tekst/predložak. niz i []bajt. Rad s unicodeom. Unicode zamjenski znak. Funkcije. Funkcije s promjenjivim brojem argumenata. Anonimne funkcije. Greške.
03 Metode. Primatelj vrijednosti protiv primatelja pokazivača. Ugrađivanje. Vrijednost metode. Enkapsulacija. sučelja. Sučelja kao ugovori. io. Pisac, io. Reader i njihove implementacije. vrsta. Sučelje. greška. http. rukovatelj. Sučelja kao enumeracije. Tipska tvrdnja. Vrsta prekidača. Što je veće sučelje, to je apstrakcija slabija. Obrada pogreške. paničariti, odgoditi, oporaviti se. pogreške.{Unwrap, Is, As}. fmt. Errorf. %w.
04 Goroutines i kanali. poslužitelj sata. echo server. Veličina kanala. Blokirajuće i neblokirajuće čitanje. odaberite izjavu. Aksiomi kanala. vrijeme. Nakon. vrijeme. NewTicker. Uzorak cjevovoda. Otkazivanje. Paralelna petlja. sinkronizacija WaitGroup. Obrada grešaka u paralelnom kodu. pogrešna grupa. Skupina. Istovremeni alat za indeksiranje weba. Istodobno obilaženje direktorija.
05 Napredno testiranje. Podtestovi. testiranje. B. (T).Logf. (T).Skipf. (T).FailNow. testiranje. Short(), zastavice za testiranje. Generacija rugalica. svjedočiti/{zahtijevati, tvrditi}. svjedočiti/svita. Ispitni uređaj. Integracijski testovi. Goroutine detektor curenja. TestingMain. Pokrivenost. Usporedba mjerila.
06 Napredno testiranje. Podtestovi. testiranje. B. (T).Logf. (T).Skipf. (T).FailNow. testiranje. Short(), zastavice za testiranje. Generacija rugalica. svjedočiti/{zahtijevati, tvrditi}. svjedočiti/svita. Ispitni uređaj. Integracijski testovi. Goroutine detektor curenja. TestingMain. Pokrivenost. Usporedba mjerila.
07 Kontekst paketa. Prosljeđivanje podataka u opsegu zahtjeva. http posredni softver. chi. Usmjerivač. Zatraži otkazivanje. Napredni obrasci istovremenosti. Asinkrona predmemorija. Graciozno gašenje poslužitelja. kontekst. WithTimeout. Grupiranje i otkazivanje.
08 baza podataka/sql, sqlx, rad s bazama podataka, redis.
09 Odraz. odražavati. Tipkajte i razmislite. Vrijednost. struct oznake. net/rpc. kodiranje/gob. sinkronizacija Karta. odražavati. DeepEqual.
10 implementacija paketa io, Reader i Writer iz standardne knjižnice. Programiranje niske razine. nesiguran. Binarni paket. bajtova. Pufer. cgo, sistemski poziv.
11 GC arhitektura. Zapreka za pisanje. Rast hrpe. GC pauza. GOGC. sinkronizacija Bazen. Goroutine planer. GOMACPROCS. Procurile niti.
12 Go tooling. pprof. CPU i profiliranje memorije. Unakrsna kompilacija. GOOS, GOARCH. CGO_ENABLED=0. Izradite oznake. go moduli. godoc. x/analiza. Generiranje koda.
13 Korisne knjižnice. CLI aplikacije s cobrom. Protobuf i GRPC. zap sječa.
Treći semestar
Obavezno
Algoritmi u vanjskoj memoriji
Predmet upoznaje studente s osnovnim principima konstruiranja algoritama za rad s podacima koji ne stanu u RAM računala.
01 Algoritmi u vanjskoj memoriji.
02 Algoritmi bez predmemorije.
03 Algoritmi za obradu toka podataka.
Distribuirani sustavi
Preporučeni posebni tečajevi
Snaga kriptografskih sustava
01 Osnovni pristupi i principi suvremene kriptografije. Suparnički model, formalizacija pojma snage, problem procjene snage i srodni problemi, podjela na primitive i protokole, faze “života” kriptografskog sustava.
02 Povjerljivost. Svakodnevne definicije povjerljivosti, pristupi formalizaciji (informacijsko-teorijski model neprijatelja, modeli KR, PR, LOR, ROR, IND, CPA, CCA), simetrični sustav šifriranja, primjena informacija teorije složenosti za određivanje odnosa između modeli. Odnosi između osnovnih suparničkih modela za procjenu snage enkripcijskih sustava.
03 Pristupi izgradnji sustava šifriranja. Gradnja od nule. Konstrukcije temeljene na blok šiframa, definicija blok šifre, glavne karakteristike, pristupi konstrukciji i svojstva. Modeli PRP i PRF. Paradoks rođendanskog problema. Lema o odnosu otpora u PRF i PRP modelima.
04 Načini šifriranja. Osnovni načini šifriranja: ECB, CBC, CFB, OFB, CTR. Osnovna svojstva izvedbe. Trajnost CTR u LOR-CPA, nestabilnost ECB u LOR-CPA. Nestabilnost osnovnih modova u CCA modelima.
05 Integritet. Definicija pojma integriteta. Pristupi formalizaciji (UF-CMA model, modeli temeljeni na zadatku diskriminacije, PRF model). Kodovi za provjeru autentičnosti poruka i funkcije za generiranje imitiranih umetaka. Dizajni temeljeni na blok šiframa: CBC-MAC, XCBC, TMAC, OMAC. Ranjivi načini rada.
06 Hash funkcije. Definicija, osnovna svojstva, pristupi konstrukciji, formalizacija i srodni problemi. Primjeri korištenja hash funkcija: hashiranje lozinki, ekstrakcija entropije. Konstruiranje sudara i praslika iz skupova niske kardinalnosti.
07 HMAC, KDF, PRF, DRNG krugovi. HMAC dijagram, osnovni koraci za dobivanje ocjene otpornosti. Diverzifikacija ključeva i načelo razdvajanja ključeva, KDF i PRF sheme. Pseudoslučajni generator, DRNG sklopovi.
08 Opterećenje ključa. Problem s opterećenjem ključa. Glavne metode za smanjenje opterećenja ključa su vanjske i unutarnje konverzije ključa. Paralelne i serijske sheme ponovnog ključa, osnovna svojstva. Stablo ključeva. Interna promjena ključa i CTR-ACPKM mod.
09 Enkripcija sa zaštitom od imitacije. Formulacija problema. Opće strukture (EtA, AtE, A&E) i njihova svojstva. Primjeri ranjivih načina za osiguravanje povjerljivosti i integriteta pomoću jednog ključa. AEAD načini šifriranja: GCM, MGM.
10 Siguran komunikacijski kanal. Pojam sigurnog komunikacijskog kanala: vrste kanala, osnovna svojstva (integritet i povjerljivost protoka podataka). Primjeri ranjivih protokola. Snimajte TLS 1.3 protokol.
Četvrti semestar
Izabrati od
Teorija i praksa konkurentnosti
Tečaj je posvećen kompetitivnim sustavima i zadacima u najširem smislu: od razine konkurencije između procesorskih jezgri za pisanje do jedne ćelije memorije distribuiranim sustavima koji žele replicirati svoje stanje na više poslužitelja na način tolerantan na pogreške i dosljedan.
01 https://gitlab.com/Lipovsky/shad-tpcc-course-2019/blob/master/lectures/syllabus.md
ili
Go jezik
01 Uvod. Program tečaja. Izvještavanje o kolegiju, kriteriji vrednovanja. Filozofija dizajna. ako, prebaciti, za. Pozdrav svijete. Argumenti naredbenog retka. Brojanje riječi. Animirani gif. Dohvaćanje URL-a. Istovremeno dohvaćanje URL-a. Web poslužitelj. Tour of go. Lokalna IDE postavka. gofmt. goimports. linting
02 Osnovne jezične strukture. imena, deklaracije, varijable, dodjele. deklaracije tipa. paketi i datoteke. djelokrug. Nulta vrijednost. Dodjela memorije. Stog protiv gomile. Osnovni tipovi podataka. Konstante. Kompozitni tipovi podataka. Nizovi. Kriške. Karte. Strukture. JSON. tekst/predložak. niz i []bajt. Rad s unicodeom. Unicode zamjenski znak. Funkcije. Funkcije s promjenjivim brojem argumenata. Anonimne funkcije. Greške.
03 Metode. Primatelj vrijednosti protiv primatelja pokazivača. Ugrađivanje. Vrijednost metode. Enkapsulacija. sučelja. Sučelja kao ugovori. io. Pisac, io. Reader i njihove implementacije. vrsta. Sučelje. greška. http. rukovatelj. Sučelja kao enumeracije. Tipska tvrdnja. Vrsta prekidača. Što je veće sučelje, to je apstrakcija slabija. Obrada pogreške. paničariti, odgoditi, oporaviti se. pogreške.{Unwrap, Is, As}. fmt. Errorf. %w.
04 Goroutines i kanali. poslužitelj sata. echo server. Veličina kanala. Blokirajuće i neblokirajuće čitanje. odaberite izjavu. Aksiomi kanala. vrijeme. Nakon. vrijeme. NewTicker. Uzorak cjevovoda. Otkazivanje. Paralelna petlja. sinkronizacija WaitGroup. Obrada grešaka u paralelnom kodu. pogrešna grupa. Skupina. Istovremeni alat za indeksiranje weba. Istodobno obilaženje direktorija.
05 Napredno testiranje. Podtestovi. testiranje. B. (T).Logf. (T).Skipf. (T).FailNow. testiranje. Short(), zastavice za testiranje. Generacija rugalica. svjedočiti/{zahtijevati, tvrditi}. svjedočiti/svita. Ispitni uređaj. Integracijski testovi. Goroutine detektor curenja. TestingMain. Pokrivenost. Usporedba mjerila.
06 Podudarnost sa zajedničkom memorijom. sinkronizacija Mutex. sinkronizacija RWMutex. sinkronizacija Cond. atomski sinkronizacija Jednom. Detektor utrke. Asinkrona predmemorija. Rad s bazom podataka. baza podataka/sql. sqlx.
07 Kontekst paketa. Prosljeđivanje podataka u opsegu zahtjeva. http posredni softver. chi. Usmjerivač. Zatraži otkazivanje. Napredni obrasci istovremenosti. Asinkrona predmemorija. Graciozno gašenje poslužitelja. kontekst. WithTimeout. Grupiranje i otkazivanje.
08 baza podataka/sql, sqlx, rad s bazama podataka, redis.
09 Odraz. odražavati. Tipkajte i razmislite. Vrijednost. struct oznake. net/rpc. kodiranje/gob. sinkronizacija Karta. odražavati. DeepEqual.
10 implementacija paketa io, Reader i Writer iz standardne knjižnice. Programiranje niske razine. nesiguran. Binarni paket. bajtova. Pufer. cgo, sistemski poziv.
11 GC arhitektura. Zapreka za pisanje. Rast hrpe. GC pauza. GOGC. sinkronizacija Bazen. Goroutine planer. GOMACPROCS. Procurile niti.
12 Go tooling. pprof. CPU i profiliranje memorije. Unakrsna kompilacija. GOOS, GOARCH. CGO_ENABLED=0. Izradite oznake. go moduli. godoc. x/analiza. Generiranje koda.
13 Korisne knjižnice. CLI aplikacije s cobrom. Protobuf i GRPC. zap sječa.
ili
Baza podataka
01 Sučelja suvremenih baza podataka: relacijska, ključ-vrijednost, dokument, graf. Relacijska algebra i SQL jezik.
02 Rad s diskom u klasičnom relacijskom DBMS-u: stranice, skup stranica, izbacivanje iz bazena.
03 Izvršavanje SQL upita: parsiranje izraza, planiranje, izvršenje. Tumačenje i generiranje koda korištenjem LLVM.
04 Indeksi u relacijskim DBMS-ovima: vrste indeksa, metode pohrane, korištenje u upitima.
05 Transakcije: ACID akronim, razine izolacije, implementacija transakcija kroz brave i MVCC.
06 Oporavak od katastrofe: dnevnik, kontrolne točke, ARIES algoritam.
07 Pohranjivanje podataka metodom log-Structured Merge Tree.
08 DBMS temeljen na stupcima: prednosti, značajke, algoritmi za kompresiju podataka.
09 Distribuirani DBMS: dijeljenje, transakcije, izvršavanje upita.
10 DBMS smješten u glavnoj memoriji. Strukture podataka za indekse u memoriji.
ili
Računalne mreže
01 Uvod u mrežne tehnologije. Povijest mreža, mrežni protokoli, organizacija mrežne interakcije u peer-to-peer mreži i međusobno povezivanje ravnopravnih mreža.
02 Transport. OSI/ISO mrežni model. TCP, uspostava mrežne veze, usporedba TCP i UDP. Tcpdump analiza – bajtovi u hodu, ponovno šalje grafove. Metode za kontrolu protoka podataka u TCP sesiji. Različite vrste TCP sesija i upravljanje propusnošću prijenosa podataka u paketnim mrežama.
03 Usmjeravanje. Pojam usmjeravanja u mrežama. Statičko i dinamičko usmjeravanje. Osnove dinamičkog usmjeravanja. Protokol dinamičkog usmjeravanja - OSPF. Protokoli za usmjeravanje vektora udaljenosti. Pregled BGP protokola usmjeravanja - vrste poruka, BGP atributi, izbor optimalne rute u BGP-u.
04 Kako internet radi: BGP i DNS. Internet usmjeravanje. Pregled DNS protokola.
05 Mreže u velikim podatkovnim centrima. Značajke arhitekture mreža podatkovnih centara. Zahtjevi za mreže podatkovnih centara. CLOS arhitektura za mreže podatkovnih centara.
06 Kašnjenja u mrežama. Značajke izgradnje velikih okosnica mreža. Razlozi kašnjenja u prijenosu podataka okosnicama mreža.
07 Skaliranje i dostupnost internetskih usluga. Tehnologije za uravnoteženje opterećenja i servisna arhitektura.
08 MPLS i SR, Programabilnost mreže. MPLS i Segment Routing tehnologije za izgradnju okosnica mreža. Namjena MPLS tehnologije, protokoli koji se koriste za razmjenu oznaka.
09 Principi rada mrežnih uređaja. Arhitektura usmjerivača, značajke obrade mrežnog prometa unutar mrežnih uređaja.
10 Oblaci. Osnove softverski definiranog umrežavanja - Protokoli koji se koriste za izgradnju softverski definiranih mreža. Integracija virtualizacijskih platformi i mrežne infrastrukture.
ili
Kriptografski protokoli
01 Osnovne ideje asimetrične kriptografije. Glavna razlika između asimetrične kriptografije i simetrične kriptografije. Glavne ideje: protokol za generiranje zajedničkog ključa, enkripcija s javnim ključem, elektronički potpis (problemi koje treba riješiti, intuitivno razumijevanje sigurnosnih svojstava). Specifične kriptografske sheme: Diffie-Hellmanov protokol, ElGamal i RSA sheme šifriranja, ElGamal i RSA potpisi. Temeljni problem s asimetričnim shemama je povjerenje u javni ključ.
02 Snaga osnovnih asimetričnih kriptografskih shema. Formalna definicija otpora: modeli UF-CMA, IND-CPA, DLP, CDH, DDH. Odnosi među njima. Snaga sheme šifriranja ElGamal. Nestabilnost RSA sheme potpisa bez korištenja hash funkcije.
03 Saznajte više o asimetričnoj kriptografiji. Lampartov potpis, Merkleov dijagram. Napad DSKS.
04 Algebarski i teorijski temelji asimetrične kriptografije. Konačne grupe, cikličke grupe, poredak elemenata grupe. Problem diskretnog logaritma (DLP). Multiplikativne grupe konačnih polja. Osnovni podaci o eliptičnim krivuljama.
05 Eliptične krivulje. Hasseov teorem. Zbrajanje točaka na eliptičnoj krivulji. Skupina točaka na eliptičkoj krivulji. Shema potpisa GOST R 34.10-2012.
06 Diskretni logaritam. Algoritmi diskretnog logaritma (Pollardova Rho metoda, metoda uparivanja, Polig-Hellmanova metoda, metoda izračuna indeksa).
07 PKI tehnologija. Osnovni principi i koncepti infrastrukture javnih ključeva (PKI). Certifikat, CA, CRL, OCSP, prostor povjerenja.
08 TLS protokol. Povijest TLS protokola. Struktura protokola, osnovni principi rada. Kriptografski paketi TLS protokola temeljeni na ruskim kriptografskim algoritmima.
09 Osnove izgradnje AKE protokola. Koncept AKE protokola. Ciljna svojstva. Osnovni pristupi gradnji.
10 Sigurno skladištenje ključeva. Problem sigurnog korištenja privatnih ključeva. Ključni mediji, ključevi koji se ne mogu ukloniti. Problem prisutnosti protivnika u kanalu, protokoli obitelji PAKE.
11 Osnovni koncepti blockchain tehnologije. Zadatak koordinirane decentralizirane interakcije. Osnovni pojmovi pojma sigurnosti. Sigurnosni pristupi.
12 Osnovni principi kvantnih tehnologija i njihove primjene u kriptografiji