Инфраструктура великих података - бесплатан курс Школе за анализу података, 4 семестра, Датум: 05.12.2023.
мисцеланеа / / December 08, 2023
За оне који воле алгоритме, рад са подацима и уживају у програмирању, али не желе да повежу своје животе са машинским учењем.
Алгоритми, програмирање, пројектовање система датотека, дискова, мрежа и процесора, као и дистрибуираних система.
У креирању и подршци ефикасних и поузданих дистрибуираних система за складиштење и обраду великих података.
Сваки студент мора успешно завршити најмање три предмета током семестра. На пример, ако их има два у главном програму, онда морате да изаберете један од специјалних курсева.
Провера знања се врши првенствено кроз домаћи задатак – испити и тестови се спроводе само из неких предмета.
Први семестар
Обавезно
Алгоритми и структуре података, 1. део
01 Сложеност и рачунски модели. Анализа рачуноводствених вредности (почетак)
02 Анализа рачуноводствених вредности (крај)
03 Алгоритми за сортирање спајањем и брзо сортирање
04 Редна статистика. Хрпе (почетак)
05 Хрпе (крај)
06 Хеширање
07 Дрвеће претраге (почетак)
08 Стабла претраге (наставак)
09 Стабла претраге (крај). Систем дисјунктних скупова
10 Циљеви РМК и ЛЦА
11 Структуре података за геометријско претраживање
12 Проблем динамичке повезаности у неусмереном графу
Архитектура рачунара и оперативни системи
01 УНИКС и програмирање у Ц: командна линија, контрола процеса, канали, сигнали. Имплементација љуске командне линије.
02 к86 асемблер: аритметика, прелази, услови и позиви функција. Гомила, померање горе.
03 Повезивање програма и ЕЛФ формата. Динамичко повезивање.
04 Концепт контекста и тока извршења. Имплементација лаганих нити.
05 Превентивни мултитаскинг: подршка од к86 процесора и имплементација процеса у УНИКС кернелу.
06 Архитектура са више језгара: кохерентност кеша и модели меморије. Примитиви за синхронизацију у вишенитним програмима.
07 Планирање процеса на једном језгру и на више језгара.
08 Екстерна меморија: чврсти дискови и ССД уређаји. Принципи рада система датотека.
09 Виртуелизација: хардвер и софтвер. Бинарно емитовање.
Обука језика Ц++, 1. део
Ц++ је моћан језик са богатим наслеђем. За оне који су тек кренули путем савладавања овог језика, врло је лако изгубити се у обиљу техника и техника створених у протеклих 30 година. На курсу се предаје "Модерни Ц++" - савремени подскуп језика (стандарди 11, 14 и 17). Много пажње се поклања алатима и библиотекама – стварима које нису део језика, али без којих неће бити могуће изградити велики и сложен пројекат.
01 Увод у Ц++.
02 Константе. Показивачи и везе. Преношење аргумената функцији.
03 Цлассес.
04 Динамичко управљање меморијом.
05 Променљиве, показивачи и референце.
06 Управљање меморијом, паметни показивачи, РАИИ.
07 Стандардна библиотека шаблона.
08 Наслеђивање и виртуелне функције.
09 Руковање грешкама.
10 Дизајнерски обрасци.
11 Простори имена Семантика кретања Савршено прослеђивање.
12 Представљање структура и класа у меморији. Усклађивање података. Показивачи на чланове/методе класе. Вариадиц темплатес.
Други мандат
Обавезно
Алгоритми и структуре података, 2. део
01 Заобилазница по ширини. Прелазак у дубину (почетак)
02 Прелазак дубине (наставак)
03 Прелазак у дубину (крај). 2-резови
04 Проналажење најкраћих путева (почетак)
05 Проналажење најкраћих путева (наставак)
06 Минимално разапињуће дрвеће
07 Минимални резови. Тражи подстрингове (почетак)
08 Претрага подстрингова (наставак)
09 Претрага подстрингова (крај)
10 стабала суфикса (почетак)
11 Стабла суфикса (завршетак). Низови суфикса (почетак)
12 низова суфикса (завршетак)
13 Најдужи уобичајени поднизови. Приближна претрага подстринга.
Обука језика Ц++, 2. део
Други део курса Ц++, који покрива напредне теме и језичке могућности.
01 Вишенитно програмирање. Синхронизовање нити помоћу мутекса и променљивих услова.
02 Атомске варијабле. Ц++ модел меморије. Примери структура података без закључавања.
03 Напредне технике метапрограмирања у Ц++. Метафункције, СФИНАЕ, концепти.
04 Конкурентно програмирање, интеракција са мрежом.
05 ллвм архитектура. Рад са стаблом за анализу Ц++. Развој алата за анализу Ц++ кода.
Да бирају
Теорија и пракса конкурентности
Курс је посвећен конкурентским системима и задацима у најширем смислу: од нивоа конкуренције између процесорских језгара за писање до једне ћелије меморију на дистрибуиране системе који желе да реплицирају своје стање на више сервера на толерантан и доследан начин.
01 https://gitlab.com/Lipovsky/shad-tpcc-course-2019/blob/master/lectures/syllabus.md
или
Иди језик
01 Увод. Програм курса. Извештавање о курсу, критеријуми оцењивања. Филозофија дизајна. ако, пребацити, за. Здраво Свете. Аргументи командне линије. Број речи. Анимирани гиф. Преузимање УРЛ-а. Истовремено се преузима УРЛ. Веб сервер. Тоур оф го. Локално ИДЕ подешавање. гофмт. гоимпортс. линтинг.
02 Основне језичке структуре. имена, декларације, променљиве, доделе. декларације типа. пакете и датотеке. Обим. Нулта вредност. Алокација меморије. Стацк вс хрпа. Основни типови података. Константе. Композитни типови података. Низови. Слицес. Мапс. Структуре. ЈСОН. текст/шаблон. стринг и []бајт. Рад са уникодом. Уницоде знак за замену. Функције. Функције са променљивим бројем аргумената. Анонимне функције. Грешке.
03 Методе. Прималац вредности наспрам примаоца показивача. Ембеддинг. Вредност методе. Енкапсулација. Интерфејси. Интерфејси као уговори. ио. Писац, ио. Реадер и њихове имплементације. врста. Интерфејс. грешка. хттп. Хандлер. Интерфејси као енумерације. Унесите тврдњу. Тип прекидач. Што је већи интерфејс, то је апстракција слабија. Грешка у обради. паника, одлагање, опоравак. грешке.{Унврап, Ис, Ас}. фмт. Еррорф. %в.
04 Горутине и канали. цлоцк сервер. ецхо сервер. Величина канала. Блокирајуће и неблокирајуће читање. изаберите изјаву. Аксиоми канала. време. После. време. НевТицкер. Пипелине паттерн. Отказивање. Паралелна петља. синхронизовати. ВаитГроуп. Руковање грешком у паралелном коду. ерргроуп. Група. Истовремени веб пописивач. Истовремени обилазак директоријума.
05 Напредно тестирање. Субтестови. тестирање. Б. (Т).Логф. (Т).Скипф. (Т).ФаилНов. тестирање. Схорт(), заставице за тестирање. Генерисање подсмеха. сведочити/{захтевати, тврдити}. сведочити / свита. Тест фиктуре. Интеграциони тестови. Гороутине детектор цурења. ТестингМаин. Покривеност. Поређење мерила.
06 Напредно тестирање. Субтестови. тестирање. Б. (Т).Логф. (Т).Скипф. (Т).ФаилНов. тестирање. Схорт(), заставице за тестирање. Генерисање подсмеха. сведочити/{захтевати, тврдити}. сведочити / свита. Тест фиктуре. Интеграциони тестови. Гороутине детектор цурења. ТестингМаин. Покривеност. Поређење мерила.
07 Контекст пакета. Преношење података у опсегу захтева. хттп Миддлеваре. цхи. Рутер. Захтевај отказивање. Напредни обрасци паралелности. Асинц кеш. Грациозно гашење сервера. контекст. ВитхТимеоут. Паковање и отказивање.
08 база података/скл, склк, рад са базама података, редис.
09 Рефлецтион. одразити. Откуцајте и размислите. Валуе. струцт ознаке. нет/рпц. кодирање/гоб. синхронизовати. Мапа. одразити. ДеепЕкуал.
10 Имплементације пакета ио, Реадер и Вритер из стандардне библиотеке. Програмирање ниског нивоа. несигурно. Бинарни пакет. бајтова. Буффер. цго, системски позив.
11 ГЦ архитектура. Баријера за писање. Раст стака. ГЦ пауза. ГОГЦ. синхронизовати. Поол. Планер гороутине. ГОМАЦПРОЦС. Процуреле теме.
12 Идите на алат. ппроф. Профилисање ЦПУ-а и меморије. Унакрсна компилација. ГООС, ГОАРЦХ. ЦГО_ЕНАБЛЕД=0. Изградите ознаке. го модули. годоц. к/анализа. Генерисање кода.
13 Корисне библиотеке. ЦЛИ апликације са кобром. Протобуф и ГРПЦ. зап логгинг.
Трећи семестар
Обавезно
Алгоритми у спољној меморији
Предмет упознаје студенте са основним принципима конструисања алгоритама за рад са подацима који се не уклапају у РАМ рачунара.
01 Алгоритми у спољној меморији.
02 Алгоритми без кеша.
03 Алгоритми за обраду података тока.
Дистрибуирани системи
Препоручени специјални курсеви
Снага криптографских система
01 Основни приступи и принципи савремене криптографије. Модел противника, формализација концепта снаге, проблем процене снаге и сродни проблеми, подела на примитиве и протоколе, фазе „живота“ криптографског система.
02 Поверљивост. Свакодневне дефиниције поверљивости, приступи формализацији (информационо-теоријски модел непријатеља, модели КР, ПР, ЛОР, РОР, ИНД, ЦПА, ЦЦА), симетрични систем шифровања, примена теоријских информација о сложености за одређивање односа између модели. Односи између основних модела противника за процену снаге система шифровања.
03 Приступи изградњи система за шифровање. Зграда од нуле. Конструкције засноване на блок шифрама, дефиниција блок шифре, главне карактеристике, приступи конструкцији и својства. Модели ПРП и ПРФ. Парадокс проблема рођендана. Лема о односу између отпора у ПРФ и ПРП моделима.
04 Режими шифровања. Основни режими шифровања: ЕЦБ, ЦБЦ, ЦФБ, ОФБ, ЦТР. Основна својства перформанси. Трајност ЦТР у ЛОР-ЦПА, нестабилност ЕЦБ у ЛОР-ЦПА. Нестабилност основних режима у ЦЦА моделима.
05 Интегритет. Дефиниција појма интегритета. Приступи формализацији (УФ-ЦМА модел, модели засновани на задатку дискриминације, ПРФ модел). Кодови и функције за аутентификацију порука за генерисање имитираних уметака. Дизајни засновани на блок шифрама: ЦБЦ-МАЦ, КСЦБЦ, ТМАЦ, ОМАЦ. Рањиви режими.
06 Хеш функције. Дефиниција, основна својства, приступи конструкцији, формализација и сродни проблеми. Примери коришћења хеш функција: хеширање лозинке, екстракција ентропије. Конструисање колизија и предслика из скупова ниске кардиналности.
07 ХМАЦ, КДФ, ПРФ, ДРНГ кола. ХМАЦ дијаграм, основни кораци за добијање оцене отпора. Кључна диверсификација и принцип раздвајања кључева, КДФ и ПРФ шеме. Псеудослучајни генератор, ДРНГ кола.
08 Оптерећење кључа. Проблем са учитавањем кључа. Главне методе за смањење оптерећења кључа су екстерне и интерне конверзије кључа. Шеме паралелног и серијског поновног кључања, основна својства. Кључно дрво. Интерна промена кључа и ЦТР-АЦПКМ режим.
09 Шифровање са заштитом од имитације. Формулација проблема. Опште структуре (ЕтА, АтЕ, А&Е) и њихова својства. Примери рањивих режима за обезбеђивање поверљивости и интегритета помоћу једног кључа. АЕАД режими шифровања: ГЦМ, МГМ.
10 Безбедан комуникациони канал. Концепт безбедног комуникационог канала: врсте канала, основна својства (интегритет и поверљивост тока података). Примери рањивих протокола. Снимите ТЛС 1.3 протокол.
Четврти семестар
Да бирају
Теорија и пракса конкурентности
Курс је посвећен конкурентским системима и задацима у најширем смислу: од нивоа конкуренције између процесорских језгара за писање до једне ћелије меморију на дистрибуиране системе који желе да реплицирају своје стање на више сервера на толерантан и доследан начин.
01 https://gitlab.com/Lipovsky/shad-tpcc-course-2019/blob/master/lectures/syllabus.md
или
Иди језик
01 Увод. Програм курса. Извештавање о курсу, критеријуми оцењивања. Филозофија дизајна. ако, пребацити, за. Здраво Свете. Аргументи командне линије. Број речи. Анимирани гиф. Преузимање УРЛ-а. Истовремено се преузима УРЛ. Веб сервер. Тоур оф го. Локално ИДЕ подешавање. гофмт. гоимпортс. линтинг.
02 Основне језичке структуре. имена, декларације, променљиве, доделе. декларације типа. пакете и датотеке. Обим. Нулта вредност. Алокација меморије. Стацк вс хрпа. Основни типови података. Константе. Композитни типови података. Низови. Слицес. Мапс. Структуре. ЈСОН. текст/шаблон. стринг и []бајт. Рад са уникодом. Уницоде знак за замену. Функције. Функције са променљивим бројем аргумената. Анонимне функције. Грешке.
03 Методе. Прималац вредности наспрам примаоца показивача. Ембеддинг. Вредност методе. Енкапсулација. Интерфејси. Интерфејси као уговори. ио. Писац, ио. Реадер и њихове имплементације. врста. Интерфејс. грешка. хттп. Хандлер. Интерфејси као енумерације. Унесите тврдњу. Тип прекидач. Што је већи интерфејс, то је апстракција слабија. Грешка у обради. паника, одлагање, опоравак. грешке.{Унврап, Ис, Ас}. фмт. Еррорф. %в.
04 Горутине и канали. цлоцк сервер. ецхо сервер. Величина канала. Блокирајуће и неблокирајуће читање. изаберите изјаву. Аксиоми канала. време. После. време. НевТицкер. Пипелине паттерн. Отказивање. Паралелна петља. синхронизовати. ВаитГроуп. Руковање грешком у паралелном коду. ерргроуп. Група. Истовремени веб пописивач. Истовремени обилазак директоријума.
05 Напредно тестирање. Субтестови. тестирање. Б. (Т).Логф. (Т).Скипф. (Т).ФаилНов. тестирање. Схорт(), заставице за тестирање. Генерисање подсмеха. сведочити/{захтевати, тврдити}. сведочити / свита. Тест фиктуре. Интеграциони тестови. Гороутине детектор цурења. ТестингМаин. Покривеност. Поређење мерила.
06 Конкуренција са заједничком меморијом. синхронизовати. Мутек. синхронизовати. РВМутек. синхронизовати. Конд. атомски синхронизовати. Једном. Раце детектор. Асинц кеш. Рад са базом података. база података/скл. склк.
07 Контекст пакета. Преношење података у опсегу захтева. хттп Миддлеваре. цхи. Рутер. Захтевај отказивање. Напредни обрасци паралелности. Асинц кеш. Грациозно гашење сервера. контекст. ВитхТимеоут. Паковање и отказивање.
08 база података/скл, склк, рад са базама података, редис.
09 Рефлецтион. одразити. Откуцајте и размислите. Валуе. струцт ознаке. нет/рпц. кодирање/гоб. синхронизовати. Мапа. одразити. ДеепЕкуал.
10 Имплементације пакета ио, Реадер и Вритер из стандардне библиотеке. Програмирање ниског нивоа. несигурно. Бинарни пакет. бајтова. Буффер. цго, системски позив.
11 ГЦ архитектура. Баријера за писање. Раст стака. ГЦ пауза. ГОГЦ. синхронизовати. Поол. Планер гороутине. ГОМАЦПРОЦС. Процуреле теме.
12 Идите на алат. ппроф. Профилисање ЦПУ-а и меморије. Унакрсна компилација. ГООС, ГОАРЦХ. ЦГО_ЕНАБЛЕД=0. Изградите ознаке. го модули. годоц. к/анализа. Генерисање кода.
13 Корисне библиотеке. ЦЛИ апликације са кобром. Протобуф и ГРПЦ. зап логгинг.
или
База података
01 Интерфејси савремених база података: релациони, кључ-вредност, документ, граф. Релациона алгебра и СКЛ језик.
02 Рад са диском у класичном релационом ДБМС-у: странице, скуп страница, избацивање из пула.
03 Извршавање СКЛ упита: рашчлањивање израза, планирање, извршење. Интерпретација и генерисање кода помоћу ЛЛВМ.
04 Индекси у релационим ДБМС: типови индекса, методе складиштења, употреба у упитима.
05 Трансакције: АЦИД акроним, нивои изолације, имплементација трансакција кроз браве и МВЦЦ.
06 Опоравак од катастрофе: дневник, контролне тачке, АРИЕС алгоритам.
07 Складиштење података помоћу методе Лог-Струцтуред Мерге Трее.
08 ДБМС засновани на колонама: предности, карактеристике, алгоритми компресије података.
09 Дистрибуирани ДБМС: схардинг, трансакције, извршавање упита.
10 ДБМС смештених у главној меморији. Структуре података за индексе у меморији.
или
Рачунарске мреже
01 Увод у мрежне технологије. Историја мрежа, мрежни протоколи, организација мрежне интеракције у пеер-то-пеер мрежи и међусобно повезивање пеер-то-пеер мрежа.
02 Транспорт. ОСИ/ИСО мрежни модел. ТЦП, успостављање мрежне везе, поређење ТЦП и УДП. Тцпдумп анализа – бајтови у лету, поново емитују графиконе. Методе за контролу тока података у ТЦП сесији. Различити типови ТЦП сесија и управљање пропусним опсегом пренетих података у пакетним мрежама.
03 Роутинг. Концепт рутирања у мрежама. Статичко и динамичко рутирање. Основе динамичког рутирања. Протокол динамичког рутирања - ОСПФ. Протоколи рутирања вектора удаљености. Преглед БГП протокола рутирања - типови порука, БГП атрибути, избор оптималне руте у БГП-у.
04 Како функционише Интернет: БГП и ДНС. Интернет рутирање. Преглед ДНС протокола.
05 Мреже у великим дата центрима. Особине архитектуре мрежа центара података. Захтеви за мреже центара података. ЦЛОС архитектура за мреже центара података.
06 Кашњења у мрежама. Особине изградње великих окосних мрежа. Разлози кашњења у преносу података преко окосних мрежа.
07 Скалирање и доступност Интернет услуга. Технологије балансирања оптерећења и сервисна архитектура.
08 МПЛС и СР, Програмабилност мреже. МПЛС и технологије рутирања сегмента за изградњу окосних мрежа. Намена МПЛС технологије, протоколи који се користе за размену етикета.
09 Принципи рада мрежних уређаја. Архитектура рутера, карактеристике обраде мрежног саобраћаја унутар мрежних уређаја.
10 Облаци. Софтверски дефинисане мрежне основе – протоколи који се користе за изградњу софтверски дефинисаних мрежа. Интеграција платформи за виртуелизацију и мрежне инфраструктуре.
или
Криптографски протоколи
01 Основне идеје асиметричне криптографије. Главна разлика између асиметричне криптографије и симетричне криптографије. Главне идеје: протокол за генерисање заједничког кључа, шифровање јавног кључа, електронски потпис (проблеми које треба решити, интуитивно разумевање безбедносних својстава). Специфичне криптографске шеме: Диффие-Хеллман протокол, ЕлГамал и РСА шеме енкрипције, ЕлГамал и РСА потписи. Основни проблем са асиметричним шемама је поверење у јавни кључ.
02 Јачина основних шема асиметричне криптографије. Формална дефиниција отпора: модели УФ-ЦМА, ИНД-ЦПА, ДЛП, ЦДХ, ДДХ. Односи међу њима. Снага ЕлГамал шеме шифровања. Нестабилност РСА шеме потписа без употребе хеш функције.
03 Сазнајте више о асиметричној криптографији. Лампартов потпис, Мерклеов дијаграм. ДСКС напад.
04 Алгебарске и теоријске основе асиметричне криптографије. Коначне групе, цикличне групе, ред групног елемента. Проблем дискретног логаритма (ДЛП). Мултипликативне групе коначних поља. Основне информације о елиптичним кривинама.
05 Елиптичке криве. Хасеова теорема. Сабирање тачака на елиптичној кривој. Група тачака на елиптичној кривој. Шема потписа ГОСТ Р 34.10-2012.
06 Дискретни логаритам. Алгоритми дискретног логаритма (Поллардова Рхо метода, метода упаривања, Полиг-Хеллман метода, метода израчунавања индекса).
07 ПКИ технологија. Основни принципи и концепти инфраструктуре јавних кључева (ПКИ). Сертификат, ЦА, ЦРЛ, ОЦСП, простор поверења.
08 ТЛС протокол. Историја ТЛС протокола. Структура протокола, основни принципи рада. Шиптографски пакети ТЛС протокола засновани на руским криптографским алгоритмима.
09 Основе изградње АКЕ протокола. Концепт АКЕ протокола. Циљна својства. Основни приступи изградњи.
10 Сигурно складиштење кључева. Проблем безбедног коришћења приватних кључева. Медији за кључеве, кључеви који се не могу уклонити. Проблем присуства противника у каналу, протоколи породице ПАКЕ.
11 Основни концепти блокчејн технологије. Задатак координисане децентрализоване интеракције. Основни појмови појма безбедности. Безбедносни приступи.
12 Основни принципи квантних технологија и њихова примена у криптографији