Big Data Infrastructure - corso gratuito della School of Data Analysis, 4 semestri, data: 5 dicembre 2023.
Miscellanea / / December 08, 2023
Per chi ama gli algoritmi, lavora con i dati e ama la programmazione, ma non vorrebbe connettere la propria vita con l'apprendimento automatico.
Algoritmi, programmazione, progettazione di file system, dischi, reti e processori, nonché sistemi distribuiti.
Nella realizzazione e nel supporto di sistemi distribuiti efficienti e affidabili per l’archiviazione e l’elaborazione dei big data.
Ogni studente deve completare con successo almeno tre corsi durante il semestre. Ad esempio, se ce ne sono due nel programma principale, devi scegliere uno dei corsi speciali.
La conoscenza viene verificata principalmente attraverso i compiti: esami e test vengono condotti solo in alcune materie.
Primo semestre
Obbligatorio
Algoritmi e strutture dati, parte 1
01 Complessità e modelli computazionali. Analisi dei valori contabili (inizio)
02 Analisi dei valori contabili (fine)
03 Algoritmi Merge-Sort e Quick-Sort
04 Statistiche ordinali. Cumuli (inizio)
05 Cumuli (fine)
06 Hashing
07 Cerca alberi (inizio)
08 Cerca alberi (continua)
09 Cerca alberi (fine). Sistema di insiemi disgiunti
10 Obiettivi di RMQ e LCA
11 Strutture dati per la ricerca geometrica
12 Problema di connettività dinamica in un grafo non orientato
Architettura degli elaboratori e sistemi operativi
01 UNIX e programmazione in C: riga di comando, controllo di processo, canali, segnali. Implementazione di una shell a riga di comando.
02 Assemblatore x86: aritmetica, transizioni, condizioni e chiamate di funzioni. Stack, risalendo lo stack.
03 Collegamento di programmi e formato ELF. Collegamento dinamico.
04 Il concetto di contesto e flusso di esecuzione. Implementazione di thread leggeri.
05 Multitasking preventivo: supporto del processore x86 e implementazione dei processi nel kernel UNIX.
06 Architettura multi-core: coerenza della cache e modelli di memoria. Primitive di sincronizzazione nei programmi multithread.
07 Processi di pianificazione su un core e su più core.
08 Memoria esterna: dischi rigidi e unità a stato solido. Principi di funzionamento dei file system.
09 Virtualizzazione: hardware e software. Trasmissione binaria.
Formazione linguistica C++, parte 1
Il C++ è un linguaggio potente con una ricca eredità. Per coloro che hanno appena intrapreso il percorso per padroneggiare questa lingua, è molto facile perdersi nell'abbondanza di tecniche e tecniche create negli ultimi 30 anni. Il corso insegna "Modern C++" - un sottoinsieme moderno del linguaggio (standard 11, 14 e 17). Molta attenzione viene prestata agli strumenti e alle librerie, cose che non fanno parte del linguaggio, ma senza le quali non sarà possibile costruire un progetto ampio e complesso.
01 Introduzione al C++.
02 Costanti. Puntatori e collegamenti. Passaggio di argomenti a una funzione.
03 classi.
04 Gestione dinamica della memoria.
05 Variabili, puntatori e riferimenti.
06 Gestione della memoria, puntatori intelligenti, RAII.
07 Libreria di modelli standard.
08 Ereditarietà e funzioni virtuali.
09 Gestione degli errori.
10 modelli di progettazione.
11 Spazi dei nomi Semantica dello spostamento Inoltro perfetto.
12 Rappresentazione di strutture e classi in memoria. Allineamento dei dati. Puntatori ai membri/metodi della classe. Modelli variadici.
Secondo termine
Obbligatorio
Algoritmi e strutture dati, parte 2
01 Bypass in larghezza. Prima traversata in profondità (inizio)
02 Traversata in profondità (continua)
03 Traversata in profondità (fine). 2 tagli
04 Trovare i percorsi più brevi (inizio)
05 Trovare il percorso più breve (continua)
06 Alberi di estensione minima
07 Tagli minimi. Cerca sottostringhe (inizio)
08 Ricerca sottostringhe (continua)
09 Ricerca sottostringhe (fine)
10 alberi dei suffissi (inizio)
11 alberi dei suffissi (finale). Array di suffissi (inizio)
12 array di suffissi (finali)
13 Sottostringhe comuni più lunghe. Ricerca approssimativa di sottostringhe.
Formazione linguistica C++, parte 2
La seconda parte del corso C++, che copre argomenti avanzati e capacità linguistiche.
01 Programmazione multi-thread. Sincronizzazione dei thread utilizzando mutex e variabili di condizione.
02 Variabili atomiche. Modello di memoria C++. Esempi di strutture dati prive di lock.
03 Tecniche avanzate di metaprogrammazione in C++. Metafunzioni, SFINAE, concetti.
04 Programmazione competitiva, interazione con la rete.
05 architettura lvm. Lavorare con l'albero di analisi C++. Sviluppo di strumenti per l'analisi del codice C++.
Scegliere da
Teoria e pratica della concorrenza
Il corso è dedicato ai sistemi e ai compiti competitivi nel senso più ampio: dal livello di competizione tra core del processore per la scrittura su una cella memoria a sistemi distribuiti che desiderano replicare il proprio stato su più server in modo coerente e con tolleranza agli errori.
01 https://gitlab.com/Lipovsky/shad-tpcc-course-2019/blob/master/lectures/syllabus.md
O
Vai alla lingua
01 Introduzione. Programma del corso. Relazione sul corso, criteri di valutazione. Filosofia progettuale. se, cambiare, per. Ciao mondo. Argomenti della riga di comando. Conteggio delle parole. Gif animata. Recupero URL. Recupero dell'URL contemporaneamente. Server web. Giro di andata. Configurazione dell'IDE locale. gofmt. goimports. lanugine
02 Strutture linguistiche di base. nomi, dichiarazioni, variabili, assegnamenti. dichiarazioni di tipo. pacchetti e file. scopo. Valore zero. Allocazione della memoria. Stack vs heap. Tipi di dati di base. Costanti. Tipi di dati compositi. Array. Fette. Mappe. Strutture. JSON. testo/modello. stringa e []byte. Lavorare con unicode. Carattere sostitutivo Unicode. Funzioni. Funzioni con un numero variabile di argomenti. Funzioni anonime. Errori.
03 Metodi. Ricevitore di valore vs ricevitore di puntatore. Incorporamento. Valore del metodo. Incapsulamento. Interfacce. Interfacce come contratti. io. Scrittore, io. Reader e loro implementazioni. ordinare. Interfaccia. errore. http. Gestore. Interfacce come enumerazioni. Digitare l'asserzione. Tipo interruttore. Più grande è l'interfaccia, più debole è l'astrazione. Errore nell'elaborazione. farsi prendere dal panico, rinviare, recuperare. errori.{Unwrap, Is, As}. fmt. Erroref. %w.
04 Goroutine e canali. server dell'orologio. server dell'eco. Dimensione del canale. Lettura bloccante e non bloccante. selezionare l'istruzione. Assiomi del canale. tempo. Dopo. tempo. NuovoTicker. Modello di pipeline. Cancellazione. Ciclo parallelo. sincronizzare. WaitGroup. Gestione degli errori nel codice parallelo. errgroup. Gruppo. Crawler web simultaneo. Attraversamento simultaneo delle directory.
05 Test avanzati. Sottotest. test. B. (T).Logf. (T).Saltaf. (T).FailNow. test. Short(), test dei flag. Generazione di mock. testimoniare/{richiedere, affermare}. testimoniare/accusare. Dispositivo di prova. Prove di integrazione. Rilevatore di perdite di routine. TestMain. Copertura. Confronto dei benchmark.
06 Test avanzati. Sottotest. test. B. (T).Logf. (T).Saltaf. (T).FailNow. test. Short(), test dei flag. Generazione di mock. testimoniare/{richiedere, affermare}. testimoniare/accusare. Dispositivo di prova. Prove di integrazione. Rilevatore di perdite di routine. TestMain. Copertura. Confronto dei benchmark.
07 Contesto del pacchetto. Passaggio di dati con ambito richiesta. middleware http. chi. Router. Richiedi cancellazione. Modelli di concorrenza avanzati. Cache asincrona. Arresto regolare del server. contesto. ConTimeout. Raggruppamento e cancellazione.
08 database/sql, sqlx, lavorare con i database, redis.
09 Riflessione. riflettere. Scrivi e rifletti. Valore. tag di struttura. netto/rpc. codifica/gob. sincronizzare. Carta geografica. riflettere. DeepEqual.
10 Implementazioni del pacchetto io, Reader e Writer dalla libreria standard. Programmazione di basso livello. pericoloso. Pacchetto binario. byte. Respingente. cgo, chiamata di sistema.
Architettura 11GC. Barriera di scrittura. Crescita dello stack. Pausa GC. GOGC. sincronizzare. Piscina. Programmatore di routine. GOMACPROCS. Discussioni trapelate.
12 Vai all'utensileria. pprof. Profilazione di CPU e memoria. Compilazione incrociata. GOOS, GOARCH. CGO_ENABLED=0. Costruisci tag. vai ai moduli. godoc. x/analisi. Generazione del codice.
13 Biblioteche utili. Applicazioni CLI con cobra. Protobuf e GRPC. registrazione dello zap.
Terzo semestre
Obbligatorio
Algoritmi nella memoria esterna
Il corso introduce gli studenti ai principi di base della costruzione di algoritmi per lavorare con dati che non rientrano nella RAM del computer.
01 Algoritmi nella memoria esterna.
02 Algoritmi che ignorano la cache.
03 Algoritmi per l'elaborazione dei dati in flusso.
Sistemi distribuiti
Corsi speciali consigliati
Forza dei sistemi crittografici
01 Approcci e principi fondamentali della crittografia moderna. Il modello avversario, formalizzazione del concetto di forza, il problema della valutazione della forza e problemi connessi, divisione in primitive e protocolli, fasi della “vita” di un sistema crittografico.
02 Riservatezza. Definizioni quotidiane di riservatezza, approcci alla formalizzazione (modello teorico dell'informazione del nemico, modelli KR, PR, LOR, ROR, IND, CPA, CCA), sistema di crittografia simmetrica, applicazione di informazioni teoriche sulla complessità per determinare la relazione tra Modelli. Relazioni tra modelli avversari di base per valutare la forza dei sistemi di crittografia.
03 Approcci alla costruzione di sistemi di crittografia. Costruire da zero. Costruzioni basate su cifrari a blocchi, definizione di cifrario a blocchi, caratteristiche principali, approcci costruttivi e proprietà. Modelli PRP e PRF. Il paradosso del problema del compleanno. Lemma sulla relazione tra resistenza nei modelli PRF e PRP.
04 Modalità di crittografia. Modalità di crittografia di base: ECB, CBC, CFB, OFB, CTR. Proprietà prestazionali di base. Durabilità del CTR nel LOR-CPA, instabilità della BCE nel LOR-CPA. Instabilità dei modi fondamentali nei modelli CCA.
05 Integrità. Definizione del concetto di integrità. Approcci alla formalizzazione (modello UF-CMA, modelli basati sul compito di discriminazione, modello PRF). Codici di autenticazione dei messaggi e funzioni per la generazione di inserti imitati. Progetti basati su cifrari a blocchi: CBC-MAC, XCBC, TMAC, OMAC. Modalità vulnerabili.
06 Funzioni hash. Definizione, proprietà di base, approcci alla costruzione, formalizzazione e problemi connessi. Esempi di utilizzo delle funzioni hash: hashing delle password, estrazione di entropia. Costruire collisioni e preimmagini da insiemi di bassa cardinalità.
07 Circuiti HMAC, KDF, PRF, DRNG. Diagramma HMAC, passaggi fondamentali per ottenere la valutazione della resistenza. Diversificazione delle chiavi e principio della separazione delle chiavi, schemi KDF e PRF. Generatore pseudocasuale, circuiti DRNG.
08 Carico chiave. Problema di caricamento delle chiavi. I metodi principali per ridurre il carico su una chiave sono le conversioni della chiave esterna e interna. Schemi di re-keying parallelo e seriale, proprietà di base. Albero delle chiavi. Cambio chiave interna e modalità CTR-ACPKM.
09 Crittografia con protezione dalle imitazioni. Formulazione del problema. Strutture generali (EtA, AtE, A&E) e loro proprietà. Esempi di modalità vulnerabili per garantire riservatezza e integrità utilizzando un'unica chiave. Modalità di crittografia AEAD: GCM, MGM.
10 Canale di comunicazione sicuro. Il concetto di canale di comunicazione sicuro: tipologie di canali, proprietà fondamentali (integrità e riservatezza del flusso di dati). Esempi di protocolli vulnerabili. Registra il protocollo TLS 1.3.
Quarto semestre
Scegliere da
Teoria e pratica della concorrenza
Il corso è dedicato ai sistemi e ai compiti competitivi nel senso più ampio: dal livello di competizione tra core del processore per la scrittura su una cella memoria a sistemi distribuiti che desiderano replicare il proprio stato su più server in modo coerente e con tolleranza agli errori.
01 https://gitlab.com/Lipovsky/shad-tpcc-course-2019/blob/master/lectures/syllabus.md
O
Vai alla lingua
01 Introduzione. Programma del corso. Relazione sul corso, criteri di valutazione. Filosofia progettuale. se, cambiare, per. Ciao mondo. Argomenti della riga di comando. Conteggio delle parole. Gif animata. Recupero URL. Recupero dell'URL contemporaneamente. Server web. Giro di andata. Configurazione dell'IDE locale. gofmt. goimports. lanugine
02 Strutture linguistiche di base. nomi, dichiarazioni, variabili, assegnamenti. dichiarazioni di tipo. pacchetti e file. scopo. Valore zero. Allocazione della memoria. Stack vs heap. Tipi di dati di base. Costanti. Tipi di dati compositi. Array. Fette. Mappe. Strutture. JSON. testo/modello. stringa e []byte. Lavorare con unicode. Carattere sostitutivo Unicode. Funzioni. Funzioni con un numero variabile di argomenti. Funzioni anonime. Errori.
03 Metodi. Ricevitore di valore vs ricevitore di puntatore. Incorporamento. Valore del metodo. Incapsulamento. Interfacce. Interfacce come contratti. io. Scrittore, io. Reader e loro implementazioni. ordinare. Interfaccia. errore. http. Gestore. Interfacce come enumerazioni. Digitare l'asserzione. Tipo interruttore. Più grande è l'interfaccia, più debole è l'astrazione. Errore nell'elaborazione. farsi prendere dal panico, rinviare, recuperare. errori.{Unwrap, Is, As}. fmt. Erroref. %w.
04 Goroutine e canali. server dell'orologio. server dell'eco. Dimensione del canale. Lettura bloccante e non bloccante. selezionare l'istruzione. Assiomi del canale. tempo. Dopo. tempo. NuovoTicker. Modello di pipeline. Cancellazione. Ciclo parallelo. sincronizzare. WaitGroup. Gestione degli errori nel codice parallelo. errgroup. Gruppo. Crawler web simultaneo. Attraversamento simultaneo delle directory.
05 Test avanzati. Sottotest. test. B. (T).Logf. (T).Saltaf. (T).FailNow. test. Short(), test dei flag. Generazione di mock. testimoniare/{richiedere, affermare}. testimoniare/accusare. Dispositivo di prova. Prove di integrazione. Rilevatore di perdite di routine. TestMain. Copertura. Confronto dei benchmark.
06 Concorrenza con memoria condivisa. sincronizzare. Mutex. sincronizzare. RWMutex. sincronizzare. Cond. atomico sincronizzare. Una volta. Rilevatore di razza. Cache asincrona. Lavorare con il database. banca dati/sql. sqlx.
07 Contesto del pacchetto. Passaggio di dati con ambito richiesta. middleware http. chi. Router. Richiedi cancellazione. Modelli di concorrenza avanzati. Cache asincrona. Arresto regolare del server. contesto. ConTimeout. Raggruppamento e cancellazione.
08 database/sql, sqlx, lavorare con i database, redis.
09 Riflessione. riflettere. Scrivi e rifletti. Valore. tag di struttura. netto/rpc. codifica/gob. sincronizzare. Carta geografica. riflettere. DeepEqual.
10 Implementazioni del pacchetto io, Reader e Writer dalla libreria standard. Programmazione di basso livello. pericoloso. Pacchetto binario. byte. Respingente. cgo, chiamata di sistema.
Architettura 11GC. Barriera di scrittura. Crescita dello stack. Pausa GC. GOGC. sincronizzare. Piscina. Programmatore di routine. GOMACPROCS. Discussioni trapelate.
12 Vai all'utensileria. pprof. Profilazione di CPU e memoria. Compilazione incrociata. GOOS, GOARCH. CGO_ENABLED=0. Costruisci tag. vai ai moduli. godoc. x/analisi. Generazione del codice.
13 Biblioteche utili. Applicazioni CLI con cobra. Protobuf e GRPC. registrazione dello zap.
O
Banca dati
01 Interfacce dei moderni database: relazionale, chiave-valore, documento, grafico. Algebra relazionale e linguaggio SQL.
02 Lavorare con il disco nei DBMS relazionali classici: pagine, page pool, eliminazione dal pool.
03 Esecuzione di query SQL: analisi delle espressioni, pianificazione, esecuzione. Interpretazione e generazione di codice utilizzando LLVM.
04 Indici nei DBMS relazionali: tipologie di indici, modalità di memorizzazione, utilizzo nelle interrogazioni.
05 Transazioni: acronimo ACID, livelli di isolamento, implementazione delle transazioni tramite lock e MVCC.
06 Disaster recovery: log, checkpoint, algoritmo ARIES.
07 Archiviazione dei dati utilizzando il metodo Merge Tree strutturato in log.
08 DBMS a colonne: vantaggi, caratteristiche, algoritmi di compressione dati.
09 DBMS distribuiti: sharding, transazioni, esecuzione di query.
10 DBMS situati nella memoria principale. Strutture dati per indici in memoria.
O
Reti di computer
01 Introduzione alle tecnologie di rete. La storia delle reti, dei protocolli di rete, dell'organizzazione dell'interazione di rete in una rete peer-to-peer e della connessione delle reti peer-to-peer tra loro.
02 Trasporti. Modello di rete OSI/ISO. TCP, creazione di connessioni di rete, confronto tra TCP e UDP. Analisi Tcpdump – byte in volo, ritrasmette i grafici. Metodi per controllare il flusso di dati in una sessione TCP. Diversi tipi di sessioni TCP e gestione della larghezza di banda dei dati trasmessi nelle reti a pacchetto.
03 Itinerario. Il concetto di routing nelle reti. Routing statico e dinamico. Nozioni di base sul routing dinamico. Protocollo di routing dinamico - OSPF. Protocolli di routing dei vettori di distanza. Panoramica del protocollo di routing BGP: tipi di messaggi, attributi BGP, scelta del percorso ottimale in BGP.
04 Come funziona Internet: BGP e DNS. Instradamento Internet. Panoramica del protocollo DNS.
05 Reti in grandi data center. Caratteristiche dell'architettura delle reti di data center. Requisiti per le reti di data center. Architettura CLOS per reti di data center.
06 Ritardi nelle reti. Caratteristiche della costruzione di reti dorsali di grandi dimensioni. Motivi dei ritardi nella trasmissione dei dati sulle reti dorsali.
07 Scalabilità e disponibilità dei servizi Internet. Tecnologie di bilanciamento del carico e architettura dei servizi.
08 MPLS e SR, Programmabilità di rete. Tecnologie MPLS e Segment Routing per la realizzazione di reti backbone. Scopo della tecnologia MPLS, protocolli utilizzati per lo scambio di etichette.
09 Principi di funzionamento dei dispositivi di rete. Architettura del router, caratteristiche di elaborazione del traffico di rete all'interno dei dispositivi di rete.
10 nuvole. Fondamenti di rete definita dal software: protocolli utilizzati per creare reti definite dal software. Integrazione di piattaforme di virtualizzazione e infrastrutture di rete.
O
Protocolli crittografici
01 Idee di base della crittografia asimmetrica. La differenza principale tra crittografia asimmetrica e crittografia simmetrica. Idee principali: protocollo per la generazione di una chiave condivisa, crittografia a chiave pubblica, firma elettronica (problemi da risolvere, comprensione intuitiva delle proprietà di sicurezza). Schemi crittografici specifici: protocollo Diffie-Hellman, schemi di crittografia ElGamal e RSA, firme ElGamal e RSA. Il problema fondamentale con gli schemi asimmetrici è la fiducia nella chiave pubblica.
02 Forza degli schemi di crittografia asimmetrica di base. Definizione formale di resistenza: modelli UF-CMA, IND-CPA, DLP, CDH, DDH. Relazioni tra loro. Forza dello schema di crittografia ElGamal. L'instabilità dello schema di firma RSA senza l'utilizzo di una funzione hash.
03 Ulteriori informazioni sulla crittografia asimmetrica. La firma di Lampart, il diagramma di Merkle. Attacco DSKS.
04 Fondamenti algebrici e teorici dei numeri della crittografia asimmetrica. Gruppi finiti, gruppi ciclici, ordine degli elementi di gruppo. Problema del logaritmo discreto (DLP). Gruppi moltiplicativi di campi finiti. Informazioni di base sulle curve ellittiche.
05 Curve ellittiche. Il teorema di Hasse. Somma di punti su una curva ellittica. Gruppo di punti su una curva ellittica. Schema di firma GOST R 34.10-2012.
06 Logaritmo discreto. Algoritmi di logaritmi discreti (metodo Rho di Pollard, metodo del match, metodo Polig-Hellman, metodo di calcolo dell'indice).
07 Tecnologia PKI. Principi e concetti di base dell'infrastruttura a chiave pubblica (PKI). Certificato, CA, CRL, OCSP, spazio di fiducia.
08 Protocollo TLS. Storia del protocollo TLS. Struttura del protocollo, principi base di funzionamento. Suite crittografiche con protocollo TLS basate su algoritmi crittografici russi.
09 Nozioni di base sulla creazione di protocolli AKE. Il concetto del protocollo AKE. Proprietà di destinazione. Approcci di base alla costruzione.
10 Archiviazione sicura delle chiavi. Il problema dell'uso sicuro delle chiavi private. Supporti chiave, chiavi non rimovibili. Il problema della presenza di un avversario nel canale, protocolli della famiglia PAKE.
11 Concetti base della tecnologia blockchain. Il compito dell’interazione decentralizzata coordinata. Concetti base del concetto di sicurezza. Approcci alla sicurezza.
12 Principi base delle tecnologie quantistiche e loro applicazioni in crittografia