Регламент курса на 2023
Преподаватель Грищенко Виктор Сергеевич, к.ф.-м.н.
Целью курса является ознакомить слушателей с широким набором технологий построения децентрализованных сетей и распределённых систем в целом, а также выработать необходимый минимум практических навыков. Курс рассчитан на один семестр и состоит из одной пары теории и одной пары практики в неделю.
У курса есть:
- организация в GitHub, для работы над проектами https://github.com/decentralized-hse/
- чат Telegram для общения и анонсов https://t.me/joinchat/TKezuPDKeJZo0Uzn
- видео лекций на Yandex Disk и YouTube (прошлые годы тут)
Лекции проводятся по Zoom
В начале курса произойдет раздача курсовых проектов, реализация которых является основным критерием успеваемости.
По возможности, мы будем идти от теории к практике. В идеале, каждую неделю мы тратим
- один час теории на историю вопроса и постановку проблемы,
- один час теории на обзор имеющихся и перспективных подходов,
- один час практики на исследование решений (продуктов, библиотек итп) и разбор кода курсовых проектов,
- один час практики на самостоятельные занятия либо работу с проектами.
Фактически, конечно, тут большая доля импровизации всегда. Для работы над курсовым проектом одного часа в неделю, скорее всего, будет недостаточно. Хотя, час 3 также можно потратить на самостоятельную работу, рекомендуется также выделить дополнительное время.
На каждой проверочной работе есть 5-7 задач и 5-7 языков программирования (C, Java, Go, Node, Python, Rust). Каждый сдающий должен выбрать клеточку в этой матрице. Как правило, разные задания связаны друг с другом, например результат одного является исходными данными для другого. Таким образом, полученные в результате решения должны быть совместимы.
Решения сдаются, как PR в репо практических занятий.
Проект делается группой в 2-3 человека (редко в одиночку) и должен затрагивать темы курса:
- криптографию,
- федерирование и маршрутизацию,
- метрики и инцентивизацию,
- коллаборацию и консенсус.
Проект делается на любой платформе - под Web, мобильные устройства или десктоп, на любом удобном языке. Возможны проекты "в пробирке", исключительно работающие с данными работающих сетей либо даже вычислительные эксперименты. Во всех этих категориях были очень интересные проекты.
Проекты, как правило, являются оригинальными затеями, что снимает вопрос о списывании. Использовать чужой код можно, но следует отметить этот факт в Copyright и файле AUTHORS. Можно целиком взять проект предыдущего сезона и развить либо переделать.
Ошибки в ходе проекта - это нормально. Например, вы можете выбрать неподходящую технологию или неработающую библиотеку. Следует минимизировать этот риск через предварительное исследование вопроса, а также иметь время в запасе - на случай сюрпризов.
Проект можно сдавать в разной степени готовности от работающего эскиза/PoC до полного dogfooding, когда люди уже вовсю используют приложение. Это сильно влияет на итоговую оценку. Основные градации годности проекта:
- пригодно к практическому использованию,
- понятно, что работать будет (либо понятно, почему не будет применимо на практике), либо
- неопределённость сохранилась.
Проекты, по которым изначально нет неопределённости, интереса не представляют :)
Важная новация 2023 - предлагается делать проекты кластерно, чтобы разные проекты из одного кластера были между собой совместимы. Подробнее - в файле ideas.md.