Big Data Infrastructure - gratis kursus fra Skolen for Dataanalyse, 4 semestre, Dato: 5. december 2023.
Miscellanea / / December 08, 2023
For dem, der elsker algoritmer, arbejder med data og nyder programmering, men som ikke vil forbinde deres liv med maskinlæring.
Algoritmer, programmering, design af filsystemer, diske, netværk og processorer, samt distribuerede systemer.
I skabelsen og supporten af effektive og pålidelige distribuerede systemer til lagring og behandling af big data.
Hver studerende skal gennemføre mindst tre kurser i løbet af semesteret. Hvis der for eksempel er to af dem i hovedprogrammet, så skal du vælge et af specialkurserne.
Viden testes primært gennem lektier - eksamener og prøver gennemføres kun i nogle fag.
Første semester
Obligatorisk
Algoritmer og datastrukturer, del 1
01 Kompleksitet og beregningsmodeller. Analyse af regnskabsværdier (begyndelse)
02 Analyse af regnskabsværdier (slut)
03 Merge-Sort og Quick-Sort-algoritmer
04 Ordinalstatistik. Dynger (begyndelse)
05 Dynger (slut)
06 Hashing
07 Søg i træer (begyndelse)
08 Søg i træer (fortsat)
09 Søg i træer (slut). System af usammenhængende sæt
10 Mål for RMQ og LCA
11 Datastrukturer til geometrisk søgning
12 Problem med dynamisk forbindelse i en urettet graf
Computerarkitektur og operativsystemer
01 UNIX og programmering i C: kommandolinje, processtyring, kanaler, signaler. Implementering af en kommandolinjeskal.
02 x86 assembler: aritmetik, overgange, betingelser og funktionskald. Stak, bevæger sig op i stakken.
03 Sammenkædning af programmer og ELF-formatet. Dynamisk sammenkobling.
04 Begrebet kontekst og udførelsesflow. Implementering af letvægtstråde.
05 Forebyggende multitasking: understøttelse fra x86-processoren og implementering af processer i UNIX-kernen.
06 Multi-core arkitektur: cache-kohærens og hukommelsesmodeller. Synkroniseringsprimitiver i flertrådede programmer.
07 Planlægning af processer på én kerne og på mange kerner.
08 Ekstern hukommelse: harddiske og solid state-drev. Principper for drift af filsystemer.
09 Virtualisering: hardware og software. Binær udsendelse.
C++ sprogtræning, del 1
C++ er et stærkt sprog med en rig arv. For dem, der lige er gået ud på vejen til at mestre dette sprog, er det meget let at fare vild i den overflod af teknikker og teknikker, der er skabt gennem de sidste 30 år. Kurset underviser i "Modern C++" - en moderne delmængde af sproget (standard 11, 14 og 17). Der er meget opmærksomhed på værktøjer og biblioteker - ting, der ikke er en del af sproget, men uden hvilke det ikke vil være muligt at bygge et stort og komplekst projekt.
01 Introduktion til C++.
02 Konstanter. Pointer og links. Sende argumenter til en funktion.
03 Klasser.
04 Dynamisk hukommelsesstyring.
05 Variabler, pointer og referencer.
06 Hukommelsesstyring, smarte pointere, RAII.
07 Standard skabelonbibliotek.
08 Arv og virtuelle funktioner.
09 Fejlhåndtering.
10 Design mønstre.
11 Navnerum Flyt semantik Perfekt videresendelse.
12 Repræsentation af strukturer og klasser i hukommelsen. Datajustering. Henvisninger til klassemedlemmer/metoder. Variadiske skabeloner.
Anden periode
Obligatorisk
Algoritmer og datastrukturer, del 2
01 Bypass i bredden. Dybde første gennemløb (start)
02 Dybdegennemløb (fortsat)
03 Gennemgang i dybden (slut). 2-snit
04 Find korteste veje (begyndelse)
05 Find de korteste veje (fortsat)
06 Minimumspændende træer
07 Minimale snit. Søg efter understrenge (start)
08 Søg efter understrenge (fortsat)
09 Søg efter understrenge (slut)
10 suffikstræer (begyndelse)
11 Suffikstræer (afslutning). Suffiks arrays (start)
12 suffiks-arrays (afslutning)
13 Længste fælles understrenge. Omtrentlig understrengsøgning.
C++ sprogtræning, del 2
Anden del af C++ kurset, som dækker avancerede emner og sproglige muligheder.
01 Flertrådet programmering. Synkronisering af tråde ved hjælp af mutexes og betingelsesvariable.
02 Atomvariable. C++ hukommelsesmodel. Eksempler på låsefri datastrukturer.
03 Avancerede metaprogrammeringsteknikker i C++. Metafunktioner, SFINAE, koncepter.
04 Konkurrencedygtig programmering, interaktion med netværket.
05 llvm arkitektur. Arbejder med C++ parsetræet. Udvikling af værktøjer til analyse af C++ kode.
At vælge imellem
Teori og praksis for samtidighed
Kurset er helliget konkurrerende systemer og opgaver i bredeste forstand: fra konkurrenceniveauet mellem processorkerner til skrivning til én celle hukommelse til distribuerede systemer, der ønsker at replikere deres tilstand på tværs af flere servere på en fejltolerant og ensartet måde.
01 https://gitlab.com/Lipovsky/shad-tpcc-course-2019/blob/master/lectures/syllabus.md
eller
Gå sprog
01 Indledning. Kursusprogram. Rapportering om forløbet, evalueringskriterier. Design filosofi. hvis, skifte, for. Hej Verden. Kommandolinjeargumenter. Ordantal. Animeret gif. Henter URL. Henter URL samtidigt. Webserver. Tour of go. Lokal IDE opsætning. gofmt. goimport. fnug
02 Grundlæggende sprogstrukturer. navne, deklarationer, variabler, tildelinger. typeerklæringer. pakker og filer. omfang. Nul værdi. Hukommelsestildeling. Stack vs heap. Grundlæggende datatyper. Konstanter. Sammensatte datatyper. Arrays. Skiver. Kort. Strukturer. JSON. tekst/skabelon. streng og []byte. Arbejder med unicode. Unicode-erstatningstegn. Funktioner. Funktioner med et variabelt antal argumenter. Anonyme funktioner. Fejl.
03 Metoder. Værdimodtager vs pointermodtager. Indlejring. Metodeværdi. Indkapsling. Grænseflader. Grænseflader som kontrakter. io. Forfatter, io. Reader og deres implementeringer. sortere. Interface. fejl. http. Handler. Grænseflader som opregninger. Type påstand. Type kontakt. Jo større grænseflade, jo svagere abstraktion. Fejl ved behandling. panik, udskyde, komme sig. fejl.{Unwrap, Is, As}. fmt. Fejl. % vægt.
04 Goroutiner og kanaler. ur server. ekko server. Kanalstørrelse. Blokerende og ikke-blokerende læsning. vælg erklæring. Kanalaksiomer. tid. Efter. tid. NewTicker. Rørledningsmønster. Aflysning. Parallel sløjfe. synkronisere. Ventegruppe. Fejlhåndtering i parallel kode. fejlgruppe. Gruppe. Samtidig webcrawler. Samtidig kataloggennemgang.
05 Avanceret test. Delprøver. afprøvning. B. (T). Logf. (T). Skipf. (T). FejlNu. afprøvning. Short(), tester flag. Generation af håner. vidne/{kræve, hævde}. vidne/suite. Test armatur. Integrationstest. Goroutine lækagedetektor. TestingMain. Dækning. Sammenligning af benchmarks.
06 Avanceret test. Delprøver. afprøvning. B. (T). Logf. (T). Skipf. (T). FejlNu. afprøvning. Short(), tester flag. Generation af håner. vidne/{kræve, hævde}. vidne/suite. Test armatur. Integrationstest. Goroutine lækagedetektor. TestingMain. Dækning. Sammenligning af benchmarks.
07 Pakkesammenhæng. Sender data med anmodningsomfang. http middleware. chi. Router. Bede om afmeldelse. Avancerede samtidighedsmønstre. Asynkron cache. Yndefuld servernedlukning. sammenhæng. Med Timeout. Batching og annullering.
08 database/sql, sqlx, arbejder med databaser, redis.
09 Refleksion. afspejle. Skriv og reflekter. Værdi. struct tags. net/rpc. kodning/gob. synkronisere. Kort. afspejle. DeepEqual.
10 Pakke io, Reader og Writer implementeringer fra standardbiblioteket. Programmering på lavt niveau. usikre. Pakke binær. bytes. Buffer. cgo, syscall.
11 GC arkitektur. Skriv barriere. Stakvækst. GC pause. GOGC. synkronisere. Pool. Goroutine skemalægger. GOMACPROCS. Lækkede tråde.
12 Gå til værktøj. pprof. CPU og hukommelsesprofilering. Krydskompilering. GOOS, GOARCH. CGO_ENABLED=0. Byg tags. gå moduler. godoc. x/analyse. Kodegenerering.
13 Nyttige biblioteker. CLI applikationer med cobra. Protobuf og GRPC. zap-logning.
Tredje semester
Obligatorisk
Algoritmer i ekstern hukommelse
Kurset introducerer eleverne til de grundlæggende principper for at konstruere algoritmer til at arbejde med data, der ikke passer ind i computerens RAM.
01 Algoritmer i ekstern hukommelse.
02 Cache-uvidende algoritmer.
03 Algoritmer til behandling af streamdata.
Distribuerede systemer
Anbefalede specialkurser
Styrken af kryptografiske systemer
01 Grundlæggende tilgange og principper for moderne kryptografi. Modstandsmodellen, formalisering af styrkebegrebet, problemet med at vurdere styrke og relaterede problemer, opdeling i primitiver og protokoller, stadier af "livet" af et kryptografisk system.
02 Fortrolighed. Hverdagsdefinitioner af fortrolighed, tilgange til formalisering (informationsteoretisk model af fjenden, modeller KR, PR, LOR, ROR, IND, CPA, CCA), symmetrisk krypteringssystem, anvendelse af kompleksitetsteoretisk information til at bestemme forholdet mellem modeller. Relationer mellem grundlæggende modstandsmodeller til vurdering af styrken af krypteringssystemer.
03 Tilgange til at bygge krypteringssystemer. Bygger fra bunden. Konstruktioner baseret på blokcifre, definition af en blokcifre, hovedkarakteristika, tilgange til konstruktion og egenskaber. Modeller PRP og PRF. Fødselsdagsproblemets paradoks. Lemma om forholdet mellem modstand i PRF- og PRP-modellerne.
04 Krypteringstilstande. Grundlæggende krypteringstilstande: ECB, CBC, CFB, OFB, CTR. Grundlæggende ydeevne egenskaber. Holdbarhed af CTR i LOR-CPA, ustabilitet af ECB i LOR-CPA. Ustabilitet af grundlæggende tilstande i CCA-modeller.
05 Integritet. Definition af begrebet integritet. Tilgange til formalisering (UF-CMA model, modeller baseret på diskriminationsopgaven, PRF model). Beskedgodkendelseskoder og funktioner til generering af imiterede indlæg. Design baseret på blokcifre: CBC-MAC, XCBC, TMAC, OMAC. Sårbare tilstande.
06 Hash-funktioner. Definition, grundlæggende egenskaber, tilgange til byggeri, formalisering og relaterede problemer. Eksempler på brug af hash-funktioner: password-hashing, entropi-ekstraktion. Konstruktion af kollisioner og forbilleder fra sæt med lav kardinalitet.
07 HMAC, KDF, PRF, DRNG kredsløb. HMAC-diagram, grundlæggende trin til opnåelse af modstandsvurdering. Nøglediversificering og princippet om nøgleadskillelse, KDF- og PRF-ordninger. Pseudorandomgenerator, DRNG-kredsløb.
08 Nøglebelastning. Problem med nøglebelastning. De vigtigste metoder til at reducere belastningen på en nøgle er eksterne og interne nøglekonverteringer. Parallelle og serielle gentastningsskemaer, grundlæggende egenskaber. Nøgletræ. Intern nøgleændring og CTR-ACPKM-tilstand.
09 Kryptering med imitationsbeskyttelse. Problemformulering. Generelle strukturer (EtA, AtE, A&E) og deres egenskaber. Eksempler på sårbare tilstande til at sikre fortrolighed og integritet ved brug af en enkelt nøgle. AEAD-krypteringstilstande: GCM, MGM.
10 Sikker kommunikationskanal. Konceptet med en sikker kommunikationskanal: typer af kanaler, grundlæggende egenskaber (integritet og fortrolighed af datastrømmen). Eksempler på sårbare protokoller. Optag TLS 1.3-protokol.
Fjerde semester
At vælge imellem
Teori og praksis for samtidighed
Kurset er helliget konkurrerende systemer og opgaver i bredeste forstand: fra konkurrenceniveauet mellem processorkerner til skrivning til én celle hukommelse til distribuerede systemer, der ønsker at replikere deres tilstand på tværs af flere servere på en fejltolerant og ensartet måde.
01 https://gitlab.com/Lipovsky/shad-tpcc-course-2019/blob/master/lectures/syllabus.md
eller
Gå sprog
01 Indledning. Kursusprogram. Rapportering om forløbet, evalueringskriterier. Design filosofi. hvis, skifte, for. Hej Verden. Kommandolinjeargumenter. Ordantal. Animeret gif. Henter URL. Henter URL samtidigt. Webserver. Tour of go. Lokal IDE opsætning. gofmt. goimport. fnug
02 Grundlæggende sprogstrukturer. navne, deklarationer, variabler, tildelinger. typeerklæringer. pakker og filer. omfang. Nul værdi. Hukommelsestildeling. Stack vs heap. Grundlæggende datatyper. Konstanter. Sammensatte datatyper. Arrays. Skiver. Kort. Strukturer. JSON. tekst/skabelon. streng og []byte. Arbejder med unicode. Unicode-erstatningstegn. Funktioner. Funktioner med et variabelt antal argumenter. Anonyme funktioner. Fejl.
03 Metoder. Værdimodtager vs pointermodtager. Indlejring. Metodeværdi. Indkapsling. Grænseflader. Grænseflader som kontrakter. io. Forfatter, io. Reader og deres implementeringer. sortere. Interface. fejl. http. Handler. Grænseflader som opregninger. Type påstand. Type kontakt. Jo større grænseflade, jo svagere abstraktion. Fejl ved behandling. panik, udskyde, komme sig. fejl.{Unwrap, Is, As}. fmt. Fejl. % vægt.
04 Goroutiner og kanaler. ur server. ekko server. Kanalstørrelse. Blokerende og ikke-blokerende læsning. vælg erklæring. Kanalaksiomer. tid. Efter. tid. NewTicker. Rørledningsmønster. Aflysning. Parallel sløjfe. synkronisere. Ventegruppe. Fejlhåndtering i parallel kode. fejlgruppe. Gruppe. Samtidig webcrawler. Samtidig kataloggennemgang.
05 Avanceret test. Delprøver. afprøvning. B. (T). Logf. (T). Skipf. (T). FejlNu. afprøvning. Short(), tester flag. Generation af håner. vidne/{kræve, hævde}. vidne/suite. Test armatur. Integrationstest. Goroutine lækagedetektor. TestingMain. Dækning. Sammenligning af benchmarks.
06 Samtidighed med delt hukommelse. synkronisere. Mutex. synkronisere. RWMutex. synkronisere. Cond. atomar synkronisere. Enkelt gang. Race detektor. Asynkron cache. Arbejde med databasen. database/sql. sqlx.
07 Pakkesammenhæng. Sender data med anmodningsomfang. http middleware. chi. Router. Bede om afmeldelse. Avancerede samtidighedsmønstre. Asynkron cache. Yndefuld servernedlukning. sammenhæng. Med Timeout. Batching og annullering.
08 database/sql, sqlx, arbejder med databaser, redis.
09 Refleksion. afspejle. Skriv og reflekter. Værdi. struct tags. net/rpc. kodning/gob. synkronisere. Kort. afspejle. DeepEqual.
10 Pakke io, Reader og Writer implementeringer fra standardbiblioteket. Programmering på lavt niveau. usikre. Pakke binær. bytes. Buffer. cgo, syscall.
11 GC arkitektur. Skriv barriere. Stakvækst. GC pause. GOGC. synkronisere. Pool. Goroutine skemalægger. GOMACPROCS. Lækkede tråde.
12 Gå til værktøj. pprof. CPU og hukommelsesprofilering. Krydskompilering. GOOS, GOARCH. CGO_ENABLED=0. Byg tags. gå moduler. godoc. x/analyse. Kodegenerering.
13 Nyttige biblioteker. CLI applikationer med cobra. Protobuf og GRPC. zap-logning.
eller
Database
01 Grænseflader af moderne databaser: relationel, nøgleværdi, dokument, graf. Relationel algebra og SQL-sprog.
02 Arbejde med disk i klassisk relationel DBMS: sider, sidepulje, udsættelse fra poolen.
03 Udførelse af SQL-forespørgsler: parsing af udtryk, planlægning, eksekvering. Fortolkning og kodegenerering ved hjælp af LLVM.
04 Indekser i relationelt DBMS: typer af indekser, lagringsmetoder, brug i forespørgsler.
05 Transaktioner: ACID akronym, isolationsniveauer, implementering af transaktioner gennem låse og MVCC.
06 Disaster recovery: log, checkpoints, ARIES-algoritme.
07 Datalagring ved hjælp af metoden Log-Structured Merge Tree.
08 Kolonnebaseret DBMS: fordele, funktioner, datakomprimeringsalgoritmer.
09 Distribueret DBMS: sharding, transaktioner, udførelse af forespørgsler.
10 DBMS placeret i hovedhukommelsen. Datastrukturer til in-memory indekser.
eller
Computernetværk
01 Introduktion til netværksteknologier. Netværks historie, netværksprotokoller, organisering af netværksinteraktion i et peer-to-peer-netværk og forbindelsen af peer-to-peer-netværk med hinanden.
02 Transport. OSI/ISO netværksmodel. TCP, etablering af netværksforbindelse, sammenligning af TCP og UDP. Tcpdump-analyse – bytes i fly, gentransmitterer grafer. Metoder til styring af dataflow i en TCP-session. Forskellige typer af TCP-sessioner og båndbreddestyring af transmitterede data i pakkenetværk.
03 Ruteføring. Konceptet med routing i netværk. Statisk og dynamisk routing. Grundlæggende om dynamisk routing. Dynamisk routingprotokol - OSPF. Afstand vektor routing protokoller. Oversigt over BGP-routingprotokollen - beskedtyper, BGP-attributter, valg af den optimale rute i BGP.
04 Sådan fungerer internettet: BGP og DNS. Internet routing. Oversigt over DNS-protokollen.
05 Netværk i store datacentre. Funktioner i arkitekturen af datacenternetværk. Krav til datacenternetværk. CLOS-arkitektur til datacenternetværk.
06 Forsinkelser i netværk. Funktioner ved at bygge store rygradsnetværk. Årsager til forsinkelser i datatransmission over backbone-netværk.
07 Skalering og tilgængelighed af internettjenester. Belastningsbalanceringsteknologier og servicearkitektur.
08 MPLS og SR, netværksprogrammerbarhed. MPLS og Segment Routing teknologier til opbygning af backbone netværk. Formål med MPLS-teknologi, protokoller, der bruges til etiketudveksling.
09 Principper for drift af netværksenheder. Routerarkitektur, funktioner til behandling af netværkstrafik inde i netværksenheder.
10 skyer. Software Defined Networking Fundamentals - Protokoller, der bruges til at bygge softwaredefinerede netværk. Integration af virtualiseringsplatforme og netværksinfrastruktur.
eller
Kryptografiske protokoller
01 Grundlæggende ideer om asymmetrisk kryptografi. Hovedforskellen mellem asymmetrisk kryptografi og symmetrisk kryptografi. Hovedideer: protokol til generering af en delt nøgle, offentlig nøglekryptering, elektronisk signatur (problemer, der skal løses, intuitiv forståelse af sikkerhedsegenskaber). Specifikke kryptografiske skemaer: Diffie-Hellman protokol, ElGamal og RSA krypteringsskemaer, ElGamal og RSA signaturer. Det grundlæggende problem med asymmetriske ordninger er tillid til den offentlige nøgle.
02 Styrken af grundlæggende asymmetriske kryptografiskemaer. Formel definition af resistens: modellerne UF-CMA, IND-CPA, DLP, CDH, DDH. Relationer mellem dem. Styrken af ElGamal-krypteringsordningen. Ustabiliteten af RSA-signaturskemaet uden brug af en hash-funktion.
03 Lær mere om asymmetrisk kryptografi. Lamparts signatur, Merkles diagram. DSKS angreb.
04 Algebraisk og talteoretisk grundlag for asymmetrisk kryptografi. Finite grupper, cykliske grupper, rækkefølge af gruppeelement. Diskret logaritmeproblem (DLP). Multiplikative grupper af endelige felter. Grundlæggende information om elliptiske kurver.
05 Elliptiske kurver. Hasses sætning. Tilføjelse af punkter på en elliptisk kurve. Gruppe af punkter på en elliptisk kurve. Signaturordning GOST R 34.10-2012.
06 Diskret logaritme. Diskrete logaritmealgoritmer (Pollards Rho-metode, matchningsmetode, Polig-Hellman-metode, indeksberegningsmetode).
07 PKI teknologi. Grundlæggende principper og koncepter for offentlig nøgleinfrastruktur (PKI). Certifikat, CA, CRL, OCSP, tillidsrum.
08 TLS protokol. Historien om TLS-protokollen. Protokolstruktur, grundlæggende driftsprincipper. TLS-protokol kryptografiske suiter baseret på russiske kryptografiske algoritmer.
09 Grundlæggende om opbygning af AKE-protokoller. Konceptet med AKE-protokollen. Målegenskaber. Grundlæggende tilgange til byggeri.
10 Sikker nøgleopbevaring. Problemet med sikker brug af private nøgler. Nøglemedier, ikke-aftagelige nøgler. Problemet med tilstedeværelsen af en modstander i kanalen, protokoller fra PAKE-familien.
11 Grundlæggende begreber i blockchain-teknologi. Opgaven med koordineret decentralt samspil. Grundlæggende begreber om begrebet sikkerhed. Sikkerhed nærmer sig.
12 Grundlæggende principper for kvanteteknologier og deres anvendelser i kryptografi