Big Data Infrastructure - безплатен курс от School of Data Analysis, 4 семестъра, Дата: 5 декември 2023 г.
разни / / December 08, 2023
За тези, които обичат алгоритмите, работата с данни и се наслаждават на програмирането, но не биха искали да свържат живота си с машинно обучение.
Алгоритми, програмиране, проектиране на файлови системи, дискове, мрежи и процесори, както и разпределени системи.
В създаването и поддръжката на ефективни и надеждни разпределени системи за съхранение и обработка на големи данни.
Всеки студент трябва да завърши успешно поне три курса през семестъра. Например, ако има две от тях в основната програма, тогава трябва да изберете един от специалните курсове.
Знанията се проверяват предимно чрез домашна работа – изпити и контролни се провеждат само по някои предмети.
Първи семестър
Задължителен
Алгоритми и структури от данни, част 1
01 Сложност и изчислителни модели. Анализ на счетоводните стойности (начало)
02 Анализ на счетоводните стойности (край)
03 Алгоритми за сливане-сортиране и бързо сортиране
04 Поредна статистика. Купища (начало)
05 Купища (край)
06 Хеширане
07 Търсене на дървета (началото)
08 Дървета за търсене (продължение)
09 Търсене на дървета (край). Система от несвързани множества
10 Цели на RMQ и LCA
11 Структури от данни за геометрично търсене
12 Проблем за динамична свързаност в неориентиран граф
Компютърна архитектура и операционни системи
01 UNIX и програмиране на C: команден ред, управление на процеси, канали, сигнали. Внедряване на обвивка на командния ред.
02 x86 асемблер: аритметика, преходи, условия и извиквания на функции. Стек, движение нагоре по стека.
03 Свързване на програми и ELF формат. Динамично свързване.
04 Концепцията за контекст и поток на изпълнение. Внедряване на леки нишки.
05 Превантивна многозадачност: поддръжка от процесора x86 и внедряване на процеси в ядрото на UNIX.
06 Многоядрена архитектура: кохерентност на кеша и модели на паметта. Примитиви за синхронизация в многонишкови програми.
07 Планиране на процеси на едно ядро и на много ядра.
08 Външна памет: твърди дискове и твърди дискове. Принципи на работа на файловите системи.
09 Виртуализация: хардуер и софтуер. Двоично излъчване.
Обучение по език C++, част 1
C++ е мощен език с богато наследство. За тези, които току-що са тръгнали по пътя на овладяването на този език, е много лесно да се изгубят в изобилието от техники и техники, създадени през последните 30 години. Курсът преподава "Modern C++" - модерно подмножество на езика (стандарти 11, 14 и 17). Обръща се много внимание на инструментите и библиотеките – неща, които не са част от езика, но без които няма да е възможно изграждането на голям и сложен проект.
01 Въведение в C++.
02 Константи. Указатели и връзки. Предаване на аргументи към функция.
03 Класове.
04 Динамично управление на паметта.
05 Променливи, указатели и препратки.
06 Управление на паметта, интелигентни указатели, RAII.
07 Стандартна библиотека с шаблони.
08 Наследяване и виртуални функции.
09 Обработка на грешки.
10 шаблона за проектиране.
11 Пространства от имена Семантика на преместване Перфектно препращане.
12 Представяне на структури и класове в паметта. Подравняване на данните. Указатели към членове/методи на класа. Различни шаблони.
Втори срок
Задължителен
Алгоритми и структури от данни, част 2
01 Байпас по ширина. Първо обхождане на дълбочина (начало)
02 Обхождане на дълбочината (продължение)
03 Обхождане в дълбочина (край). 2-разфасовки
04 Намиране на най-кратките пътища (началото)
05 Намиране на най-кратките пътища (продължение)
06 Минимални обхващащи дървета
07 Минимални съкращения. Търсене на поднизове (начало)
08 Търсене на поднизове (продължение)
09 Търсене на поднизове (край)
10 Суфиксни дървета (начало)
11 Суфиксни дървета (окончание). Суфиксни масиви (начало)
12 суфиксни масива (край)
13 Най-дългите общи поднизове. Приблизително търсене на подниз.
C++ езиково обучение, част 2
Втората част от курса по C++, която обхваща теми и езикови възможности за напреднали.
01 Многопоточно програмиране. Синхронизиране на нишки с помощта на мютекси и променливи на условие.
02 Атомни променливи. C++ модел на паметта. Примери за структури от данни без заключване.
03 Разширени техники за мета-програмиране в C++. Метафункции, SFINAE, концепции.
04 Състезателно програмиране, взаимодействие с мрежата.
05 llvm архитектура. Работа с дървото за разбор на C++. Разработване на инструменти за анализ на C++ код.
Да избера от
Теория и практика на паралелността
Курсът е посветен на конкурентни системи и задачи в най-широк смисъл: от нивото на конкуренция между процесорните ядра за запис в една клетка памет към разпределени системи, които искат да репликират състоянието си в множество сървъри по устойчив на грешки и последователен начин.
01 https://gitlab.com/Lipovsky/shad-tpcc-course-2019/blob/master/lectures/syllabus.md
или
Go език
01 Въведение. Програма на курса. Отчитане на курса, критерии за оценка. Философия на дизайна. ако, превключване, за. Здравей свят. Аргументи на командния ред. Брой думи. Анимиран gif. URL адресът се извлича. Едновременно извличане на URL. Уеб сървър. Обиколка на го. Локална настройка на IDE. gofmt. goimports. мъх
02 Основни езикови структури. имена, декларации, променливи, присвоявания. декларации за типове. пакети и файлове. обхват. Нулева стойност. Разпределение на паметта. Стек срещу купчина. Основни типове данни. Константи. Съставни типове данни. Масиви. Резени. Карти. Структури. JSON. текст/шаблон. низ и []байт. Работа с unicode. Уникод заместващ знак. Функции. Функции с променлив брой аргументи. Анонимни функции. Грешки.
03 Методи. Получател на стойност срещу приемник на указател. Вграждане. Стойност на метода. Капсулиране. Интерфейси. Интерфейси като договори. io. Писател, io. Reader и техните реализации. вид. Интерфейс. грешка. http. Манипулатор. Интерфейси като изброявания. Типово твърдение. Тип превключвател. Колкото по-голям е интерфейсът, толкова по-слаба е абстракцията. Обработка на грешка. паника, отлагане, възстановяване. грешки.{Unwrap, Is, As}. fmt. Errorf. %w.
04 Goroutines и канали. часовников сървър. ехо сървър. Размер на канала. Блокиращо и неблокиращо четене. изберете изявление. Аксиоми на канала. време. След. време. NewTicker. Модел на тръбопровод. Анулиране. Паралелен цикъл. синхронизиране. WaitGroup. Обработка на грешки в паралелен код. errgroup. Група. Едновременен уеб робот. Едновременно обхождане на директория.
05 Разширено тестване. Подтестове. тестване. б. (T).Logf. (T).Скипф. (T).FailNow. тестване. Short(), флагове за тестване. Генериране на подигравки. свидетелствам/{изисквам, твърдя}. свидетелствам/суит. Тестово приспособление. Интеграционни тестове. Goroutine детектор за течове. TestingMain. Покритие. Сравнение на бенчмаркове.
06 Разширено тестване. Подтестове. тестване. б. (T).Logf. (T).Скипф. (T).FailNow. тестване. Short(), флагове за тестване. Генериране на подигравки. свидетелствам/{изисквам, твърдя}. свидетелствам/суит. Тестово приспособление. Интеграционни тестове. Goroutine детектор за течове. TestingMain. Покритие. Сравнение на бенчмаркове.
07 Контекст на пакета. Предаване на данни с обхват на заявка. http междинен софтуер. чи. Рутер. Искане за анулиране. Разширени модели за едновременност. Асинхронен кеш. Грациозно изключване на сървъра. контекст. WithTimeout. Пакетиране и анулиране.
08 база данни/sql, sqlx, работа с бази данни, redis.
09 Отражение. отразявам. Въведете и отразете. Стойност. struct тагове. net/rpc. кодиране/gob. синхронизиране. Карта. отразявам. DeepEqual.
10 реализации на пакет io, Reader и Writer от стандартната библиотека. Програмиране на ниско ниво. опасно. Двоичен пакет. байтове. Буфер. cgo, системно извикване.
11 GC архитектура. Бариера за писане. Растеж на стека. GC пауза. GOGC. синхронизиране. Басейн. Goroutine планировчик. GOMACPROCS. Изтекли нишки.
12 Отидете на инструменти. ппроф. Профилиране на процесора и паметта. Кръстосана компилация. GOOS, GOARCH. CGO_ENABLED=0. Изграждане на етикети. отидете модули. godoc. х/анализ. Генериране на код.
13 полезни библиотеки. CLI приложения с cobra. Protobuf и GRPC. зап сеч.
Трети семестър
Задължителен
Алгоритми във външна памет
Курсът запознава студентите с основните принципи на конструиране на алгоритми за работа с данни, които не се побират в RAM паметта на компютъра.
01 Алгоритми във външна памет.
02 Алгоритми, забравящи за кеша.
03 Алгоритми за обработка на поточни данни.
Разпределени системи
Препоръчителни специални курсове
Сила на криптографските системи
01 Основни подходи и принципи на съвременната криптография. Моделът на противника, формализация на концепцията за сила, проблемът за оценка на силата и свързаните с нея проблеми, разделяне на примитиви и протоколи, етапи от „живота“ на криптографска система.
02 Поверителност. Всекидневни дефиниции на конфиденциалност, подходи за формализиране (информационно-теоретичен модел на врага, модели KR, PR, LOR, ROR, IND, CPA, CCA), симетрична система за криптиране, прилагане на информация от теория на сложността за определяне на връзката между модели. Връзки между основните противникови модели за оценка на силата на системите за криптиране.
03 Подходи за изграждане на системи за криптиране. Изграждане от нулата. Конструкции на базата на блокови шифри, определение на блоков шифър, основни характеристики, подходи за конструиране и свойства. Модели PRP и PRF. Парадоксът на проблема с рождения ден. Лема за връзката между съпротивлението в PRF и PRP моделите.
04 Режими на криптиране. Основни режими на криптиране: ECB, CBC, CFB, OFB, CTR. Основни експлоатационни свойства. Устойчивост на CTR в LOR-CPA, нестабилност на ECB в LOR-CPA. Нестабилност на основните режими в CCA моделите.
05 Почтеност. Дефиниция на понятието почтеност. Подходи за формализация (UF-CMA модел, модели, базирани на задачата за дискриминация, PRF модел). Кодове за удостоверяване на съобщения и функции за генериране на имитирани вмъквания. Дизайни, базирани на блокови шифри: CBC-MAC, XCBC, TMAC, OMAC. Уязвими режими.
06 Хеш функции. Дефиниция, основни свойства, подходи за изграждане, формализация и свързани проблеми. Примери за използване на хеш функции: хеширане на пароли, извличане на ентропия. Конструиране на сблъсъци и предобрази от набори с ниска кардиналност.
07 Вериги HMAC, KDF, PRF, DRNG. HMAC диаграма, основни стъпки за получаване на рейтинг на устойчивост. Ключова диверсификация и принцип на разделяне на ключовете, KDF и PRF схеми. Псевдослучаен генератор, DRNG схеми.
08 Натоварване на ключ. Проблем със зареждането на ключове. Основните методи за намаляване на натоварването на ключ са външни и вътрешни преобразувания на ключове. Схеми за паралелно и серийно прекодиране, основни свойства. Ключово дърво. Вътрешна промяна на ключа и режим CTR-ACPKM.
09 Криптиране със защита срещу имитация. Формулиране на проблема. Общи структури (EtA, AtE, A&E) и техните свойства. Примери за уязвими режими за осигуряване на поверителност и цялост с помощта на един ключ. AEAD режими на криптиране: GCM, MGM.
10 Сигурен канал за комуникация. Концепцията за защитен комуникационен канал: видове канали, основни свойства (интегритет и конфиденциалност на потока от данни). Примери за уязвими протоколи. Запис TLS 1.3 протокол.
Четвърти семестър
Да избера от
Теория и практика на паралелността
Курсът е посветен на конкурентни системи и задачи в най-широк смисъл: от нивото на конкуренция между процесорните ядра за запис в една клетка памет към разпределени системи, които искат да репликират състоянието си в множество сървъри по устойчив на грешки и последователен начин.
01 https://gitlab.com/Lipovsky/shad-tpcc-course-2019/blob/master/lectures/syllabus.md
или
Go език
01 Въведение. Програма на курса. Отчитане на курса, критерии за оценка. Философия на дизайна. ако, превключване, за. Здравей свят. Аргументи на командния ред. Брой думи. Анимиран gif. URL адресът се извлича. Едновременно извличане на URL. Уеб сървър. Обиколка на го. Локална настройка на IDE. gofmt. goimports. мъх
02 Основни езикови структури. имена, декларации, променливи, присвоявания. декларации за типове. пакети и файлове. обхват. Нулева стойност. Разпределение на паметта. Стек срещу купчина. Основни типове данни. Константи. Съставни типове данни. Масиви. Резени. Карти. Структури. JSON. текст/шаблон. низ и []байт. Работа с unicode. Уникод заместващ знак. Функции. Функции с променлив брой аргументи. Анонимни функции. Грешки.
03 Методи. Получател на стойност срещу приемник на указател. Вграждане. Стойност на метода. Капсулиране. Интерфейси. Интерфейси като договори. io. Писател, io. Reader и техните реализации. вид. Интерфейс. грешка. http. Манипулатор. Интерфейси като изброявания. Типово твърдение. Тип превключвател. Колкото по-голям е интерфейсът, толкова по-слаба е абстракцията. Обработка на грешка. паника, отлагане, възстановяване. грешки.{Unwrap, Is, As}. fmt. Errorf. %w.
04 Goroutines и канали. часовников сървър. ехо сървър. Размер на канала. Блокиращо и неблокиращо четене. изберете изявление. Аксиоми на канала. време. След. време. NewTicker. Модел на тръбопровод. Анулиране. Паралелен цикъл. синхронизиране. WaitGroup. Обработка на грешки в паралелен код. errgroup. Група. Едновременен уеб робот. Едновременно обхождане на директория.
05 Разширено тестване. Подтестове. тестване. б. (T).Logf. (T).Скипф. (T).FailNow. тестване. Short(), флагове за тестване. Генериране на подигравки. свидетелствам/{изисквам, твърдя}. свидетелствам/суит. Тестово приспособление. Интеграционни тестове. Goroutine детектор за течове. TestingMain. Покритие. Сравнение на бенчмаркове.
06 Паралелност със споделена памет. синхронизиране. Mutex. синхронизиране. RWMutex. синхронизиране. Cond. атомен синхронизиране. Веднъж. Детектор за раса. Асинхронен кеш. Работа с базата данни. база данни/sql. sqlx.
07 Контекст на пакета. Предаване на данни с обхват на заявка. http междинен софтуер. чи. Рутер. Искане за анулиране. Разширени модели за едновременност. Асинхронен кеш. Грациозно изключване на сървъра. контекст. WithTimeout. Пакетиране и анулиране.
08 база данни/sql, sqlx, работа с бази данни, redis.
09 Отражение. отразявам. Въведете и отразете. Стойност. struct тагове. net/rpc. кодиране/gob. синхронизиране. Карта. отразявам. DeepEqual.
10 реализации на пакет io, Reader и Writer от стандартната библиотека. Програмиране на ниско ниво. опасно. Двоичен пакет. байтове. Буфер. cgo, системно извикване.
11 GC архитектура. Бариера за писане. Растеж на стека. GC пауза. GOGC. синхронизиране. Басейн. Goroutine планировчик. GOMACPROCS. Изтекли нишки.
12 Отидете на инструменти. ппроф. Профилиране на процесора и паметта. Кръстосана компилация. GOOS, GOARCH. CGO_ENABLED=0. Изграждане на етикети. отидете модули. godoc. х/анализ. Генериране на код.
13 полезни библиотеки. CLI приложения с cobra. Protobuf и GRPC. зап сеч.
или
База данни
01 Интерфейси на съвременни бази данни: релационни, ключ-стойност, документ, графика. Релационна алгебра и език SQL.
02 Работа с диск в класическа релационна СУБД: страници, пул страници, изваждане от пула.
03 Изпълнение на SQL заявки: разбор на изрази, планиране, изпълнение. Интерпретация и генериране на код с помощта на LLVM.
04 Индекси в релационни СУБД: видове индекси, методи за съхранение, използване в заявки.
05 Транзакции: ACID акроним, нива на изолация, прилагане на транзакции чрез ключалки и MVCC.
06 Възстановяване след срив: дневник, контролни точки, алгоритъм ARIES.
07 Съхраняване на данни с помощта на метода на Log-Structured Merge Tree.
08 СУБД, базирана на колони: предимства, характеристики, алгоритми за компресиране на данни.
09 Разпределена СУБД: шардинг, транзакции, изпълнение на заявки.
10 СУБД, разположена в основната памет. Структури от данни за индекси в паметта.
или
Компютърни мрежи
01 Въведение в мрежовите технологии. Историята на мрежите, мрежовите протоколи, организацията на мрежовото взаимодействие в мрежа peer-to-peer и връзката на мрежите peer-to-peer помежду си.
02 Транспорт. OSI/ISO мрежов модел. TCP, установяване на мрежова връзка, сравнение на TCP и UDP. Tcpdump анализ – байтове в движение, препредава графики. Методи за управление на потока от данни в TCP сесия. Различни видове TCP сесии и управление на честотната лента на предаваните данни в пакетни мрежи.
03 Маршрутизиране. Концепцията за маршрутизиране в мрежите. Статично и динамично маршрутизиране. Основи на динамичното маршрутизиране. Протокол за динамично маршрутизиране - OSPF. Протоколи за векторно маршрутизиране на разстояние. Преглед на протокола за маршрутизиране на BGP - типове съобщения, BGP атрибути, избор на оптимален маршрут в BGP.
04 Как работи Интернет: BGP и DNS. Интернет маршрутизация. Преглед на DNS протокола.
05 Мрежи в големи центрове за данни. Характеристики на архитектурата на мрежите от центрове за данни. Изисквания за мрежи от центрове за данни. CLOS архитектура за мрежи от центрове за данни.
06 Закъснения в мрежите. Характеристики на изграждане на големи опорни мрежи. Причини за забавяне на предаването на данни през опорни мрежи.
07 Мащабиране и достъпност на Интернет услуги. Технологии за балансиране на натоварването и архитектура на услугата.
08 MPLS и SR, Мрежова програмируемост. MPLS и Segment Routing технологии за изграждане на опорни мрежи. Предназначение на технологията MPLS, протоколи, използвани за обмен на етикети.
09 Принципи на работа на мрежовите устройства. Архитектура на рутера, характеристики на обработка на мрежовия трафик вътре в мрежовите устройства.
10 Облаци. Основи на софтуерно дефинирани мрежи - протоколи, използвани за изграждане на софтуерно дефинирани мрежи. Интеграция на платформи за виртуализация и мрежова инфраструктура.
или
Криптографски протоколи
01 Основни идеи на асиметричната криптография. Основната разлика между асиметричната криптография и симетричната криптография. Основни идеи: протокол за генериране на споделен ключ, криптиране с публичен ключ, електронен подпис (проблеми за решаване, интуитивно разбиране на свойствата на сигурността). Специфични криптографски схеми: протокол Diffie-Hellman, схеми за криптиране ElGamal и RSA, сигнатури ElGamal и RSA. Основният проблем с асиметричните схеми е доверието в публичния ключ.
02 Сила на основните асиметрични криптографски схеми. Формална дефиниция на съпротивлението: модели UF-CMA, IND-CPA, DLP, CDH, DDH. Връзки между тях. Силата на схемата за криптиране ElGamal. Нестабилността на схемата за подпис RSA без използване на хеш функция.
03 Научете повече за асиметричната криптография. Подписът на Lampart, диаграмата на Merkle. ДСКС атака.
04 Алгебрични и теоретични основи на асиметричната криптография. Крайни групи, циклични групи, ред на групов елемент. Проблем с дискретния логаритъм (DLP). Мултипликативни групи от крайни полета. Основни сведения за елиптичните криви.
05 Елиптични криви. Теорема на Хасе. Събиране на точки върху елиптична крива. Група от точки на елиптична крива. Схема за подпис GOST R 34.10-2012.
06 Дискретен логаритъм. Алгоритми с дискретни логаритми (метод на Ро на Полард, метод на съпоставяне, метод на Полиг-Хелман, метод за изчисляване на индекса).
07 PKI технология. Основни принципи и концепции на инфраструктурата на публичния ключ (PKI). Сертификат, CA, CRL, OCSP, доверително пространство.
08 TLS протокол. История на TLS протокола. Структура на протокола, основни принципи на работа. TLS протокол криптографски пакети, базирани на руски криптографски алгоритми.
09 Основи на изграждане на AKE протоколи. Концепцията на протокола AKE. Целеви свойства. Основни подходи към строителството.
10 Сигурно съхранение на ключове. Проблемът със сигурното използване на частни ключове. Ключови носители, несменяеми ключове. Проблемът с присъствието на противник в канала, протоколи от семейството PAKE.
11 Основни концепции на блокчейн технологията. Задачата за координирано децентрализирано взаимодействие. Основни понятия на понятието сигурност. Подходи за сигурност.
12 Основни принципи на квантовите технологии и техните приложения в криптографията