Big Data Infrastructure - gratis cursus van de School of Data Analysis, 4 semesters, Datum: 5 december 2023.
Gemengde Berichten / / December 08, 2023
Voor degenen die van algoritmen houden, met data werken en van programmeren houden, maar hun leven niet willen verbinden met machine learning.
Algoritmen, programmeren, ontwerp van bestandssystemen, schijven, netwerken en processors, evenals gedistribueerde systemen.
Bij het creëren en ondersteunen van efficiënte en betrouwbare gedistribueerde systemen voor het opslaan en verwerken van big data.
Elke student moet tijdens het semester ten minste drie cursussen met succes voltooien. Als er bijvoorbeeld twee in het hoofdprogramma staan, moet je een van de speciale cursussen kiezen.
Kennis wordt voornamelijk getest door middel van huiswerk - examens en tests worden slechts bij sommige vakken afgenomen.
Eerste semester
Verplicht
Algoritmen en datastructuren, deel 1
01 Complexiteit en computationele modellen. Analyse van boekhoudkundige waarden (begin)
02 Analyse van boekhoudkundige waarden (einde)
03 Algoritmen voor samenvoegen en sorteren
04 Ordinale statistieken. Hopen (begin)
05 Hopen (einde)
06 Hashing
07 Zoekbomen (begin)
08 Zoekbomen (vervolg)
09 Bomen zoeken (einde). Systeem van onsamenhangende verzamelingen
10 Doelstellingen van RMQ en LCA
11 Datastructuren voor geometrisch zoeken
12 Probleem van dynamische connectiviteit in een ongerichte grafiek
Computerarchitectuur en besturingssystemen
01 UNIX en programmeren in C: opdrachtregel, procesbesturing, kanalen, signalen. Implementatie van een opdrachtregelshell.
02 x86 assembler: rekenkunde, overgangen, voorwaarden en functieaanroepen. Stapel, de stapel omhoog bewegen.
03 Programma's koppelen en het ELF-formaat. Dynamische koppeling.
04 Het concept van context en uitvoeringsstroom. Het implementeren van lichtgewicht threads.
05 Preventieve multitasking: ondersteuning van de x86-processor en implementatie van processen in de UNIX-kernel.
06 Multi-core architectuur: cachecoherentie en geheugenmodellen. Synchronisatieprimitieven in multithreaded programma's.
07 Processen plannen op één kern en op vele kernen.
08 Extern geheugen: harde schijven en solid-state drives. Principes van de werking van bestandssystemen.
09 Virtualisatie: hardware en software. Binaire uitzending.
Taaltraining C++, deel 1
C++ is een krachtige taal met een rijk erfgoed. Voor degenen die net het pad hebben bewandeld om deze taal onder de knie te krijgen, is het heel gemakkelijk om te verdwalen in de overvloed aan technieken en technieken die de afgelopen 30 jaar zijn gecreëerd. De cursus leert "Modern C++" - een moderne subset van de taal (standaarden 11, 14 en 17). Er wordt veel aandacht besteed aan tools en bibliotheken - dingen die geen deel uitmaken van de taal, maar zonder welke het niet mogelijk zal zijn om een groot en complex project te bouwen.
01 Inleiding tot C++.
02 Constanten. Aanwijzingen en links. Argumenten doorgeven aan een functie.
03 Klassen.
04 Dynamisch geheugenbeheer.
05 Variabelen, pointers en referenties.
06 Geheugenbeheer, slimme wijzers, RAII.
07 Standaardsjabloonbibliotheek.
08 Overerving en virtuele functies.
09 Foutafhandeling.
10 Ontwerppatronen.
11 Naamruimten Verplaatssemantiek Perfecte doorsturing.
12 Weergave van structuren en klassen in het geheugen. Uitlijning van gegevens. Verwijzingen naar klasseleden/methoden. Variadische sjablonen.
Tweede semester
Verplicht
Algoritmen en datastructuren, deel 2
01 Bypass in de breedte. Diepte Eerste Traversal (start)
02 Diepteverplaatsing (vervolg)
03 Diepgang (einde). 2-sneden
04 De kortste paden vinden (begin)
05 De kortste paden vinden (vervolg)
06 Minimaal opspannende bomen
07 Minimale bezuinigingen. Zoeken naar substrings (start)
08 Zoeken naar substrings (vervolg)
09 Zoeken naar substrings (einde)
10 achtervoegselbomen (begin)
11 Achtervoegselbomen (einde). Achtervoegselarrays (start)
12 achtervoegselarrays (eindigend)
13 Langste gemeenschappelijke substrings. Zoeken naar geschatte subtekenreeksen.
Taaltraining C++, deel 2
Het tweede deel van de C++-cursus, waarin geavanceerde onderwerpen en taalmogelijkheden worden behandeld.
01 Multi-threaded programmeren. Synchroniseren van threads met behulp van mutexen en conditievariabelen.
02 Atomaire variabelen. C++ geheugenmodel. Voorbeelden van slotvrije datastructuren.
03 Geavanceerde metaprogrammeertechnieken in C++. Metafuncties, SFINAE, concepten.
04 Competitieve programmering, interactie met het netwerk.
05 llvm-architectuur. Werken met de C++ parseerboom. Ontwikkeling van tools voor het analyseren van C++-code.
Kiezen uit
Theorie en praktijk van gelijktijdigheid
De cursus is gewijd aan concurrerende systemen en taken in de breedste zin van het woord: van het niveau van concurrentie tussen processorkernen bij het schrijven tot één cel geheugen naar gedistribueerde systemen die hun status op meerdere servers op een fouttolerante en consistente manier willen repliceren.
01 https://gitlab.com/Lipovsky/shad-tpcc-course-2019/blob/master/lectures/syllabus.md
of
Ga taal
01 Inleiding. Cursus programma. Verslaglegging over de cursus, evaluatiecriteria. Ontwerpfilosofie. als, schakel, voor. Hallo Wereld. Opdrachtregelargumenten. Aantal woorden. Geanimeerde GIF. URL ophalen. URL gelijktijdig ophalen. Web Server. Ronde van gaan. Lokale IDE-installatie. goft. ga importeren. pluisjes
02 Basistaalstructuren. namen, declaraties, variabelen, toewijzingen. soort aangiften. pakketten en bestanden. domein. Nul waarde. Geheugentoewijzing. Stapel versus hoop. Basisgegevenstypen. Constanten. Samengestelde gegevenstypen. Arrays. Plakjes. Kaarten. Structuren. JSON. tekst/sjabloon. tekenreeks en []byte. Werken met Unicode. Unicode-vervangingsteken. Functies. Functies met een variabel aantal argumenten. Anonieme functies. Fouten.
03 Methoden. Waardeontvanger versus aanwijzerontvanger. Inbedding. Methode waarde. Inkapseling. Interfaces. Interfaces als contracten. io. Schrijver, io. Reader en hun implementaties. soort. Koppel. fout. http. Behandelaar. Interfaces als opsommingen. Typ bewering. Type schakelaar. Hoe groter de interface, hoe zwakker de abstractie. Foutverwerking. in paniek raken, uitstellen, herstellen. fouten. {Uitpakken, Is, As}. fmt. Fout. %w.
04 Goroutines en kanalen. klok server. echo-server. Kanaalgrootte. Blokkerend en niet-blokkerend lezen. selecteer verklaring. Kanaalaxioma's. tijd. Na. tijd. Nieuwe Ticker. Pijpleiding patroon. Annulering. Parallelle lus. synchroniseren. Wachtgroep. Foutafhandeling in parallelle code. foutgroep. Groep. Gelijktijdige webcrawler. Gelijktijdige directory-doorgang.
05 Geavanceerd testen. Subtesten. testen. B. (T).Logf. (T).Overslaan. (T).FailNow. testen. Short(), vlaggen testen. Generatie van schijnvertoningen. getuigen/{vereisen, beweren}. getuigen/suite. Proefopstelling. Integratie testen. Goroutine lekdetector. TestenHoofd. Dekking. Vergelijking van benchmarks.
06 Geavanceerd testen. Subtesten. testen. B. (T).Logf. (T).Overslaan. (T).FailNow. testen. Short(), vlaggen testen. Generatie van schijnvertoningen. getuigen/{vereisen, beweren}. getuigen/suite. Proefopstelling. Integratie testen. Goroutine lekdetector. TestenHoofd. Dekking. Vergelijking van benchmarks.
07 Pakketcontext. Op verzoek gerichte gegevens doorgeven. http-middleware. chi. Router. Verzoek tot annulering. Geavanceerde gelijktijdigheidspatronen. Asynchrone cache. Sierlijke serverafsluiting. context. Met Time-out. Baten en annuleren.
08 database/sql, sqlx, werken met databases, redis.
09 Reflectie. reflecteren. Typ en reflecteer. Waarde. struct-tags. netto/rpc. codering/gob. synchroniseren. Kaart. reflecteren. DiepGelijk.
10 Pakket io-, Reader- en Writer-implementaties uit de standaardbibliotheek. Programmeren op laag niveau. onveilig. Pakket binair. bytes. Buffer. cgo, systeemcall.
11 GC-architectuur. Schrijf barrière. Stapel groei. GC pauze. GOGC. synchroniseren. Zwembad. Goroutine-planner. GOMACPROCS. Gelekte draden.
12 Ga bewerken. pprof. CPU- en geheugenprofilering. Kruiscompilatie. GOOS, GOARCH. CGO_ENABLED=0. Bouw tags. ga modules. goed. x/analyse. Codegeneratie.
13 Handige bibliotheken. CLI-applicaties met cobra. Protobuf en GRPC. zap-loggen.
Derde semester
Verplicht
Algoritmen in extern geheugen
De cursus laat studenten kennismaken met de basisprincipes van het construeren van algoritmen voor het werken met gegevens die niet in het RAM van de computer passen.
01 Algoritmen in extern geheugen.
02 Cache-onbewuste algoritmen.
03 Algoritmen voor verwerking van streamgegevens.
Gedistribueerde systemen
Aanbevolen speciale cursussen
Sterkte van cryptografische systemen
01 Basisbenaderingen en principes van moderne cryptografie. Het tegenstandermodel, de formalisering van het concept van kracht, het probleem van het beoordelen van kracht en aanverwante problemen, de indeling in primitieven en protocollen, stadia van het ‘leven’ van een cryptografisch systeem.
02 Vertrouwelijkheid. Alledaagse definities van vertrouwelijkheid, benaderingen van formalisering (informatietheoretisch model van de vijand, modellen KR, PR, LOR, ROR, IND, CPA, CCA), symmetrisch encryptiesysteem, toepassing van complexiteitstheoretische informatie om de relatie tussen te bepalen modellen. Relaties tussen fundamentele tegenstandermodellen voor het beoordelen van de kracht van encryptiesystemen.
03 Benaderingen voor het bouwen van encryptiesystemen. Vanaf nul opbouwen. Constructies gebaseerd op blokcijfers, definitie van een blokcijfer, belangrijkste kenmerken, benaderingen van constructie en eigenschappen. Modellen PRP en PRF. De paradox van het verjaardagsprobleem. Lemma over de relatie tussen resistentie in de PRF- en PRP-modellen.
04 Coderingsmodi. Basiscoderingsmodi: ECB, CBC, CFB, OFB, CTR. Basisprestatie-eigenschappen. Duurzaamheid van de CTR in LOR-CPA, instabiliteit van de ECB in LOR-CPA. Instabiliteit van basismodi in CCA-modellen.
05 Integriteit. Definitie van het begrip integriteit. Benaderingen van formalisering (UF-CMA-model, modellen gebaseerd op de discriminatietaak, PRF-model). Berichtauthenticatiecodes en functies voor het genereren van geïmiteerde bijlagen. Ontwerpen gebaseerd op blokcijfers: CBC-MAC, XCBC, TMAC, OMAC. Kwetsbare modi.
06 Hash-functies. Definitie, basiseigenschappen, benaderingen van constructie, formalisering en aanverwante problemen. Voorbeelden van het gebruik van hashfuncties: wachtwoordhashing, entropie-extractie. Botsingen en voorafbeeldingen construeren uit sets met lage kardinaliteit.
07 HMAC-, KDF-, PRF-, DRNG-circuits. HMAC-diagram, basisstappen voor het verkrijgen van weerstandsclassificatie. Sleuteldiversificatie en het principe van sleutelscheiding, KDF- en PRF-regelingen. Pseudo-willekeurige generator, DRNG-circuits.
08 Sleutellading. Probleem met sleutelladen. De belangrijkste methoden om de belasting van een sleutel te verminderen zijn externe en interne sleutelconversies. Parallelle en seriële hersleutelschema's, basiseigenschappen. Sleutel boom. Interne sleutelwijziging en CTR-ACPKM-modus.
09 Encryptie met imitatiebescherming. Probleem formulering. Algemene structuren (EtA, AtE, A&E) en hun eigenschappen. Voorbeelden van kwetsbare manieren om vertrouwelijkheid en integriteit te garanderen met behulp van één enkele sleutel. AEAD-coderingsmodi: GCM, MGM.
10 Beveiligd communicatiekanaal. Het concept van een beveiligd communicatiekanaal: soorten kanalen, basiseigenschappen (integriteit en vertrouwelijkheid van de gegevensstroom). Voorbeelden van kwetsbare protocollen. Neem het TLS 1.3-protocol op.
Vierde semester
Kiezen uit
Theorie en praktijk van gelijktijdigheid
De cursus is gewijd aan concurrerende systemen en taken in de breedste zin van het woord: van het niveau van concurrentie tussen processorkernen bij het schrijven tot één cel geheugen naar gedistribueerde systemen die hun status op meerdere servers op een fouttolerante en consistente manier willen repliceren.
01 https://gitlab.com/Lipovsky/shad-tpcc-course-2019/blob/master/lectures/syllabus.md
of
Ga taal
01 Inleiding. Cursus programma. Verslaglegging over de cursus, evaluatiecriteria. Ontwerpfilosofie. als, schakel, voor. Hallo Wereld. Opdrachtregelargumenten. Aantal woorden. Geanimeerde GIF. URL ophalen. URL gelijktijdig ophalen. Web Server. Ronde van gaan. Lokale IDE-installatie. goft. ga importeren. pluisjes
02 Basistaalstructuren. namen, declaraties, variabelen, toewijzingen. soort aangiften. pakketten en bestanden. domein. Nul waarde. Geheugentoewijzing. Stapel versus hoop. Basisgegevenstypen. Constanten. Samengestelde gegevenstypen. Arrays. Plakjes. Kaarten. Structuren. JSON. tekst/sjabloon. tekenreeks en []byte. Werken met Unicode. Unicode-vervangingsteken. Functies. Functies met een variabel aantal argumenten. Anonieme functies. Fouten.
03 Methoden. Waardeontvanger versus aanwijzerontvanger. Inbedding. Methode waarde. Inkapseling. Interfaces. Interfaces als contracten. io. Schrijver, io. Reader en hun implementaties. soort. Koppel. fout. http. Behandelaar. Interfaces als opsommingen. Typ bewering. Type schakelaar. Hoe groter de interface, hoe zwakker de abstractie. Foutverwerking. in paniek raken, uitstellen, herstellen. fouten. {Uitpakken, Is, As}. fmt. Fout. %w.
04 Goroutines en kanalen. klok server. echo-server. Kanaalgrootte. Blokkerend en niet-blokkerend lezen. selecteer verklaring. Kanaalaxioma's. tijd. Na. tijd. Nieuwe Ticker. Pijpleiding patroon. Annulering. Parallelle lus. synchroniseren. Wachtgroep. Foutafhandeling in parallelle code. foutgroep. Groep. Gelijktijdige webcrawler. Gelijktijdige directory-doorgang.
05 Geavanceerd testen. Subtesten. testen. B. (T).Logf. (T).Overslaan. (T).FailNow. testen. Short(), vlaggen testen. Generatie van schijnvertoningen. getuigen/{vereisen, beweren}. getuigen/suite. Proefopstelling. Integratie testen. Goroutine lekdetector. TestenHoofd. Dekking. Vergelijking van benchmarks.
06 Gelijktijdigheid met gedeeld geheugen. synchroniseren. Mutex. synchroniseren. RWMutex. synchroniseren. Cond. atomair synchroniseren. Eenmaal. Rasdetector. Asynchrone cache. Werken met de databank. database/sql. sqlx.
07 Pakketcontext. Op verzoek gerichte gegevens doorgeven. http-middleware. chi. Router. Verzoek tot annulering. Geavanceerde gelijktijdigheidspatronen. Asynchrone cache. Sierlijke serverafsluiting. context. Met Time-out. Baten en annuleren.
08 database/sql, sqlx, werken met databases, redis.
09 Reflectie. reflecteren. Typ en reflecteer. Waarde. struct-tags. netto/rpc. codering/gob. synchroniseren. Kaart. reflecteren. DiepGelijk.
10 Pakket io-, Reader- en Writer-implementaties uit de standaardbibliotheek. Programmeren op laag niveau. onveilig. Pakket binair. bytes. Buffer. cgo, systeemcall.
11 GC-architectuur. Schrijf barrière. Stapel groei. GC pauze. GOGC. synchroniseren. Zwembad. Goroutine-planner. GOMACPROCS. Gelekte draden.
12 Ga bewerken. pprof. CPU- en geheugenprofilering. Kruiscompilatie. GOOS, GOARCH. CGO_ENABLED=0. Bouw tags. ga modules. goed. x/analyse. Codegeneratie.
13 Handige bibliotheken. CLI-applicaties met cobra. Protobuf en GRPC. zap-loggen.
of
Database
01 Interfaces van moderne databases: relationeel, sleutelwaarde, document, grafiek. Relationele algebra en SQL-taal.
02 Werken met schijf in klassiek relationeel DBMS: pagina's, paginapool, verwijdering uit de pool.
03 SQL-query's uitvoeren: parseren van expressies, planning, uitvoering. Interpretatie en codegeneratie met behulp van LLVM.
04 Indexen in relationeel DBMS: soorten indexen, opslagmethoden, gebruik in queries.
05 Transacties: ACID acroniem, isolatieniveaus, uitvoering van transacties via sloten en MVCC.
06 Noodherstel: log, controlepunten, ARIES-algoritme.
07 Gegevensopslag met behulp van de Log-Structured Merge Tree-methode.
08 Kolomgebaseerd DBMS: voordelen, functies, algoritmen voor datacompressie.
09 Gedistribueerde DBMS: sharding, transacties, uitvoering van query's.
10 DBMS in het hoofdgeheugen. Datastructuren voor in-memory indexen.
of
Computer netwerken
01 Inleiding tot netwerktechnologieën. De geschiedenis van netwerken, netwerkprotocollen, organisatie van netwerkinteractie in een peer-to-peer netwerk en de verbinding van peer-to-peer netwerken met elkaar.
02 Vervoer. OSI/ISO-netwerkmodel. TCP, netwerkverbinding tot stand brengen, vergelijking van TCP en UDP. Tcpdump-analyse – bytes in de vlucht, verzendt grafieken opnieuw. Methoden voor het controleren van de gegevensstroom in een TCP-sessie. Verschillende soorten TCP-sessies en bandbreedtebeheer van verzonden gegevens in pakketnetwerken.
03 Routering. Het concept van routering in netwerken. Statische en dynamische routering. Basisprincipes van dynamische routering. Dynamisch routeringsprotocol - OSPF. Protocollen voor afstandsvectorroutering. Overzicht van het BGP-routeringsprotocol - berichttypen, BGP-attributen, het kiezen van de optimale route in BGP.
04 Hoe internet werkt: BGP en DNS. Internetroutering. Overzicht van het DNS-protocol.
05 Netwerken in grote datacenters. Kenmerken van de architectuur van datacenternetwerken. Vereisten voor datacenternetwerken. CLOS-architectuur voor datacenternetwerken.
06 Vertragingen in netwerken. Kenmerken van het bouwen van grote backbone-netwerken. Redenen voor vertragingen in de gegevensoverdracht via backbone-netwerken.
07 Schaal en beschikbaarheid van internetdiensten. Load-balancing-technologieën en servicearchitectuur.
08 MPLS en SR, netwerkprogrammeerbaarheid. MPLS- en Segment Routing-technologieën voor het bouwen van backbone-netwerken. Doel van MPLS-technologie, protocollen die worden gebruikt voor labeluitwisseling.
09 Principes van de werking van netwerkapparaten. Routerarchitectuur, kenmerken van het verwerken van netwerkverkeer binnen netwerkapparaten.
10 Wolken. Software Defined Networking Fundamentals - Protocollen die worden gebruikt om softwaregedefinieerde netwerken te bouwen. Integratie van virtualisatieplatforms en netwerkinfrastructuur.
of
Cryptografische protocollen
01 Basisideeën van asymmetrische cryptografie. Het belangrijkste verschil tussen asymmetrische cryptografie en symmetrische cryptografie. Belangrijkste ideeën: protocol voor het genereren van een gedeelde sleutel, encryptie met publieke sleutels, elektronische handtekening (op te lossen problemen, intuïtief begrip van beveiligingseigenschappen). Specifieke cryptografische schema's: Diffie-Hellman-protocol, ElGamal- en RSA-coderingsschema's, ElGamal- en RSA-handtekeningen. Het fundamentele probleem met asymmetrische schema’s is het vertrouwen in de publieke sleutel.
02 Kracht van fundamentele asymmetrische cryptografieschema's. Formele definitie van resistentie: modellen UF-CMA, IND-CPA, DLP, CDH, DDH. Relaties tussen hen. Kracht van het ElGamal-coderingsschema. De instabiliteit van het RSA-handtekeningschema zonder gebruik van een hashfunctie.
03 Leer meer over asymmetrische cryptografie. De handtekening van Lampart, het diagram van Merkle. DSKS-aanval.
04 Algebraïsche en getaltheoretische grondslagen van asymmetrische cryptografie. Eindige groepen, cyclische groepen, volgorde van groepselementen. Discreet logaritmeprobleem (DLP). Multiplicatieve groepen eindige velden. Basisinformatie over elliptische krommen.
05 Elliptische curven. De stelling van Hasse. Optelling van punten op een elliptische curve. Groep punten op een elliptische curve. Handtekeningschema GOST R 34.10-2012.
06 Discrete logaritme. Discrete logaritme-algoritmen (Pollard's Rho-methode, matchingmethode, Polig-Hellman-methode, indexberekeningsmethode).
07 PKI-technologie. Basisprincipes en concepten van publieke sleutelinfrastructuur (PKI). Certificaat, CA, CRL, OCSP, vertrouwensruimte.
08 TLS-protocol. Geschiedenis van het TLS-protocol. Protocolstructuur, fundamentele werkingsprincipes. Cryptografische suites met TLS-protocol gebaseerd op Russische cryptografische algoritmen.
09 Basisprincipes van het bouwen van AKE-protocollen. Het concept van het AKE-protocol. Doeleigenschappen. Basisbenaderingen van de constructie.
10 Veilige sleutelopslag. Het probleem van veilig gebruik van privésleutels. Sleutelmedia, niet-verwijderbare sleutels. Het probleem van de aanwezigheid van een tegenstander in het kanaal, protocollen van de PAKE-familie.
11 Basisconcepten van blockchain-technologie. De taak van gecoördineerde gedecentraliseerde interactie. Basisconcepten van het concept van veiligheid. Beveiliging nadert.
12 Basisprincipes van kwantumtechnologieën en hun toepassingen in cryptografie