Infraestructura Big Data - curso gratuito de la Escuela de Análisis de Datos, 4 semestres, Fecha: 5 de diciembre de 2023.
Miscelánea / / December 08, 2023
Para aquellos que aman los algoritmos, trabajan con datos y disfrutan de la programación, pero no les gustaría conectar sus vidas con el aprendizaje automático.
Algoritmos, programación, diseño de sistemas de archivos, discos, redes y procesadores, así como sistemas distribuidos.
En la creación y soporte de sistemas distribuidos eficientes y confiables para almacenar y procesar big data.
Cada estudiante debe completar con éxito al menos tres cursos durante el semestre. Por ejemplo, si hay dos en el programa principal, entonces debe elegir uno de los cursos especiales.
Los conocimientos se prueban principalmente mediante tareas; los exámenes y pruebas se realizan solo en algunas materias.
Primer semestre
Obligatorio
Algoritmos y estructuras de datos, parte 1
01 Complejidad y modelos computacionales. Análisis de valores contables (inicio)
02 Análisis de valores contables (fin)
03 Algoritmos de combinación y ordenación rápida
04 Estadísticas ordinales. Montones (comienzo)
05 montones (fin)
06 hash
07 Árboles de búsqueda (comienzo)
08 Árboles de búsqueda (continuación)
09 Árboles de búsqueda (fin). Sistema de conjuntos disjuntos
10 objetivos de RMQ y LCA
11 Estructuras de datos para búsqueda geométrica.
12 Problema de conectividad dinámica en un gráfico no dirigido
Arquitectura informática y sistemas operativos.
01 UNIX y programación en C: línea de comando, control de procesos, canales, señales. Implementación de un shell de línea de comando.
02 ensamblador x86: aritmética, transiciones, condiciones y llamadas a funciones. Apilar, subiendo por la pila.
03 Vinculación de programas y formato ELF. Vinculación dinámica.
04 El concepto de contexto y flujo de ejecución. Implementación de hilos ligeros.
05 Multitarea preventiva: soporte desde el procesador x86 e implementación de procesos en el kernel UNIX.
06 Arquitectura multinúcleo: coherencia de caché y modelos de memoria. Primitivas de sincronización en programas multiproceso.
07 Programación de procesos en un núcleo y en muchos núcleos.
08 Memoria externa: discos duros y unidades de estado sólido. Principios de funcionamiento de los sistemas de archivos.
09 Virtualización: hardware y software. Transmisión binaria.
Entrenamiento de lenguaje C++, parte 1
C++ es un lenguaje poderoso con una rica herencia. Para quienes acaban de emprender el camino del dominio de este idioma, es muy fácil perderse en la abundancia de técnicas y técnicas creadas a lo largo de los últimos 30 años. El curso enseña "C++ moderno", un subconjunto moderno del lenguaje (estándares 11, 14 y 17). Se presta mucha atención a las herramientas y bibliotecas, cosas que no forman parte del lenguaje, pero sin las cuales no será posible construir un proyecto grande y complejo.
01 Introducción a C++.
02 Constantes. Punteros y enlaces. Pasar argumentos a una función.
03 Clases.
04 Gestión dinámica de la memoria.
05 Variables, punteros y referencias.
06 Gestión de memoria, punteros inteligentes, RAII.
07 Biblioteca de plantillas estándar.
08 Herencia y funciones virtuales.
09 Manejo de errores.
10 patrones de diseño.
11 Espacios de nombres Mover semántica Reenvío perfecto.
12 Representación de estructuras y clases en memoria. Alineación de datos. Punteros a miembros/métodos de la clase. Plantillas variadas.
Segundo período
Obligatorio
Algoritmos y estructuras de datos, parte 2
01 Bypass en ancho. Primer recorrido en profundidad (inicio)
02 Recorrido en profundidad (continuación)
03 Recorrido en profundidad (final). 2 cortes
04 Encontrar los caminos más cortos (comienzo)
05 Encontrar caminos más cortos (continuación)
06 Árboles de cobertura mínima
07 Recortes mínimos. Buscar subcadenas (inicio)
08 Búsqueda de subcadenas (continuación)
09 Búsqueda de subcadenas (fin)
10 árboles de sufijos (principio)
11 árboles de sufijos (final). Matrices de sufijos (inicio)
12 matrices de sufijos (final)
13 subcadenas comunes más largas. Búsqueda aproximada de subcadenas.
Entrenamiento de lenguaje C++, parte 2
La segunda parte del curso de C++, que cubre temas avanzados y capacidades del lenguaje.
01 Programación multiproceso. Sincronización de subprocesos mediante mutex y variables de condición.
02 Variables atómicas. Modelo de memoria C++. Ejemplos de estructuras de datos sin bloqueo.
03 Técnicas avanzadas de metaprogramación en C++. Metafunciones, SFINAE, conceptos.
04 Programación competitiva, interacción con la red.
05 arquitectura llvm. Trabajando con el árbol de análisis de C++. Desarrollo de herramientas para el análisis de código C++.
Para escoger de
Teoría y práctica de la concurrencia
El curso está dedicado a sistemas y tareas competitivos en el sentido más amplio: desde el nivel de competencia entre núcleos de procesador para escribir en una celda. memoria a sistemas distribuidos que desean replicar su estado en múltiples servidores de una manera consistente y tolerante a fallas.
01 https://gitlab.com/Lipovsky/shad-tpcc-course-2019/blob/master/lectures/syllabus.md
o
ir idioma
01 Introducción. Programa del curso. Informes del curso, criterios de evaluación. Filosofía de diseño. si, cambiar, para. Hola Mundo. Argumentos de la línea de comando. El recuento de palabras. GIF animado. Obteniendo URL. Obteniendo URL al mismo tiempo. Servidor web. Gira de go. Configuración IDE local. gofmt. irimportaciones. pelusa.
02 Estructuras básicas del lenguaje. nombres, declaraciones, variables, asignaciones. declaraciones de tipo. paquetes y archivos. alcance. Valor cero. Asignación de memoria. Pila versus montón. Tipos de datos básicos. Constantes. Tipos de datos compuestos. Matrices. Rebanadas. Mapas. Estructuras. JSON. texto/plantilla. cadena y []byte. Trabajando con Unicode. Carácter de reemplazo Unicode. Funciones. Funciones con un número variable de argumentos. Funciones anónimas. Errores.
03 Métodos. Receptor de valor versus receptor de puntero. Incrustación. Valor del método. Encapsulación. Interfaces. Interfaces como contratos. yo. Escritor, io. Lector y sus implementaciones. clasificar. Interfaz. error. http. Manipulador. Interfaces como enumeraciones. Escriba afirmación. Tipo interruptor. Cuanto más grande es la interfaz, más débil es la abstracción. Error de procesamiento. pánico, aplazar, recuperarse. errores.{Desenvolver, Es, Como}. fmt. Errorf. % peso.
04 Gorrutinas y canales. servidor de reloj. servidor de eco. Tamaño del canal. Lectura bloqueante y no bloqueante. seleccionar declaración. Axiomas de canal. tiempo. Después. tiempo. Nuevo ticker. Patrón de tubería. Cancelación. Bucle paralelo. sincronización. Grupo de espera. Manejo de errores en código paralelo. grupo de errores. Grupo. Rastreador web concurrente. Recorrido simultáneo de directorios.
05 Pruebas avanzadas. Subpruebas. pruebas. B. (T).Logf. (T).Skipf. (T).Falla ahora. pruebas. Short(), probando banderas. Generación de burlas. testificar/{requerir, afirmar}. testificar/suite. Accesorio de prueba. Pruebas de integración. Detector de fugas de rutina. PruebasPrincipal. Cobertura. Comparación de puntos de referencia.
06 Pruebas avanzadas. Subpruebas. pruebas. B. (T).Logf. (T).Skipf. (T).Falla ahora. pruebas. Short(), probando banderas. Generación de burlas. testificar/{requerir, afirmar}. testificar/suite. Accesorio de prueba. Pruebas de integración. Detector de fugas de rutina. PruebasPrincipal. Cobertura. Comparación de puntos de referencia.
07 Contexto del paquete. Pasar datos con alcance de solicitud. middlewarehttp. chi. Enrutador. Solicitar una cancelación. Patrones de concurrencia avanzados. Caché asíncrono. Cierre elegante del servidor. contexto. Con tiempo de espera. Loteado y cancelación.
08 base de datos/sql, sqlx, trabajar con bases de datos, redis.
09 Reflexión. reflejar. Escribe y reflexiona. Valor. etiquetas de estructura. neto/rpc. codificación/gob. sincronización. Mapa. reflejar. Profundo igual.
10 implementaciones de Package io, Reader y Writer de la biblioteca estándar. Programación de bajo nivel. inseguro. Paquete binario. bytes. Buffer. cgo, llamada al sistema.
Arquitectura de 11 GC. Escribir barrera. Crecimiento de la pila. Pausa de la general. GOGC. sincronización. Piscina. Programador de rutinas. GOMACPROCS. Hilos filtrados.
12 Ir a herramientas. pprof. Perfilado de CPU y memoria. Compilación cruzada. GOOS, GOARCH. CGO_ENABLED=0. Crear etiquetas. ir módulos. dios. x/análisis. Codigo de GENERACION.
13 bibliotecas útiles. Aplicaciones CLI con cobra. Protobuf y GRPC. registro de zap.
tercer semestre
Obligatorio
Algoritmos en memoria externa
El curso presenta a los estudiantes los principios básicos de la construcción de algoritmos para trabajar con datos que no caben en la RAM de la computadora.
01 Algoritmos en memoria externa.
02 Algoritmos ajenos al caché.
03 Algoritmos para el procesamiento de datos de flujos.
Sistemas distribuidos
Cursos especiales recomendados
Fortaleza de los sistemas criptográficos.
01 Enfoques y principios básicos de la criptografía moderna. El modelo del adversario, formalización del concepto de fuerza, el problema de evaluar la fuerza y problemas relacionados, división en primitivas y protocolos, etapas de la “vida” de un sistema criptográfico.
02 Confidencialidad. Definiciones cotidianas de confidencialidad, enfoques de formalización (modelo teórico de la información del enemigo, modelos KR, PR, LOR, ROR, IND, CPA, CCA), sistema de cifrado simétrico, aplicación de información de teoría de la complejidad para determinar la relación entre modelos. Relaciones entre modelos básicos de adversario para evaluar la solidez de los sistemas de cifrado.
03 Enfoques para la construcción de sistemas de cifrado. Construyendo desde cero. Construcciones basadas en cifrados en bloque, definición de cifrado en bloque, características principales, enfoques de construcción y propiedades. Modelos PRP y PRF. La paradoja del problema del cumpleaños. Lema sobre la relación entre resistencia en los modelos PRF y PRP.
04 Modos de cifrado. Modos de cifrado básicos: ECB, CBC, CFB, OFB, CTR. Propiedades básicas de rendimiento. Durabilidad del CTR en LOR-CPA, inestabilidad del BCE en LOR-CPA. Inestabilidad de modos básicos en modelos CCA.
05 Integridad. Definición del concepto de integridad. Enfoques de formalización (modelo UF-CMA, modelos basados en la tarea de discriminación, modelo PRF). Códigos de autenticación de mensajes y funciones para generar inserciones imitadas. Diseños basados en cifrados por bloques: CBC-MAC, XCBC, TMAC, OMAC. Modos vulnerables.
06 funciones hash. Definición, propiedades básicas, enfoques de construcción, formalización y problemas relacionados. Ejemplos de uso de funciones hash: hash de contraseñas, extracción de entropía. Construcción de colisiones y preimágenes a partir de conjuntos de baja cardinalidad.
07 circuitos HMAC, KDF, PRF, DRNG. Diagrama HMAC, pasos básicos para obtener la clasificación de resistencia. Diversificación de claves y principio de separación de claves, esquemas KDF y PRF. Generador pseudoaleatorio, circuitos DRNG.
08 Carga de clave. Problema de carga de claves. Los principales métodos para reducir la carga de una clave son las conversiones de claves externas e internas. Esquemas de recodificación de claves en paralelo y en serie, propiedades básicas. Árbol clave. Cambio de clave interna y modo CTR-ACPKM.
09 Cifrado con protección de imitación. Formulación del problema. Estructuras generales (EtA, AtE, A&E) y sus propiedades. Ejemplos de modos vulnerables para garantizar la confidencialidad y la integridad mediante una única clave. Modos de cifrado AEAD: GCM, MGM.
10 Canal de comunicación seguro. El concepto de canal de comunicación seguro: tipos de canales, propiedades básicas (integridad y confidencialidad del flujo de datos). Ejemplos de protocolos vulnerables. Grabe el protocolo TLS 1.3.
cuarto semestre
Para escoger de
Teoría y práctica de la concurrencia
El curso está dedicado a sistemas y tareas competitivos en el sentido más amplio: desde el nivel de competencia entre núcleos de procesador para escribir en una celda. memoria a sistemas distribuidos que desean replicar su estado en múltiples servidores de una manera consistente y tolerante a fallas.
01 https://gitlab.com/Lipovsky/shad-tpcc-course-2019/blob/master/lectures/syllabus.md
o
ir idioma
01 Introducción. Programa del curso. Informes del curso, criterios de evaluación. Filosofía de diseño. si, cambiar, para. Hola Mundo. Argumentos de la línea de comando. El recuento de palabras. GIF animado. Obteniendo URL. Obteniendo URL al mismo tiempo. Servidor web. Gira de go. Configuración IDE local. gofmt. irimportaciones. pelusa.
02 Estructuras básicas del lenguaje. nombres, declaraciones, variables, asignaciones. declaraciones de tipo. paquetes y archivos. alcance. Valor cero. Asignación de memoria. Pila versus montón. Tipos de datos básicos. Constantes. Tipos de datos compuestos. Matrices. Rebanadas. Mapas. Estructuras. JSON. texto/plantilla. cadena y []byte. Trabajando con Unicode. Carácter de reemplazo Unicode. Funciones. Funciones con un número variable de argumentos. Funciones anónimas. Errores.
03 Métodos. Receptor de valor versus receptor de puntero. Incrustación. Valor del método. Encapsulación. Interfaces. Interfaces como contratos. yo. Escritor, io. Lector y sus implementaciones. clasificar. Interfaz. error. http. Manipulador. Interfaces como enumeraciones. Escriba afirmación. Tipo interruptor. Cuanto más grande es la interfaz, más débil es la abstracción. Error de procesamiento. pánico, aplazar, recuperarse. errores.{Desenvolver, Es, Como}. fmt. Errorf. % peso.
04 Gorrutinas y canales. servidor de reloj. servidor de eco. Tamaño del canal. Lectura bloqueante y no bloqueante. seleccionar declaración. Axiomas de canal. tiempo. Después. tiempo. Nuevo ticker. Patrón de tubería. Cancelación. Bucle paralelo. sincronización. Grupo de espera. Manejo de errores en código paralelo. grupo de errores. Grupo. Rastreador web concurrente. Recorrido simultáneo de directorios.
05 Pruebas avanzadas. Subpruebas. pruebas. B. (T).Logf. (T).Skipf. (T).Falla ahora. pruebas. Short(), probando banderas. Generación de burlas. testificar/{requerir, afirmar}. testificar/suite. Accesorio de prueba. Pruebas de integración. Detector de fugas de rutina. PruebasPrincipal. Cobertura. Comparación de puntos de referencia.
06 Simultaneidad con memoria compartida. sincronización. Mutex. sincronización. RWMutex. sincronización. Cond. atómico sincronización. Una vez. Detector de raza. Caché asíncrono. Trabajando con la base de datos. base de datos/sql. sqlx.
07 Contexto del paquete. Pasar datos con alcance de solicitud. middlewarehttp. chi. Enrutador. Solicitar una cancelación. Patrones de concurrencia avanzados. Caché asíncrono. Cierre elegante del servidor. contexto. Con tiempo de espera. Loteado y cancelación.
08 base de datos/sql, sqlx, trabajar con bases de datos, redis.
09 Reflexión. reflejar. Escribe y reflexiona. Valor. etiquetas de estructura. neto/rpc. codificación/gob. sincronización. Mapa. reflejar. Profundo igual.
10 implementaciones de Package io, Reader y Writer de la biblioteca estándar. Programación de bajo nivel. inseguro. Paquete binario. bytes. Buffer. cgo, llamada al sistema.
Arquitectura de 11 GC. Escribir barrera. Crecimiento de la pila. Pausa de la general. GOGC. sincronización. Piscina. Programador de rutinas. GOMACPROCS. Hilos filtrados.
12 Ir a herramientas. pprof. Perfilado de CPU y memoria. Compilación cruzada. GOOS, GOARCH. CGO_ENABLED=0. Crear etiquetas. ir módulos. dios. x/análisis. Codigo de GENERACION.
13 bibliotecas útiles. Aplicaciones CLI con cobra. Protobuf y GRPC. registro de zap.
o
Base de datos
01 Interfaces de bases de datos modernas: relacional, clave-valor, documento, gráfico. Álgebra relacional y lenguaje SQL.
02 Trabajar con disco en DBMS relacional clásico: páginas, grupo de páginas, desalojo del grupo.
03 Ejecución de consultas SQL: análisis de expresiones, planificación, ejecución. Interpretación y generación de código usando LLVM.
04 Índices en SGBD relacionales: tipos de índices, métodos de almacenamiento, uso en consultas.
05 Transacciones: Acrónimo ACID, niveles de aislamiento, implementación de transacciones mediante bloqueos y MVCC.
06 Recuperación ante desastres: registro, puntos de control, algoritmo ARIES.
07 Almacenamiento de datos mediante el método Log-Structured Merge Tree.
08 DBMS basado en columnas: ventajas, características, algoritmos de compresión de datos.
09 DBMS distribuido: fragmentación, transacciones, ejecución de consultas.
10 DBMS ubicados en la memoria principal. Estructuras de datos para índices en memoria.
o
Red de computadoras
01 Introducción a las tecnologías de redes. La historia de las redes, los protocolos de red, la organización de la interacción de la red en una red peer-to-peer y la conexión de redes peer-to-peer entre sí.
02 Transporte. Modelo de red OSI/ISO. TCP, establecimiento de conexión de red, comparación de TCP y UDP. Análisis tcpdump: bytes en vuelo, retransmite gráficos. Métodos para controlar el flujo de datos en una sesión TCP. Diferentes tipos de sesiones TCP y gestión del ancho de banda de datos transmitidos en redes de paquetes.
03 Enrutamiento. El concepto de enrutamiento en redes. Enrutamiento estático y dinámico. Conceptos básicos del enrutamiento dinámico. Protocolo de enrutamiento dinámico: OSPF. Protocolos de enrutamiento por vector de distancia. Descripción general del protocolo de enrutamiento BGP: tipos de mensajes, atributos BGP, elección de la ruta óptima en BGP.
04 Cómo funciona Internet: BGP y DNS. Enrutamiento de Internet. Descripción general del protocolo DNS.
05 Redes en grandes centros de datos. Características de la arquitectura de las redes de centros de datos. Requisitos para redes de centros de datos. Arquitectura CLOS para redes de centros de datos.
06 Retrasos en las redes. Características de la construcción de grandes redes troncales. Razones de los retrasos en la transmisión de datos a través de redes troncales.
07 Escalamiento y disponibilidad de servicios de Internet. Tecnologías de equilibrio de carga y arquitectura de servicios.
08 MPLS y SR, Programabilidad de redes. MPLS y tecnologías de enrutamiento de segmentos para la construcción de redes troncales. Finalidad de la tecnología MPLS, protocolos utilizados para el intercambio de etiquetas.
09 Principios de funcionamiento de dispositivos de red. Arquitectura del enrutador, características de procesamiento del tráfico de red dentro de los dispositivos de red.
10 nubes. Fundamentos de redes definidas por software: protocolos utilizados para construir redes definidas por software. Integración de plataformas de virtualización e infraestructura de red.
o
Protocolos criptográficos
01 Ideas básicas de criptografía asimétrica. La principal diferencia entre criptografía asimétrica y criptografía simétrica. Ideas principales: protocolo para generar una clave compartida, cifrado de clave pública, firma electrónica (problemas a resolver, comprensión intuitiva de las propiedades de seguridad). Esquemas criptográficos específicos: protocolo Diffie-Hellman, esquemas de cifrado ElGamal y RSA, firmas ElGamal y RSA. El problema fundamental de los esquemas asimétricos es la confianza en la clave pública.
02 Fortaleza de los esquemas básicos de criptografía asimétrica. Definición formal de resistencia: modelos UF-CMA, IND-CPA, DLP, CDH, DDH. Relaciones entre ellos. Fortaleza del esquema de cifrado ElGamal. La inestabilidad del esquema de firma RSA sin utilizar una función hash.
03 Aprenda más sobre la criptografía asimétrica. Firma de Lampart, diagrama de Merkle. Ataque DSKS.
04 Fundamentos algebraicos y de teoría de números de la criptografía asimétrica. Grupos finitos, grupos cíclicos, orden de los elementos del grupo. Problema de logaritmos discretos (DLP). Grupos multiplicativos de cuerpos finitos. Información básica sobre curvas elípticas.
05 Curvas elípticas. El teorema de Hasse. Suma de puntos en una curva elíptica. Grupo de puntos en una curva elíptica. Esquema de firma GOST R 34.10-2012.
06 Logaritmo discreto. Algoritmos de logaritmos discretos (método Rho de Pollard, método de emparejamiento, método Polig-Hellman, método de cálculo de índices).
07 tecnología PKI. Principios y conceptos básicos de infraestructura de clave pública (PKI). Certificado, CA, CRL, OCSP, espacio de confianza.
08 protocolo TLS. Historia del protocolo TLS. Estructura del protocolo, principios básicos de funcionamiento. Suites criptográficas del protocolo TLS basadas en algoritmos criptográficos rusos.
09 Conceptos básicos de la construcción de protocolos AKE. El concepto del protocolo AKE. Propiedades de destino. Enfoques básicos de la construcción.
10 Almacenamiento seguro de claves. El problema del uso seguro de claves privadas. Medios clave, claves no extraíbles. El problema de la presencia de un adversario en el canal, protocolos de la familia PAKE.
11 Conceptos básicos de la tecnología blockchain. La tarea de la interacción coordinada y descentralizada. Conceptos básicos del concepto de seguridad. Enfoques de seguridad.
12 Principios básicos de las tecnologías cuánticas y sus aplicaciones en criptografía.