<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://wiki.cs.hse.ru/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Sandello</id>
	<title>Wiki - Факультет компьютерных наук - Вклад [ru]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.cs.hse.ru/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Sandello"/>
	<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/Sandello"/>
	<updated>2026-09-21T14:28:27Z</updated>
	<subtitle>Вклад</subtitle>
	<generator>MediaWiki 1.43.9</generator>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=%D0%9D%D0%98%D0%A1_%D0%A0%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_(4_%D0%BA%D1%83%D1%80%D1%81,_2018)&amp;diff=32094</id>
		<title>НИС Распределенные системы (4 курс, 2018)</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=%D0%9D%D0%98%D0%A1_%D0%A0%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_(4_%D0%BA%D1%83%D1%80%D1%81,_2018)&amp;diff=32094"/>
		<updated>2019-01-30T11:11:54Z</updated>

		<summary type="html">&lt;p&gt;Sandello: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Информация про семинар ==&lt;br /&gt;
В рамках научно-исследовательского семинара по распределенным системам изучаются основные понятия, принципы и результаты предметной области. &lt;br /&gt;
&lt;br /&gt;
Контакты: [mailto:sandello@gmail.com Пузыревский Иван Витальевич]&lt;br /&gt;
&lt;br /&gt;
Рабочая таблица: https://docs.google.com/spreadsheets/d/1zvAqjpLXExVKFC5dHbnvWVJLNseUYKXKu5e0wSrvwUQ/edit?usp=sharing&lt;br /&gt;
&lt;br /&gt;
Оценка за НИС формируется из:&lt;br /&gt;
# Выполненное практическое задание по BlockChain ( должно скоро появиться :) ) -- 4 балла за задание&lt;br /&gt;
# Доклад (один или более) на семинаре -- 3 балла за один доклад&lt;br /&gt;
# Рецензия (одна или более) -- 3 балла за одну рецензию&lt;br /&gt;
&lt;br /&gt;
== Доклад ==&lt;br /&gt;
&lt;br /&gt;
Доклад предполагает выступление о научной статье, связанной с распределенными системами. В докладе надо надо изложить постановку задачи, предлагаемые авторами статьи подходы к ее решению, полученные результаты и их краткий анализ. Можно выбрать статью из списка ниже или предложить свою статью, например связанную с темой курсовой.&lt;br /&gt;
&lt;br /&gt;
Продолжительность доклада ограничена 20 минутами. После доклада отводится 5 минут на вопросы слушателей. На одном занятии проводится до 3 докладов.&lt;br /&gt;
&lt;br /&gt;
Расписание докладов доступно в таблице по ссылке: https://docs.google.com/spreadsheets/d/1zvAqjpLXExVKFC5dHbnvWVJLNseUYKXKu5e0wSrvwUQ/edit?usp=sharing.&lt;br /&gt;
&lt;br /&gt;
Студентам предлагается самостоятельно выбрать тему и дату выступления. В случае, если за неделю до занятия есть свободные слоты в расписании, они заполняются случайно выбранными студентами из числа тех, кто еще не делал доклад или не выбрал дату выступления. У таких студентов есть сутки, чтобы выбрать и согласовать тему доклада, в противном случае ее выбирает преподаватель.&lt;br /&gt;
&lt;br /&gt;
== Рецензия ==&lt;br /&gt;
&lt;br /&gt;
Рецензия подразумевает самостоятельное изучения научной статьи и написание краткого обзора статьи. Формат задания аналогичен прошлогоднему.  &lt;br /&gt;
&lt;br /&gt;
Что такое рецензия: это текст на 1-2 страницы, резюмирующий основные результаты работы, их отличительные характеристики и важные идеи. Если в статье описывается некоторая система -- то в рецензии стоит кратко определить (без воды) решаемую задачу, архитектуру системы, интерфейсы, протоколы. Если в статье описывается алгоритм -- важные технические характеристики (время работы, память, количество сообщений, и т. д.) и ключевые идеи. Если в статье описывается исследование -- то предмет исследования, методологию и выводы из исследования. Также, чтобы рецензия не была простым пересказом, вам &#039;&#039;&#039;обязательно&#039;&#039;&#039; в конце рецензии необходимо добавить собственный оценочный блок:&lt;br /&gt;
* &#039;&#039;&#039;как минимум&#039;&#039;&#039; три комментария по упомянутым в статье требованиям (условиям окружения, ограничениям на класс решений, предпосылкам, желаемым гарантиям системы, etc); каждый комментарий -- это цитата автора, определяющая требования + аргументация, почему требование неактуально / ослаблено / невыполнимо в других условиях. К примеру: &amp;quot;в работе авторы пишут: &amp;quot;так как мы планируем запускать протокол поверх SMS-сообщений, то ограничим длину каждого сообщения протокола 80 символами&amp;quot;; -&amp;gt; в настоящий момент меньше приложений используют SMS, предпочитая месседжеры&amp;quot;.&lt;br /&gt;
* &#039;&#039;&#039;как минимум&#039;&#039;&#039; три комментария по принятым авторами дизайн-решениям в вопросах, допускающих альтернативные решения; каждый комментарий -- это краткая суть решаемой проблемы + описание принятого решения. К примеру: &amp;quot;авторы работы для валидации целостности контента сообщения используют чексумму, и дополнительно указывают отправителя в заголовке для аутентификации; возможно, более надежно было бы рассмотреть использование HMAC как альтернативы для одновременного контроля целостности и аутентификации&amp;quot;.&lt;br /&gt;
Цель данного задания -- научиться видеть требования и граничные условия, во многом обуславливающие принимаемые авторами работы решения, а также уметь генерировать альтернативные варианты решения задач. &lt;br /&gt;
&lt;br /&gt;
Для сдачи рецензии необходимо записаться в табличку -- https://docs.google.com/spreadsheets/d/1zvAqjpLXExVKFC5dHbnvWVJLNseUYKXKu5e0wSrvwUQ/edit?usp=sharing -- и прислать до окончания курса на почту sandello@gmail.com письмо с темой &amp;quot;НИС РС 155 - Рецензия - Фамилия Имя&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Список статей для докладов и рецензирования ==&lt;br /&gt;
&lt;br /&gt;
# Ghemawat S., Gobioff H., Leung S.T. The Google File System // ACM Symposium on Operating Systems Principles (SOSP), 2003.&lt;br /&gt;
# Dean J., Ghemawat S. MapReduce: simplified data processing on large clusters // USENIX Symposium on Operating System Design and Implementation (OSDI), 2004.&lt;br /&gt;
# Hayashibara N. et al. The φ accrual failure detector // Japan Advanced Institute of Science and Technology, School of Information Science, Technical Report IS-RR-2004-010, 2004.&lt;br /&gt;
# Van Renesse R., Schneider F. B. Chain Replication for Supporting High Throughput and Availability // USENIX Symposium on Operating System Design and Implementation (OSDI), 2004.&lt;br /&gt;
# Lamport L. Fast paxos //Distributed Computing. – 2006. – Т. 19. – №. 2. – С. 79-103.&lt;br /&gt;
# Chang F. et al. Bigtable: A distributed storage system for structured data // USENIX Symposium on Operating System Design and Implementation (OSDI), 2006.&lt;br /&gt;
# Mazieres D. Paxos made practical. Technical Report, Stanford University, 2007.&lt;br /&gt;
# Chandra T. D., Griesemer R., Redstone J. Paxos made live: an engineering perspective //Proceedings of the twenty-sixth annual ACM symposium on Principles of distributed computing. – ACM, 2007. – С. 398-407.&lt;br /&gt;
# Isard M. et al. Dryad: distributed data-parallel programs from sequential building blocks //ACM SIGOPS operating systems review. – ACM, 2007. – Т. 41. – №. 3. – С. 59-72.&lt;br /&gt;
# DeCandia G. et al. Dynamo: Amazon&#039;s highly available key-value store // ACM Symposium on Operating Systems Principles (SOSP), 2007.&lt;br /&gt;
# Cooper B. F. et al. PNUTS: Yahoo!&#039;s hosted data serving platform // International Conference on Very Large Data Bases (VLDB), 2008.&lt;br /&gt;
# Isard M. et al. Quincy: fair scheduling for distributed computing clusters //Proceedings of the ACM SIGOPS 22nd symposium on Operating systems principles. – ACM, 2009. – С. 261-276.&lt;br /&gt;
# Van Renesse R., Minsky Y., Hayden M. A gossip-style failure detection service //Proceedings of the IFIP International Conference on Distributed Systems Platforms and Open Distributed Processing. – Springer-Verlag, 2009. – С. 55-70.&lt;br /&gt;
# Helland P., Campbell D. Building on quicksand // Conference on Innovative Data Systems Research (CIDR), January 2009.&lt;br /&gt;
# Malewicz G. et al. Pregel: a system for large-scale graph processing // ACM International Conference on Management of Data (SIGMOD), 2010.&lt;br /&gt;
# Hunt P. et al. ZooKeeper: Wait-free Coordination for Internet-scale Systems //USENIX annual technical conference. – 2010. – Т. 8. – №. 9.&lt;br /&gt;
# Lakshman A., Malik P. Cassandra: a decentralized structured storage system //ACM SIGOPS Operating Systems Review. – 2010. – Т. 44. – №. 2. – С. 35-40.&lt;br /&gt;
# Anderson E. et al. What consistency does your key-value store actually provide? // HotDep, 2010.&lt;br /&gt;
# Terry D. Replicated data consistency explained through baseball // Microsoft Research, Technical Report MSR-TR-2011-137, 2011.&lt;br /&gt;
# Junqueira F. P., Reed B. C., Serafini M. Zab: High-performance broadcast for primary-backup systems //Dependable Systems &amp;amp; Networks (DSN), 2011 IEEE/IFIP 41st International Conference on. – IEEE, 2011. – С. 245-256.&lt;br /&gt;
# Shapiro M. et al. Conflict-free replicated data types // Symposium on Self-Stabilizing Systems, 2011.&lt;br /&gt;
# Rao J., Shekita E. J., Tata S. Using paxos to build a scalable, consistent, and highly available datastore //Proceedings of the VLDB Endowment. – 2011. – Т. 4. – №. 4. – С. 243-254.&lt;br /&gt;
# Calder B. et al. Windows Azure Storage: a highly available cloud storage service with strong consistency // ACM Symposium on Operating Systems Principles (SOSP), 2011.&lt;br /&gt;
# Leners J. B. et al. Detecting failures in distributed systems with the falcon spy network //Proceedings of the Twenty-Third ACM Symposium on Operating Systems Principles. – ACM, 2011. – С. 279-294.&lt;br /&gt;
# Corbett J. C. et al. Spanner: Google’s globally distributed database // USENIX Symposium on Operating System Design and Implementation (OSDI), 2012.&lt;br /&gt;
# Liskov B., Cowling J. Viewstamped replication revisited. Massachusetts Institute of Technology, Tech Report MIT-CSAIL-TR-2012-021, 2012.&lt;br /&gt;
# Bronson N. et al. TAO: Facebook&#039;s Distributed Data Store for the Social Graph // USENIX Annual Technical Conference, 2013.&lt;br /&gt;
# Murray D. G. et al. Naiad: a timely dataflow system // Proceedings of the Twenty-Fourth ACM Symposium on Operating Systems Principles. – ACM, 2013. – С. 439-455.&lt;br /&gt;
# Schwarzkopf M. et al. Omega: flexible, scalable schedulers for large compute clusters //Proceedings of the 8th ACM European Conference on Computer Systems. – ACM, 2013. – С. 351-364.&lt;br /&gt;
# Ongaro D., Ousterhout J. K. In search of an understandable consensus algorithm // USENIX Annual Technical Conference, 2014.&lt;br /&gt;
# Bernstein P. A. et al. Orleans: Distributed virtual actors for programmability and scalability // Microsoft Research Technical Report MSR-TR-2014-41, 2014.&lt;br /&gt;
# Verma A. et al. Large-scale cluster management at Google with Borg // European Conference on Computer Systems (EuroSys), 2015.&lt;br /&gt;
# Lu H. et al. Existential consistency: measuring and understanding consistency at Facebook // ACM Symposium on Operating Systems Principles (SOSP), 2015.&lt;br /&gt;
# Howard H. et al. Raft refloated: do we have consensus? // ACM SIGOPS Operating Systems Review. – 2015. – Т. 49. – №. 1. – С. 12-21.&lt;br /&gt;
# Van Renesse R., Altinbuken D. Paxos made moderately complex //ACM Computing Surveys (CSUR). – 2015. – Т. 47. – №. 3. – С. 42.&lt;br /&gt;
# Burckhardt S. et al. Global sequence protocol: A robust abstraction for replicated shared state // LIPIcs-Leibniz International Proceedings in Informatics. – Schloss Dagstuhl-Leibniz-Zentrum fuer Informatik, 2015. – Т. 37.&lt;/div&gt;</summary>
		<author><name>Sandello</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=%D0%9D%D0%98%D0%A1_%D0%A0%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_(4_%D0%BA%D1%83%D1%80%D1%81,_2018)&amp;diff=32093</id>
		<title>НИС Распределенные системы (4 курс, 2018)</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=%D0%9D%D0%98%D0%A1_%D0%A0%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_(4_%D0%BA%D1%83%D1%80%D1%81,_2018)&amp;diff=32093"/>
		<updated>2019-01-30T11:11:11Z</updated>

		<summary type="html">&lt;p&gt;Sandello: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Информация про семинар ==&lt;br /&gt;
В рамках научно-исследовательского семинара по распределенным системам изучаются основные понятия, принципы и результаты предметной области. &lt;br /&gt;
&lt;br /&gt;
Контакты: [mailto:sandello@gmail.com Пузыревский Иван Витальевич]&lt;br /&gt;
&lt;br /&gt;
Рабочая таблица: https://docs.google.com/spreadsheets/d/1zvAqjpLXExVKFC5dHbnvWVJLNseUYKXKu5e0wSrvwUQ/edit?usp=sharing&lt;br /&gt;
&lt;br /&gt;
Оценка за НИС формируется из двух компонент:&lt;br /&gt;
1. Выполненное практическое задание (должно скоро появиться ;) -- 4 балла за задание&lt;br /&gt;
2. Доклад (один или более) на семинаре -- 3 балла за один доклад&lt;br /&gt;
3. Рецензия (одна или более) -- 3 балла за одну рецензию&lt;br /&gt;
&lt;br /&gt;
== Доклад ==&lt;br /&gt;
&lt;br /&gt;
Доклад предполагает выступление о научной статье, связанной с распределенными системами. В докладе надо надо изложить постановку задачи, предлагаемые авторами статьи подходы к ее решению, полученные результаты и их краткий анализ. Можно выбрать статью из списка ниже или предложить свою статью, например связанную с темой курсовой.&lt;br /&gt;
&lt;br /&gt;
Продолжительность доклада ограничена 20 минутами. После доклада отводится 5 минут на вопросы слушателей. На одном занятии проводится до 3 докладов.&lt;br /&gt;
&lt;br /&gt;
Расписание докладов доступно в таблице по ссылке: https://docs.google.com/spreadsheets/d/1zvAqjpLXExVKFC5dHbnvWVJLNseUYKXKu5e0wSrvwUQ/edit?usp=sharing.&lt;br /&gt;
&lt;br /&gt;
Студентам предлагается самостоятельно выбрать тему и дату выступления. В случае, если за неделю до занятия есть свободные слоты в расписании, они заполняются случайно выбранными студентами из числа тех, кто еще не делал доклад или не выбрал дату выступления. У таких студентов есть сутки, чтобы выбрать и согласовать тему доклада, в противном случае ее выбирает преподаватель.&lt;br /&gt;
&lt;br /&gt;
== Рецензия ==&lt;br /&gt;
&lt;br /&gt;
Рецензия подразумевает самостоятельное изучения научной статьи и написание краткого обзора статьи. Формат задания аналогичен прошлогоднему.  &lt;br /&gt;
&lt;br /&gt;
Что такое рецензия: это текст на 1-2 страницы, резюмирующий основные результаты работы, их отличительные характеристики и важные идеи. Если в статье описывается некоторая система -- то в рецензии стоит кратко определить (без воды) решаемую задачу, архитектуру системы, интерфейсы, протоколы. Если в статье описывается алгоритм -- важные технические характеристики (время работы, память, количество сообщений, и т. д.) и ключевые идеи. Если в статье описывается исследование -- то предмет исследования, методологию и выводы из исследования. Также, чтобы рецензия не была простым пересказом, вам &#039;&#039;&#039;обязательно&#039;&#039;&#039; в конце рецензии необходимо добавить собственный оценочный блок:&lt;br /&gt;
* &#039;&#039;&#039;как минимум&#039;&#039;&#039; три комментария по упомянутым в статье требованиям (условиям окружения, ограничениям на класс решений, предпосылкам, желаемым гарантиям системы, etc); каждый комментарий -- это цитата автора, определяющая требования + аргументация, почему требование неактуально / ослаблено / невыполнимо в других условиях. К примеру: &amp;quot;в работе авторы пишут: &amp;quot;так как мы планируем запускать протокол поверх SMS-сообщений, то ограничим длину каждого сообщения протокола 80 символами&amp;quot;; -&amp;gt; в настоящий момент меньше приложений используют SMS, предпочитая месседжеры&amp;quot;.&lt;br /&gt;
* &#039;&#039;&#039;как минимум&#039;&#039;&#039; три комментария по принятым авторами дизайн-решениям в вопросах, допускающих альтернативные решения; каждый комментарий -- это краткая суть решаемой проблемы + описание принятого решения. К примеру: &amp;quot;авторы работы для валидации целостности контента сообщения используют чексумму, и дополнительно указывают отправителя в заголовке для аутентификации; возможно, более надежно было бы рассмотреть использование HMAC как альтернативы для одновременного контроля целостности и аутентификации&amp;quot;.&lt;br /&gt;
Цель данного задания -- научиться видеть требования и граничные условия, во многом обуславливающие принимаемые авторами работы решения, а также уметь генерировать альтернативные варианты решения задач. &lt;br /&gt;
&lt;br /&gt;
Для сдачи рецензии необходимо записаться в табличку -- https://docs.google.com/spreadsheets/d/1zvAqjpLXExVKFC5dHbnvWVJLNseUYKXKu5e0wSrvwUQ/edit?usp=sharing -- и прислать до окончания курса на почту sandello@gmail.com письмо с темой &amp;quot;НИС РС 155 - Рецензия - Фамилия Имя&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Список статей для докладов и рецензирования ==&lt;br /&gt;
&lt;br /&gt;
# Ghemawat S., Gobioff H., Leung S.T. The Google File System // ACM Symposium on Operating Systems Principles (SOSP), 2003.&lt;br /&gt;
# Dean J., Ghemawat S. MapReduce: simplified data processing on large clusters // USENIX Symposium on Operating System Design and Implementation (OSDI), 2004.&lt;br /&gt;
# Hayashibara N. et al. The φ accrual failure detector // Japan Advanced Institute of Science and Technology, School of Information Science, Technical Report IS-RR-2004-010, 2004.&lt;br /&gt;
# Van Renesse R., Schneider F. B. Chain Replication for Supporting High Throughput and Availability // USENIX Symposium on Operating System Design and Implementation (OSDI), 2004.&lt;br /&gt;
# Lamport L. Fast paxos //Distributed Computing. – 2006. – Т. 19. – №. 2. – С. 79-103.&lt;br /&gt;
# Chang F. et al. Bigtable: A distributed storage system for structured data // USENIX Symposium on Operating System Design and Implementation (OSDI), 2006.&lt;br /&gt;
# Mazieres D. Paxos made practical. Technical Report, Stanford University, 2007.&lt;br /&gt;
# Chandra T. D., Griesemer R., Redstone J. Paxos made live: an engineering perspective //Proceedings of the twenty-sixth annual ACM symposium on Principles of distributed computing. – ACM, 2007. – С. 398-407.&lt;br /&gt;
# Isard M. et al. Dryad: distributed data-parallel programs from sequential building blocks //ACM SIGOPS operating systems review. – ACM, 2007. – Т. 41. – №. 3. – С. 59-72.&lt;br /&gt;
# DeCandia G. et al. Dynamo: Amazon&#039;s highly available key-value store // ACM Symposium on Operating Systems Principles (SOSP), 2007.&lt;br /&gt;
# Cooper B. F. et al. PNUTS: Yahoo!&#039;s hosted data serving platform // International Conference on Very Large Data Bases (VLDB), 2008.&lt;br /&gt;
# Isard M. et al. Quincy: fair scheduling for distributed computing clusters //Proceedings of the ACM SIGOPS 22nd symposium on Operating systems principles. – ACM, 2009. – С. 261-276.&lt;br /&gt;
# Van Renesse R., Minsky Y., Hayden M. A gossip-style failure detection service //Proceedings of the IFIP International Conference on Distributed Systems Platforms and Open Distributed Processing. – Springer-Verlag, 2009. – С. 55-70.&lt;br /&gt;
# Helland P., Campbell D. Building on quicksand // Conference on Innovative Data Systems Research (CIDR), January 2009.&lt;br /&gt;
# Malewicz G. et al. Pregel: a system for large-scale graph processing // ACM International Conference on Management of Data (SIGMOD), 2010.&lt;br /&gt;
# Hunt P. et al. ZooKeeper: Wait-free Coordination for Internet-scale Systems //USENIX annual technical conference. – 2010. – Т. 8. – №. 9.&lt;br /&gt;
# Lakshman A., Malik P. Cassandra: a decentralized structured storage system //ACM SIGOPS Operating Systems Review. – 2010. – Т. 44. – №. 2. – С. 35-40.&lt;br /&gt;
# Anderson E. et al. What consistency does your key-value store actually provide? // HotDep, 2010.&lt;br /&gt;
# Terry D. Replicated data consistency explained through baseball // Microsoft Research, Technical Report MSR-TR-2011-137, 2011.&lt;br /&gt;
# Junqueira F. P., Reed B. C., Serafini M. Zab: High-performance broadcast for primary-backup systems //Dependable Systems &amp;amp; Networks (DSN), 2011 IEEE/IFIP 41st International Conference on. – IEEE, 2011. – С. 245-256.&lt;br /&gt;
# Shapiro M. et al. Conflict-free replicated data types // Symposium on Self-Stabilizing Systems, 2011.&lt;br /&gt;
# Rao J., Shekita E. J., Tata S. Using paxos to build a scalable, consistent, and highly available datastore //Proceedings of the VLDB Endowment. – 2011. – Т. 4. – №. 4. – С. 243-254.&lt;br /&gt;
# Calder B. et al. Windows Azure Storage: a highly available cloud storage service with strong consistency // ACM Symposium on Operating Systems Principles (SOSP), 2011.&lt;br /&gt;
# Leners J. B. et al. Detecting failures in distributed systems with the falcon spy network //Proceedings of the Twenty-Third ACM Symposium on Operating Systems Principles. – ACM, 2011. – С. 279-294.&lt;br /&gt;
# Corbett J. C. et al. Spanner: Google’s globally distributed database // USENIX Symposium on Operating System Design and Implementation (OSDI), 2012.&lt;br /&gt;
# Liskov B., Cowling J. Viewstamped replication revisited. Massachusetts Institute of Technology, Tech Report MIT-CSAIL-TR-2012-021, 2012.&lt;br /&gt;
# Bronson N. et al. TAO: Facebook&#039;s Distributed Data Store for the Social Graph // USENIX Annual Technical Conference, 2013.&lt;br /&gt;
# Murray D. G. et al. Naiad: a timely dataflow system // Proceedings of the Twenty-Fourth ACM Symposium on Operating Systems Principles. – ACM, 2013. – С. 439-455.&lt;br /&gt;
# Schwarzkopf M. et al. Omega: flexible, scalable schedulers for large compute clusters //Proceedings of the 8th ACM European Conference on Computer Systems. – ACM, 2013. – С. 351-364.&lt;br /&gt;
# Ongaro D., Ousterhout J. K. In search of an understandable consensus algorithm // USENIX Annual Technical Conference, 2014.&lt;br /&gt;
# Bernstein P. A. et al. Orleans: Distributed virtual actors for programmability and scalability // Microsoft Research Technical Report MSR-TR-2014-41, 2014.&lt;br /&gt;
# Verma A. et al. Large-scale cluster management at Google with Borg // European Conference on Computer Systems (EuroSys), 2015.&lt;br /&gt;
# Lu H. et al. Existential consistency: measuring and understanding consistency at Facebook // ACM Symposium on Operating Systems Principles (SOSP), 2015.&lt;br /&gt;
# Howard H. et al. Raft refloated: do we have consensus? // ACM SIGOPS Operating Systems Review. – 2015. – Т. 49. – №. 1. – С. 12-21.&lt;br /&gt;
# Van Renesse R., Altinbuken D. Paxos made moderately complex //ACM Computing Surveys (CSUR). – 2015. – Т. 47. – №. 3. – С. 42.&lt;br /&gt;
# Burckhardt S. et al. Global sequence protocol: A robust abstraction for replicated shared state // LIPIcs-Leibniz International Proceedings in Informatics. – Schloss Dagstuhl-Leibniz-Zentrum fuer Informatik, 2015. – Т. 37.&lt;/div&gt;</summary>
		<author><name>Sandello</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=%D0%9D%D0%98%D0%A1_%D0%A0%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_(4_%D0%BA%D1%83%D1%80%D1%81,_2018)&amp;diff=32092</id>
		<title>НИС Распределенные системы (4 курс, 2018)</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=%D0%9D%D0%98%D0%A1_%D0%A0%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_(4_%D0%BA%D1%83%D1%80%D1%81,_2018)&amp;diff=32092"/>
		<updated>2019-01-30T11:10:59Z</updated>

		<summary type="html">&lt;p&gt;Sandello: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Информация про семинар ==&lt;br /&gt;
В рамках научно-исследовательского семинара по распределенным системам изучаются основные понятия, принципы и результаты предметной области. &lt;br /&gt;
&lt;br /&gt;
Контакты: [mailto:sandello@gmail.com Пузыревский Иван Витальевич]&lt;br /&gt;
&lt;br /&gt;
Рабочая таблица: https://docs.google.com/spreadsheets/d/1zvAqjpLXExVKFC5dHbnvWVJLNseUYKXKu5e0wSrvwUQ/edit?usp=sharing&lt;br /&gt;
&lt;br /&gt;
Оценка за НИС формируется из двух компонент:&lt;br /&gt;
1. Выполненное практическое задание (должно скоро появиться ;) -- 4 балла за задание&lt;br /&gt;
2. Доклад (один или более) на семинаре -- 3 балла за один доклад&lt;br /&gt;
3. Рецензия (одна или более) -- 3 балла за одну рецензию&lt;br /&gt;
&lt;br /&gt;
== Доклад ==&lt;br /&gt;
&lt;br /&gt;
Доклад предполагает выступление о научной статье, связанной с распределенными системами. В докладе надо надо изложить постановку задачи, предлагаемые авторами статьи подходы к ее решению, полученные результаты и их краткий анализ. Можно выбрать статью из списка ниже или предложить свою статью, например связанную с темой курсовой.&lt;br /&gt;
&lt;br /&gt;
Продолжительность доклада ограничена 20 минутами. После доклада отводится 5 минут на вопросы слушателей. На одном занятии проводится до 3 докладов.&lt;br /&gt;
&lt;br /&gt;
Расписание докладов доступно в таблице по ссылке: https://docs.google.com/spreadsheets/d/1zvAqjpLXExVKFC5dHbnvWVJLNseUYKXKu5e0wSrvwUQ/edit?usp=sharing.&lt;br /&gt;
&lt;br /&gt;
Студентам предлагается самостоятельно выбрать тему и дату выступления. В случае, если за неделю до занятия есть свободные слоты в расписании, они заполняются случайно выбранными студентами из числа тех, кто еще не делал доклад или не выбрал дату выступления. У таких студентов есть сутки, чтобы выбрать и согласовать тему доклада, в противном случае ее выбирает преподаватель.&lt;br /&gt;
&lt;br /&gt;
== Рецензия ==&lt;br /&gt;
&lt;br /&gt;
Рецензия подразумевает самостоятельное изучения научной статьи и написание краткого обзора статьи. Формат задания аналогичен прошлогоднему.  &lt;br /&gt;
&lt;br /&gt;
Что такое рецензия: это текст на 1-2 страницы, резюмирующий основные результаты работы, их отличительные характеристики и важные идеи. Если в статье описывается некоторая система -- то в рецензии стоит кратко определить (без воды) решаемую задачу, архитектуру системы, интерфейсы, протоколы. Если в статье описывается алгоритм -- важные технические характеристики (время работы, память, количество сообщений, и т. д.) и ключевые идеи. Если в статье описывается исследование -- то предмет исследования, методологию и выводы из исследования. Также, чтобы рецензия не была простым пересказом, вам &#039;&#039;&#039;обязательно&#039;&#039;&#039; в конце рецензии необходимо добавить собственный оценочный блок:&lt;br /&gt;
* &#039;&#039;&#039;как минимум&#039;&#039;&#039; три комментария по упомянутым в статье требованиям (условиям окружения, ограничениям на класс решений, предпосылкам, желаемым гарантиям системы, etc); каждый комментарий -- это цитата автора, определяющая требования + аргументация, почему требование неактуально / ослаблено / невыполнимо в других условиях. К примеру: &amp;quot;в работе авторы пишут: &amp;quot;так как мы планируем запускать протокол поверх SMS-сообщений, то ограничим длину каждого сообщения протокола 80 символами&amp;quot;; -&amp;gt; в настоящий момент меньше приложений используют SMS, предпочитая месседжеры&amp;quot;.&lt;br /&gt;
* &#039;&#039;&#039;как минимум&#039;&#039;&#039; три комментария по принятым авторами дизайн-решениям в вопросах, допускающих альтернативные решения; каждый комментарий -- это краткая суть решаемой проблемы + описание принятого решения. К примеру: &amp;quot;авторы работы для валидации целостности контента сообщения используют чексумму, и дополнительно указывают отправителя в заголовке для аутентификации; возможно, более надежно было бы рассмотреть использование HMAC как альтернативы для одновременного контроля целостности и аутентификации&amp;quot;.&lt;br /&gt;
Цель данного задания -- научиться видеть требования и граничные условия, во многом обуславливающие принимаемые авторами работы решения, а также уметь генерировать альтернативные варианты решения задач. &lt;br /&gt;
&lt;br /&gt;
Для сдачи рецензии необходимо записаться в табличку -- https://docs.google.com/spreadsheets/d/1zvAqjpLXExVKFC5dHbnvWVJLNseUYKXKu5e0wSrvwUQ/edit?usp=sharing -- и прислать до окончания курса на почту sandello@gmail.com письмо с темой &amp;quot;НИС РС 155 - Рецензия - Фамилия Имя&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Список статей для докладов и рецензирования ===&lt;br /&gt;
&lt;br /&gt;
# Ghemawat S., Gobioff H., Leung S.T. The Google File System // ACM Symposium on Operating Systems Principles (SOSP), 2003.&lt;br /&gt;
# Dean J., Ghemawat S. MapReduce: simplified data processing on large clusters // USENIX Symposium on Operating System Design and Implementation (OSDI), 2004.&lt;br /&gt;
# Hayashibara N. et al. The φ accrual failure detector // Japan Advanced Institute of Science and Technology, School of Information Science, Technical Report IS-RR-2004-010, 2004.&lt;br /&gt;
# Van Renesse R., Schneider F. B. Chain Replication for Supporting High Throughput and Availability // USENIX Symposium on Operating System Design and Implementation (OSDI), 2004.&lt;br /&gt;
# Lamport L. Fast paxos //Distributed Computing. – 2006. – Т. 19. – №. 2. – С. 79-103.&lt;br /&gt;
# Chang F. et al. Bigtable: A distributed storage system for structured data // USENIX Symposium on Operating System Design and Implementation (OSDI), 2006.&lt;br /&gt;
# Mazieres D. Paxos made practical. Technical Report, Stanford University, 2007.&lt;br /&gt;
# Chandra T. D., Griesemer R., Redstone J. Paxos made live: an engineering perspective //Proceedings of the twenty-sixth annual ACM symposium on Principles of distributed computing. – ACM, 2007. – С. 398-407.&lt;br /&gt;
# Isard M. et al. Dryad: distributed data-parallel programs from sequential building blocks //ACM SIGOPS operating systems review. – ACM, 2007. – Т. 41. – №. 3. – С. 59-72.&lt;br /&gt;
# DeCandia G. et al. Dynamo: Amazon&#039;s highly available key-value store // ACM Symposium on Operating Systems Principles (SOSP), 2007.&lt;br /&gt;
# Cooper B. F. et al. PNUTS: Yahoo!&#039;s hosted data serving platform // International Conference on Very Large Data Bases (VLDB), 2008.&lt;br /&gt;
# Isard M. et al. Quincy: fair scheduling for distributed computing clusters //Proceedings of the ACM SIGOPS 22nd symposium on Operating systems principles. – ACM, 2009. – С. 261-276.&lt;br /&gt;
# Van Renesse R., Minsky Y., Hayden M. A gossip-style failure detection service //Proceedings of the IFIP International Conference on Distributed Systems Platforms and Open Distributed Processing. – Springer-Verlag, 2009. – С. 55-70.&lt;br /&gt;
# Helland P., Campbell D. Building on quicksand // Conference on Innovative Data Systems Research (CIDR), January 2009.&lt;br /&gt;
# Malewicz G. et al. Pregel: a system for large-scale graph processing // ACM International Conference on Management of Data (SIGMOD), 2010.&lt;br /&gt;
# Hunt P. et al. ZooKeeper: Wait-free Coordination for Internet-scale Systems //USENIX annual technical conference. – 2010. – Т. 8. – №. 9.&lt;br /&gt;
# Lakshman A., Malik P. Cassandra: a decentralized structured storage system //ACM SIGOPS Operating Systems Review. – 2010. – Т. 44. – №. 2. – С. 35-40.&lt;br /&gt;
# Anderson E. et al. What consistency does your key-value store actually provide? // HotDep, 2010.&lt;br /&gt;
# Terry D. Replicated data consistency explained through baseball // Microsoft Research, Technical Report MSR-TR-2011-137, 2011.&lt;br /&gt;
# Junqueira F. P., Reed B. C., Serafini M. Zab: High-performance broadcast for primary-backup systems //Dependable Systems &amp;amp; Networks (DSN), 2011 IEEE/IFIP 41st International Conference on. – IEEE, 2011. – С. 245-256.&lt;br /&gt;
# Shapiro M. et al. Conflict-free replicated data types // Symposium on Self-Stabilizing Systems, 2011.&lt;br /&gt;
# Rao J., Shekita E. J., Tata S. Using paxos to build a scalable, consistent, and highly available datastore //Proceedings of the VLDB Endowment. – 2011. – Т. 4. – №. 4. – С. 243-254.&lt;br /&gt;
# Calder B. et al. Windows Azure Storage: a highly available cloud storage service with strong consistency // ACM Symposium on Operating Systems Principles (SOSP), 2011.&lt;br /&gt;
# Leners J. B. et al. Detecting failures in distributed systems with the falcon spy network //Proceedings of the Twenty-Third ACM Symposium on Operating Systems Principles. – ACM, 2011. – С. 279-294.&lt;br /&gt;
# Corbett J. C. et al. Spanner: Google’s globally distributed database // USENIX Symposium on Operating System Design and Implementation (OSDI), 2012.&lt;br /&gt;
# Liskov B., Cowling J. Viewstamped replication revisited. Massachusetts Institute of Technology, Tech Report MIT-CSAIL-TR-2012-021, 2012.&lt;br /&gt;
# Bronson N. et al. TAO: Facebook&#039;s Distributed Data Store for the Social Graph // USENIX Annual Technical Conference, 2013.&lt;br /&gt;
# Murray D. G. et al. Naiad: a timely dataflow system // Proceedings of the Twenty-Fourth ACM Symposium on Operating Systems Principles. – ACM, 2013. – С. 439-455.&lt;br /&gt;
# Schwarzkopf M. et al. Omega: flexible, scalable schedulers for large compute clusters //Proceedings of the 8th ACM European Conference on Computer Systems. – ACM, 2013. – С. 351-364.&lt;br /&gt;
# Ongaro D., Ousterhout J. K. In search of an understandable consensus algorithm // USENIX Annual Technical Conference, 2014.&lt;br /&gt;
# Bernstein P. A. et al. Orleans: Distributed virtual actors for programmability and scalability // Microsoft Research Technical Report MSR-TR-2014-41, 2014.&lt;br /&gt;
# Verma A. et al. Large-scale cluster management at Google with Borg // European Conference on Computer Systems (EuroSys), 2015.&lt;br /&gt;
# Lu H. et al. Existential consistency: measuring and understanding consistency at Facebook // ACM Symposium on Operating Systems Principles (SOSP), 2015.&lt;br /&gt;
# Howard H. et al. Raft refloated: do we have consensus? // ACM SIGOPS Operating Systems Review. – 2015. – Т. 49. – №. 1. – С. 12-21.&lt;br /&gt;
# Van Renesse R., Altinbuken D. Paxos made moderately complex //ACM Computing Surveys (CSUR). – 2015. – Т. 47. – №. 3. – С. 42.&lt;br /&gt;
# Burckhardt S. et al. Global sequence protocol: A robust abstraction for replicated shared state // LIPIcs-Leibniz International Proceedings in Informatics. – Schloss Dagstuhl-Leibniz-Zentrum fuer Informatik, 2015. – Т. 37.&lt;/div&gt;</summary>
		<author><name>Sandello</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=%D0%9D%D0%98%D0%A1_%D0%A0%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_(4_%D0%BA%D1%83%D1%80%D1%81,_2018)&amp;diff=32091</id>
		<title>НИС Распределенные системы (4 курс, 2018)</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=%D0%9D%D0%98%D0%A1_%D0%A0%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_(4_%D0%BA%D1%83%D1%80%D1%81,_2018)&amp;diff=32091"/>
		<updated>2019-01-30T11:03:27Z</updated>

		<summary type="html">&lt;p&gt;Sandello: /* Информация про семинар */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Информация про семинар ==&lt;br /&gt;
В рамках научно-исследовательского семинара по распределенным системам изучаются основные понятия, принципы и результаты предметной области. &lt;br /&gt;
&lt;br /&gt;
Контакты: [mailto:sandello@gmail.com Пузыревский Иван Витальевич]&lt;br /&gt;
&lt;br /&gt;
Рабочая таблица: https://docs.google.com/spreadsheets/d/1zvAqjpLXExVKFC5dHbnvWVJLNseUYKXKu5e0wSrvwUQ/edit?usp=sharing&lt;br /&gt;
&lt;br /&gt;
Оценка за НИС формируется из двух компонент:&lt;br /&gt;
1. Выполненное практическое задание (должно скоро появиться ;) -- 4 балла за задание&lt;br /&gt;
2. Доклад (один или более) на семинаре -- 3 балла за один доклад&lt;br /&gt;
3. Рецензия (одна или более) -- 3 балла за одну рецензию&lt;br /&gt;
&lt;br /&gt;
== Доклад ==&lt;br /&gt;
&lt;br /&gt;
Требуется выступить с докладом о научной статье, связанной с распределенными системами. В докладе надо надо изложить постановку задачи, предлагаемые авторами статьи подходы к ее решению, полученные результаты и их краткий анализ. Можно выбрать статью из списка ниже или предложить свою статью, например связанную с темой курсовой.&lt;br /&gt;
&lt;br /&gt;
Продолжительность доклада ограничена 20 минутами. После доклада отводится 5 минут на вопросы слушателей. На одном занятии проводится до 3 докладов.&lt;br /&gt;
&lt;br /&gt;
Расписание докладов доступно в таблице по ссылке: https://docs.google.com/spreadsheets/d/1zvAqjpLXExVKFC5dHbnvWVJLNseUYKXKu5e0wSrvwUQ/edit?usp=sharing.&lt;br /&gt;
&lt;br /&gt;
Студентам предлагается самостоятельно выбрать тему и дату выступления. В случае, если за неделю до занятия есть свободные слоты в расписании, они заполняются случайно выбранными студентами из числа тех, кто еще не делал доклад или не выбрал дату выступления. У таких студентов есть сутки, чтобы выбрать и согласовать тему доклада, в противном случае ее выбирает преподаватель.&lt;br /&gt;
&lt;br /&gt;
=== Список статей для докладов ===&lt;br /&gt;
&lt;br /&gt;
# Ghemawat S., Gobioff H., Leung S.T. The Google File System // ACM Symposium on Operating Systems Principles (SOSP), 2003.&lt;br /&gt;
# Dean J., Ghemawat S. MapReduce: simplified data processing on large clusters // USENIX Symposium on Operating System Design and Implementation (OSDI), 2004.&lt;br /&gt;
# Hayashibara N. et al. The φ accrual failure detector // Japan Advanced Institute of Science and Technology, School of Information Science, Technical Report IS-RR-2004-010, 2004.&lt;br /&gt;
# Van Renesse R., Schneider F. B. Chain Replication for Supporting High Throughput and Availability // USENIX Symposium on Operating System Design and Implementation (OSDI), 2004.&lt;br /&gt;
# Lamport L. Fast paxos //Distributed Computing. – 2006. – Т. 19. – №. 2. – С. 79-103.&lt;br /&gt;
# Chang F. et al. Bigtable: A distributed storage system for structured data // USENIX Symposium on Operating System Design and Implementation (OSDI), 2006.&lt;br /&gt;
# Mazieres D. Paxos made practical. Technical Report, Stanford University, 2007.&lt;br /&gt;
# Chandra T. D., Griesemer R., Redstone J. Paxos made live: an engineering perspective //Proceedings of the twenty-sixth annual ACM symposium on Principles of distributed computing. – ACM, 2007. – С. 398-407.&lt;br /&gt;
# Isard M. et al. Dryad: distributed data-parallel programs from sequential building blocks //ACM SIGOPS operating systems review. – ACM, 2007. – Т. 41. – №. 3. – С. 59-72.&lt;br /&gt;
# DeCandia G. et al. Dynamo: Amazon&#039;s highly available key-value store // ACM Symposium on Operating Systems Principles (SOSP), 2007.&lt;br /&gt;
# Cooper B. F. et al. PNUTS: Yahoo!&#039;s hosted data serving platform // International Conference on Very Large Data Bases (VLDB), 2008.&lt;br /&gt;
# Isard M. et al. Quincy: fair scheduling for distributed computing clusters //Proceedings of the ACM SIGOPS 22nd symposium on Operating systems principles. – ACM, 2009. – С. 261-276.&lt;br /&gt;
# Van Renesse R., Minsky Y., Hayden M. A gossip-style failure detection service //Proceedings of the IFIP International Conference on Distributed Systems Platforms and Open Distributed Processing. – Springer-Verlag, 2009. – С. 55-70.&lt;br /&gt;
# Helland P., Campbell D. Building on quicksand // Conference on Innovative Data Systems Research (CIDR), January 2009.&lt;br /&gt;
# Malewicz G. et al. Pregel: a system for large-scale graph processing // ACM International Conference on Management of Data (SIGMOD), 2010.&lt;br /&gt;
# Hunt P. et al. ZooKeeper: Wait-free Coordination for Internet-scale Systems //USENIX annual technical conference. – 2010. – Т. 8. – №. 9.&lt;br /&gt;
# Lakshman A., Malik P. Cassandra: a decentralized structured storage system //ACM SIGOPS Operating Systems Review. – 2010. – Т. 44. – №. 2. – С. 35-40.&lt;br /&gt;
# Anderson E. et al. What consistency does your key-value store actually provide? // HotDep, 2010.&lt;br /&gt;
# Terry D. Replicated data consistency explained through baseball // Microsoft Research, Technical Report MSR-TR-2011-137, 2011.&lt;br /&gt;
# Junqueira F. P., Reed B. C., Serafini M. Zab: High-performance broadcast for primary-backup systems //Dependable Systems &amp;amp; Networks (DSN), 2011 IEEE/IFIP 41st International Conference on. – IEEE, 2011. – С. 245-256.&lt;br /&gt;
# Shapiro M. et al. Conflict-free replicated data types // Symposium on Self-Stabilizing Systems, 2011.&lt;br /&gt;
# Rao J., Shekita E. J., Tata S. Using paxos to build a scalable, consistent, and highly available datastore //Proceedings of the VLDB Endowment. – 2011. – Т. 4. – №. 4. – С. 243-254.&lt;br /&gt;
# Calder B. et al. Windows Azure Storage: a highly available cloud storage service with strong consistency // ACM Symposium on Operating Systems Principles (SOSP), 2011.&lt;br /&gt;
# Leners J. B. et al. Detecting failures in distributed systems with the falcon spy network //Proceedings of the Twenty-Third ACM Symposium on Operating Systems Principles. – ACM, 2011. – С. 279-294.&lt;br /&gt;
# Corbett J. C. et al. Spanner: Google’s globally distributed database // USENIX Symposium on Operating System Design and Implementation (OSDI), 2012.&lt;br /&gt;
# Liskov B., Cowling J. Viewstamped replication revisited. Massachusetts Institute of Technology, Tech Report MIT-CSAIL-TR-2012-021, 2012.&lt;br /&gt;
# Bronson N. et al. TAO: Facebook&#039;s Distributed Data Store for the Social Graph // USENIX Annual Technical Conference, 2013.&lt;br /&gt;
# Murray D. G. et al. Naiad: a timely dataflow system // Proceedings of the Twenty-Fourth ACM Symposium on Operating Systems Principles. – ACM, 2013. – С. 439-455.&lt;br /&gt;
# Schwarzkopf M. et al. Omega: flexible, scalable schedulers for large compute clusters //Proceedings of the 8th ACM European Conference on Computer Systems. – ACM, 2013. – С. 351-364.&lt;br /&gt;
# Ongaro D., Ousterhout J. K. In search of an understandable consensus algorithm // USENIX Annual Technical Conference, 2014.&lt;br /&gt;
# Bernstein P. A. et al. Orleans: Distributed virtual actors for programmability and scalability // Microsoft Research Technical Report MSR-TR-2014-41, 2014.&lt;br /&gt;
# Verma A. et al. Large-scale cluster management at Google with Borg // European Conference on Computer Systems (EuroSys), 2015.&lt;br /&gt;
# Lu H. et al. Existential consistency: measuring and understanding consistency at Facebook // ACM Symposium on Operating Systems Principles (SOSP), 2015.&lt;br /&gt;
# Howard H. et al. Raft refloated: do we have consensus? // ACM SIGOPS Operating Systems Review. – 2015. – Т. 49. – №. 1. – С. 12-21.&lt;br /&gt;
# Van Renesse R., Altinbuken D. Paxos made moderately complex //ACM Computing Surveys (CSUR). – 2015. – Т. 47. – №. 3. – С. 42.&lt;br /&gt;
# Burckhardt S. et al. Global sequence protocol: A robust abstraction for replicated shared state // LIPIcs-Leibniz International Proceedings in Informatics. – Schloss Dagstuhl-Leibniz-Zentrum fuer Informatik, 2015. – Т. 37.&lt;/div&gt;</summary>
		<author><name>Sandello</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=%D0%9D%D0%98%D0%A1_%D0%A0%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_(4_%D0%BA%D1%83%D1%80%D1%81,_2018)&amp;diff=32090</id>
		<title>НИС Распределенные системы (4 курс, 2018)</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=%D0%9D%D0%98%D0%A1_%D0%A0%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_(4_%D0%BA%D1%83%D1%80%D1%81,_2018)&amp;diff=32090"/>
		<updated>2019-01-30T10:58:33Z</updated>

		<summary type="html">&lt;p&gt;Sandello: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Информация про семинар ==&lt;br /&gt;
В рамках научно-исследовательского семинара по распределенным системам изучаются основные понятия, принципы и результаты предметной области. &lt;br /&gt;
&lt;br /&gt;
Контакты: [mailto:sandello@gmail.com Пузыревский Иван Витальевич]&lt;br /&gt;
&lt;br /&gt;
Список тем курсовых работ: TBA&lt;br /&gt;
&lt;br /&gt;
=== Оценка ===&lt;br /&gt;
&lt;br /&gt;
1 модуль -- по докладам (опционально) + практическое задание 1&lt;br /&gt;
2 модуль -- практическое задание 2&lt;br /&gt;
3 модуль -- по докладам (обязательно) + предзащита&lt;br /&gt;
&lt;br /&gt;
Текущая таблица с оценками и ведомостью: https://docs.google.com/spreadsheets/d/1zvAqjpLXExVKFC5dHbnvWVJLNseUYKXKu5e0wSrvwUQ/edit?usp=sharing&lt;br /&gt;
&lt;br /&gt;
== Доклад ==&lt;br /&gt;
&lt;br /&gt;
Требуется выступить с докладом о научной статье, связанной с распределенными системами. В докладе надо надо изложить постановку задачи, предлагаемые авторами статьи подходы к ее решению, полученные результаты и их краткий анализ. Можно выбрать статью из списка ниже или предложить свою статью, например связанную с темой курсовой.&lt;br /&gt;
&lt;br /&gt;
Продолжительность доклада ограничена 20 минутами. После доклада отводится 5 минут на вопросы слушателей. На одном занятии проводится до 3 докладов.&lt;br /&gt;
&lt;br /&gt;
Расписание докладов доступно в таблице по ссылке: https://docs.google.com/spreadsheets/d/1zvAqjpLXExVKFC5dHbnvWVJLNseUYKXKu5e0wSrvwUQ/edit?usp=sharing.&lt;br /&gt;
&lt;br /&gt;
Студентам предлагается самостоятельно выбрать тему и дату выступления. В случае, если за неделю до занятия есть свободные слоты в расписании, они заполняются случайно выбранными студентами из числа тех, кто еще не делал доклад или не выбрал дату выступления. У таких студентов есть сутки, чтобы выбрать и согласовать тему доклада, в противном случае ее выбирает преподаватель.&lt;br /&gt;
&lt;br /&gt;
=== Список статей для докладов ===&lt;br /&gt;
&lt;br /&gt;
# Ghemawat S., Gobioff H., Leung S.T. The Google File System // ACM Symposium on Operating Systems Principles (SOSP), 2003.&lt;br /&gt;
# Dean J., Ghemawat S. MapReduce: simplified data processing on large clusters // USENIX Symposium on Operating System Design and Implementation (OSDI), 2004.&lt;br /&gt;
# Hayashibara N. et al. The φ accrual failure detector // Japan Advanced Institute of Science and Technology, School of Information Science, Technical Report IS-RR-2004-010, 2004.&lt;br /&gt;
# Van Renesse R., Schneider F. B. Chain Replication for Supporting High Throughput and Availability // USENIX Symposium on Operating System Design and Implementation (OSDI), 2004.&lt;br /&gt;
# Lamport L. Fast paxos //Distributed Computing. – 2006. – Т. 19. – №. 2. – С. 79-103.&lt;br /&gt;
# Chang F. et al. Bigtable: A distributed storage system for structured data // USENIX Symposium on Operating System Design and Implementation (OSDI), 2006.&lt;br /&gt;
# Mazieres D. Paxos made practical. Technical Report, Stanford University, 2007.&lt;br /&gt;
# Chandra T. D., Griesemer R., Redstone J. Paxos made live: an engineering perspective //Proceedings of the twenty-sixth annual ACM symposium on Principles of distributed computing. – ACM, 2007. – С. 398-407.&lt;br /&gt;
# Isard M. et al. Dryad: distributed data-parallel programs from sequential building blocks //ACM SIGOPS operating systems review. – ACM, 2007. – Т. 41. – №. 3. – С. 59-72.&lt;br /&gt;
# DeCandia G. et al. Dynamo: Amazon&#039;s highly available key-value store // ACM Symposium on Operating Systems Principles (SOSP), 2007.&lt;br /&gt;
# Cooper B. F. et al. PNUTS: Yahoo!&#039;s hosted data serving platform // International Conference on Very Large Data Bases (VLDB), 2008.&lt;br /&gt;
# Isard M. et al. Quincy: fair scheduling for distributed computing clusters //Proceedings of the ACM SIGOPS 22nd symposium on Operating systems principles. – ACM, 2009. – С. 261-276.&lt;br /&gt;
# Van Renesse R., Minsky Y., Hayden M. A gossip-style failure detection service //Proceedings of the IFIP International Conference on Distributed Systems Platforms and Open Distributed Processing. – Springer-Verlag, 2009. – С. 55-70.&lt;br /&gt;
# Helland P., Campbell D. Building on quicksand // Conference on Innovative Data Systems Research (CIDR), January 2009.&lt;br /&gt;
# Malewicz G. et al. Pregel: a system for large-scale graph processing // ACM International Conference on Management of Data (SIGMOD), 2010.&lt;br /&gt;
# Hunt P. et al. ZooKeeper: Wait-free Coordination for Internet-scale Systems //USENIX annual technical conference. – 2010. – Т. 8. – №. 9.&lt;br /&gt;
# Lakshman A., Malik P. Cassandra: a decentralized structured storage system //ACM SIGOPS Operating Systems Review. – 2010. – Т. 44. – №. 2. – С. 35-40.&lt;br /&gt;
# Anderson E. et al. What consistency does your key-value store actually provide? // HotDep, 2010.&lt;br /&gt;
# Terry D. Replicated data consistency explained through baseball // Microsoft Research, Technical Report MSR-TR-2011-137, 2011.&lt;br /&gt;
# Junqueira F. P., Reed B. C., Serafini M. Zab: High-performance broadcast for primary-backup systems //Dependable Systems &amp;amp; Networks (DSN), 2011 IEEE/IFIP 41st International Conference on. – IEEE, 2011. – С. 245-256.&lt;br /&gt;
# Shapiro M. et al. Conflict-free replicated data types // Symposium on Self-Stabilizing Systems, 2011.&lt;br /&gt;
# Rao J., Shekita E. J., Tata S. Using paxos to build a scalable, consistent, and highly available datastore //Proceedings of the VLDB Endowment. – 2011. – Т. 4. – №. 4. – С. 243-254.&lt;br /&gt;
# Calder B. et al. Windows Azure Storage: a highly available cloud storage service with strong consistency // ACM Symposium on Operating Systems Principles (SOSP), 2011.&lt;br /&gt;
# Leners J. B. et al. Detecting failures in distributed systems with the falcon spy network //Proceedings of the Twenty-Third ACM Symposium on Operating Systems Principles. – ACM, 2011. – С. 279-294.&lt;br /&gt;
# Corbett J. C. et al. Spanner: Google’s globally distributed database // USENIX Symposium on Operating System Design and Implementation (OSDI), 2012.&lt;br /&gt;
# Liskov B., Cowling J. Viewstamped replication revisited. Massachusetts Institute of Technology, Tech Report MIT-CSAIL-TR-2012-021, 2012.&lt;br /&gt;
# Bronson N. et al. TAO: Facebook&#039;s Distributed Data Store for the Social Graph // USENIX Annual Technical Conference, 2013.&lt;br /&gt;
# Murray D. G. et al. Naiad: a timely dataflow system // Proceedings of the Twenty-Fourth ACM Symposium on Operating Systems Principles. – ACM, 2013. – С. 439-455.&lt;br /&gt;
# Schwarzkopf M. et al. Omega: flexible, scalable schedulers for large compute clusters //Proceedings of the 8th ACM European Conference on Computer Systems. – ACM, 2013. – С. 351-364.&lt;br /&gt;
# Ongaro D., Ousterhout J. K. In search of an understandable consensus algorithm // USENIX Annual Technical Conference, 2014.&lt;br /&gt;
# Bernstein P. A. et al. Orleans: Distributed virtual actors for programmability and scalability // Microsoft Research Technical Report MSR-TR-2014-41, 2014.&lt;br /&gt;
# Verma A. et al. Large-scale cluster management at Google with Borg // European Conference on Computer Systems (EuroSys), 2015.&lt;br /&gt;
# Lu H. et al. Existential consistency: measuring and understanding consistency at Facebook // ACM Symposium on Operating Systems Principles (SOSP), 2015.&lt;br /&gt;
# Howard H. et al. Raft refloated: do we have consensus? // ACM SIGOPS Operating Systems Review. – 2015. – Т. 49. – №. 1. – С. 12-21.&lt;br /&gt;
# Van Renesse R., Altinbuken D. Paxos made moderately complex //ACM Computing Surveys (CSUR). – 2015. – Т. 47. – №. 3. – С. 42.&lt;br /&gt;
# Burckhardt S. et al. Global sequence protocol: A robust abstraction for replicated shared state // LIPIcs-Leibniz International Proceedings in Informatics. – Schloss Dagstuhl-Leibniz-Zentrum fuer Informatik, 2015. – Т. 37.&lt;/div&gt;</summary>
		<author><name>Sandello</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=%D0%9D%D0%98%D0%A1_%D0%A0%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_(4_%D0%BA%D1%83%D1%80%D1%81,_2018)&amp;diff=32089</id>
		<title>НИС Распределенные системы (4 курс, 2018)</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=%D0%9D%D0%98%D0%A1_%D0%A0%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_(4_%D0%BA%D1%83%D1%80%D1%81,_2018)&amp;diff=32089"/>
		<updated>2019-01-30T10:58:01Z</updated>

		<summary type="html">&lt;p&gt;Sandello: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Информация про семинар ==&lt;br /&gt;
В рамках научно-исследовательского семинара по распределенным системам изучаются основные понятия, принципы и результаты предметной области. &lt;br /&gt;
&lt;br /&gt;
Контакты: [mailto:sandello@gmail.com Пузыревский Иван Витальевич]&lt;br /&gt;
&lt;br /&gt;
Список тем курсовых работ: TBA&lt;br /&gt;
&lt;br /&gt;
=== Оценка ===&lt;br /&gt;
&lt;br /&gt;
1 модуль -- по докладам (опционально) + практическое задание 1&lt;br /&gt;
2 модуль -- практическое задание 2&lt;br /&gt;
3 модуль -- по докладам (обязательно) + предзащита&lt;br /&gt;
&lt;br /&gt;
Текущая таблица с оценками и ведомостью: https://docs.google.com/spreadsheets/d/1zvAqjpLXExVKFC5dHbnvWVJLNseUYKXKu5e0wSrvwUQ/edit?usp=sharing&lt;br /&gt;
&lt;br /&gt;
== Доклад ==&lt;br /&gt;
&lt;br /&gt;
Требуется выступить с докладом о научной статье, связанной с распределенными системами. В докладе надо надо изложить постановку задачи, предлагаемые авторами статьи подходы к ее решению, полученные результаты и их краткий анализ. Можно выбрать статью из списка ниже или предложить свою статью, например связанную с темой курсовой.&lt;br /&gt;
&lt;br /&gt;
Продолжительность доклада ограничена 20 минутами. После доклада отводится 5 минут на вопросы слушателей. На одном занятии проводится до 3 докладов.&lt;br /&gt;
&lt;br /&gt;
Расписание докладов доступно в таблице по ссылке: https://docs.google.com/spreadsheets/d/1zvAqjpLXExVKFC5dHbnvWVJLNseUYKXKu5e0wSrvwUQ/edit?usp=sharing. Студентам предлагается самостоятельно выбрать тему и дату выступления. В случае, если за неделю до занятия есть свободные слоты в расписании, они заполняются случайно выбранными студентами из числа тех, кто еще не делал доклад или не выбрал дату выступления. У таких студентов есть сутки, чтобы выбрать и согласовать тему доклада, в противном случае ее выбирает преподаватель.&lt;br /&gt;
&lt;br /&gt;
=== Список статей для докладов&lt;br /&gt;
&lt;br /&gt;
# Ghemawat S., Gobioff H., Leung S.T. The Google File System // ACM Symposium on Operating Systems Principles (SOSP), 2003.&lt;br /&gt;
# Dean J., Ghemawat S. MapReduce: simplified data processing on large clusters // USENIX Symposium on Operating System Design and Implementation (OSDI), 2004.&lt;br /&gt;
# Hayashibara N. et al. The φ accrual failure detector // Japan Advanced Institute of Science and Technology, School of Information Science, Technical Report IS-RR-2004-010, 2004.&lt;br /&gt;
# Van Renesse R., Schneider F. B. Chain Replication for Supporting High Throughput and Availability // USENIX Symposium on Operating System Design and Implementation (OSDI), 2004.&lt;br /&gt;
# Lamport L. Fast paxos //Distributed Computing. – 2006. – Т. 19. – №. 2. – С. 79-103.&lt;br /&gt;
# Chang F. et al. Bigtable: A distributed storage system for structured data // USENIX Symposium on Operating System Design and Implementation (OSDI), 2006.&lt;br /&gt;
# Mazieres D. Paxos made practical. Technical Report, Stanford University, 2007.&lt;br /&gt;
# Chandra T. D., Griesemer R., Redstone J. Paxos made live: an engineering perspective //Proceedings of the twenty-sixth annual ACM symposium on Principles of distributed computing. – ACM, 2007. – С. 398-407.&lt;br /&gt;
# Isard M. et al. Dryad: distributed data-parallel programs from sequential building blocks //ACM SIGOPS operating systems review. – ACM, 2007. – Т. 41. – №. 3. – С. 59-72.&lt;br /&gt;
# DeCandia G. et al. Dynamo: Amazon&#039;s highly available key-value store // ACM Symposium on Operating Systems Principles (SOSP), 2007.&lt;br /&gt;
# Cooper B. F. et al. PNUTS: Yahoo!&#039;s hosted data serving platform // International Conference on Very Large Data Bases (VLDB), 2008.&lt;br /&gt;
# Isard M. et al. Quincy: fair scheduling for distributed computing clusters //Proceedings of the ACM SIGOPS 22nd symposium on Operating systems principles. – ACM, 2009. – С. 261-276.&lt;br /&gt;
# Van Renesse R., Minsky Y., Hayden M. A gossip-style failure detection service //Proceedings of the IFIP International Conference on Distributed Systems Platforms and Open Distributed Processing. – Springer-Verlag, 2009. – С. 55-70.&lt;br /&gt;
# Helland P., Campbell D. Building on quicksand // Conference on Innovative Data Systems Research (CIDR), January 2009.&lt;br /&gt;
# Malewicz G. et al. Pregel: a system for large-scale graph processing // ACM International Conference on Management of Data (SIGMOD), 2010.&lt;br /&gt;
# Hunt P. et al. ZooKeeper: Wait-free Coordination for Internet-scale Systems //USENIX annual technical conference. – 2010. – Т. 8. – №. 9.&lt;br /&gt;
# Lakshman A., Malik P. Cassandra: a decentralized structured storage system //ACM SIGOPS Operating Systems Review. – 2010. – Т. 44. – №. 2. – С. 35-40.&lt;br /&gt;
# Anderson E. et al. What consistency does your key-value store actually provide? // HotDep, 2010.&lt;br /&gt;
# Terry D. Replicated data consistency explained through baseball // Microsoft Research, Technical Report MSR-TR-2011-137, 2011.&lt;br /&gt;
# Junqueira F. P., Reed B. C., Serafini M. Zab: High-performance broadcast for primary-backup systems //Dependable Systems &amp;amp; Networks (DSN), 2011 IEEE/IFIP 41st International Conference on. – IEEE, 2011. – С. 245-256.&lt;br /&gt;
# Shapiro M. et al. Conflict-free replicated data types // Symposium on Self-Stabilizing Systems, 2011.&lt;br /&gt;
# Rao J., Shekita E. J., Tata S. Using paxos to build a scalable, consistent, and highly available datastore //Proceedings of the VLDB Endowment. – 2011. – Т. 4. – №. 4. – С. 243-254.&lt;br /&gt;
# Calder B. et al. Windows Azure Storage: a highly available cloud storage service with strong consistency // ACM Symposium on Operating Systems Principles (SOSP), 2011.&lt;br /&gt;
# Leners J. B. et al. Detecting failures in distributed systems with the falcon spy network //Proceedings of the Twenty-Third ACM Symposium on Operating Systems Principles. – ACM, 2011. – С. 279-294.&lt;br /&gt;
# Corbett J. C. et al. Spanner: Google’s globally distributed database // USENIX Symposium on Operating System Design and Implementation (OSDI), 2012.&lt;br /&gt;
# Liskov B., Cowling J. Viewstamped replication revisited. Massachusetts Institute of Technology, Tech Report MIT-CSAIL-TR-2012-021, 2012.&lt;br /&gt;
# Bronson N. et al. TAO: Facebook&#039;s Distributed Data Store for the Social Graph // USENIX Annual Technical Conference, 2013.&lt;br /&gt;
# Murray D. G. et al. Naiad: a timely dataflow system // Proceedings of the Twenty-Fourth ACM Symposium on Operating Systems Principles. – ACM, 2013. – С. 439-455.&lt;br /&gt;
# Schwarzkopf M. et al. Omega: flexible, scalable schedulers for large compute clusters //Proceedings of the 8th ACM European Conference on Computer Systems. – ACM, 2013. – С. 351-364.&lt;br /&gt;
# Ongaro D., Ousterhout J. K. In search of an understandable consensus algorithm // USENIX Annual Technical Conference, 2014.&lt;br /&gt;
# Bernstein P. A. et al. Orleans: Distributed virtual actors for programmability and scalability // Microsoft Research Technical Report MSR-TR-2014-41, 2014.&lt;br /&gt;
# Verma A. et al. Large-scale cluster management at Google with Borg // European Conference on Computer Systems (EuroSys), 2015.&lt;br /&gt;
# Lu H. et al. Existential consistency: measuring and understanding consistency at Facebook // ACM Symposium on Operating Systems Principles (SOSP), 2015.&lt;br /&gt;
# Howard H. et al. Raft refloated: do we have consensus? // ACM SIGOPS Operating Systems Review. – 2015. – Т. 49. – №. 1. – С. 12-21.&lt;br /&gt;
# Van Renesse R., Altinbuken D. Paxos made moderately complex //ACM Computing Surveys (CSUR). – 2015. – Т. 47. – №. 3. – С. 42.&lt;br /&gt;
# Burckhardt S. et al. Global sequence protocol: A robust abstraction for replicated shared state // LIPIcs-Leibniz International Proceedings in Informatics. – Schloss Dagstuhl-Leibniz-Zentrum fuer Informatik, 2015. – Т. 37.&lt;/div&gt;</summary>
		<author><name>Sandello</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=%D0%9E_%D1%84%D0%B0%D0%BA%D1%83%D0%BB%D1%8C%D1%82%D0%B5%D1%82%D0%B5&amp;diff=32088</id>
		<title>О факультете</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=%D0%9E_%D1%84%D0%B0%D0%BA%D1%83%D0%BB%D1%8C%D1%82%D0%B5%D1%82%D0%B5&amp;diff=32088"/>
		<updated>2019-01-30T10:54:55Z</updated>

		<summary type="html">&lt;p&gt;Sandello: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__ &lt;br /&gt;
&lt;br /&gt;
= Учебные курсы факультета компьютерных наук=&lt;br /&gt;
== Курсы за 2018/19 учебный год ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! 1 курс !! 2 курс !! 3 курс !! 4 курс  !! майноры и факультативы&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
[[Математический_анализ_на_ПМИ_2018/2019_(пилотный_поток) | Математический анализ на ПМИ (пилотный поток)]]&lt;br /&gt;
&lt;br /&gt;
[[Математический_анализ_на_ПМИ_2018/2019_(основной_поток) | Математический анализ на ПМИ (основной поток)]]&lt;br /&gt;
&lt;br /&gt;
[[Calculus_DSBA_2018/2019 | Calculus I DSBA (ПАД)]]&lt;br /&gt;
&lt;br /&gt;
[[Основы_и_методология_программирования_на_ПМИ_2018/2019_(пилотный_поток) | Основы и методология программирования на ПМИ (пилотный поток)]]&lt;br /&gt;
&lt;br /&gt;
[[Основы_и_методология_программирования_на_ПМИ_2019_(С%2B%2B,_основной_поток) | Основы и методология программирования на ПМИ (С++, основной поток)]]&lt;br /&gt;
&lt;br /&gt;
[[Линейная_алгебра_и_геометрия_на_ПМИ_2018/2019_(пилотный_поток) | Линейная алгебра и геометрия на ПМИ (пилотный поток)]]&lt;br /&gt;
&lt;br /&gt;
[[Линейная_алгебра_и_геометрия_на_ПМИ_2018/2019_(основной_поток) | Линейная алгебра и геометрия на ПМИ (основной поток)]]&lt;br /&gt;
&lt;br /&gt;
[[LAaG_DSBA_2018/2019 | LAaG DSBA]]&lt;br /&gt;
&lt;br /&gt;
[[Дискретная_математика_1_2018/2019 | Дискретная математика-1 на ПМИ]]&lt;br /&gt;
&lt;br /&gt;
[[Discrete Mathematics DSBA |Discrete Mathematics DSBA (ПАД)]]&lt;br /&gt;
&lt;br /&gt;
[[Introduction_to_programming | Introduction to programming DSBA (ПАД)]]&lt;br /&gt;
&lt;br /&gt;
[[Introduction_to_programming_2 | Introduction to programming 2 DSBA (ПАД)]]&lt;br /&gt;
&lt;br /&gt;
[http://hsealgebra19.wikidot.com Алгебра на ПИ]&lt;br /&gt;
&lt;br /&gt;
[[Алгоритмы_и_структуры_данных_2018/2019 | Алгоритмы и структуры данных на ПМИ (основной поток)]]&lt;br /&gt;
&lt;br /&gt;
[[Алгоритмы_и_структуры_данных_2018/2019 (пилотный поток) | Алгоритмы и структуры данных на ПМИ (пилотный поток)]]&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
&lt;br /&gt;
[http://math-info.hse.ru/s18/t Дифференциальные уравнения]&lt;br /&gt;
&lt;br /&gt;
[[Теория_вероятностей_2018/2019_(основной_поток) | Теория вероятностей на ПМИ (основной поток)]]&lt;br /&gt;
&lt;br /&gt;
[[Теория_вероятностей_2018/2019_(пилотный_поток) | Теория вероятностей на ПМИ (пилотный поток)]]&lt;br /&gt;
&lt;br /&gt;
[[Математический_анализ_2018/2019_(пилотный_поток) | Математический анализ 2 на ПМИ (пилотный поток)]]&lt;br /&gt;
&lt;br /&gt;
[[DM2-pilot2018/2019 | Дискретная математика-2 на ПМИ (пилотный поток)]]&lt;br /&gt;
&lt;br /&gt;
[[DM2-basic2018/2019 | Дискретная математика-2 на ПМИ (основной поток)]]&lt;br /&gt;
&lt;br /&gt;
[[Алгоритмы_и_структуры_данных_2_2018/2019 | Алгоритмы и структуры данных – 2 на ПМИ (основной поток)]]&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
&lt;br /&gt;
[[Машинное_обучение_1 | Машинное обучение 1 на ПМИ]]&lt;br /&gt;
&lt;br /&gt;
[[Машинное_обучение_2 | Машинное обучение 2 на ПМИ]]&lt;br /&gt;
&lt;br /&gt;
[[Численные_Методы_2018 | Численные методы ]]&lt;br /&gt;
&lt;br /&gt;
[[PDC | Параллельные и распределенные вычисления]]&lt;br /&gt;
&lt;br /&gt;
[[Theory_of_Computing_2018_2019 | Theory of Computing, AMI]]&lt;br /&gt;
&lt;br /&gt;
[[НИС_Машинное_обучение_и_приложения_2018/2019|НИС Машинное обучение и приложения]]&lt;br /&gt;
&lt;br /&gt;
[[Прикладная_статистика_в_машинном_обучении(2018)|Прикладная статистика в машинном обучении]]&lt;br /&gt;
&lt;br /&gt;
[[Безопасность_компьютерных_систем_2018|Безопасность компьютерных систем]]&lt;br /&gt;
&lt;br /&gt;
[[НИС_РС|НИС Распределенные системы]]&lt;br /&gt;
&lt;br /&gt;
[[Основные методы анализа данных]]&lt;br /&gt;
&lt;br /&gt;
[[Теория баз данных]]&lt;br /&gt;
&lt;br /&gt;
[[Непрерывная оптимизация/2019|Непрерывная оптимизация (161-162)]]&lt;br /&gt;
&lt;br /&gt;
[[Непрерывная оптимизация (163-167)]]&lt;br /&gt;
&lt;br /&gt;
[[Сложность вычислений и логика в теоретической информатике]]&lt;br /&gt;
&lt;br /&gt;
[[Data analysis (Software Engineering) 2019|Data analysis]]&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
&lt;br /&gt;
[[Statistical_learning_theory_2018_2019 | Introduction to statistical learning theory]]&lt;br /&gt;
&lt;br /&gt;
[[Анализ_неструктурированных_данных-2018 |Анализ неструктурированных данных ]]&lt;br /&gt;
&lt;br /&gt;
[[Байесовские_методы_машинного_обучения_2018|Байесовские методы машинного обучения]]&lt;br /&gt;
&lt;br /&gt;
[[НИС_Машинное_обучение_и_приложения_2018/2019|НИС Машинное обучение и приложения]]&lt;br /&gt;
&lt;br /&gt;
[[НИС_Науки_о_данных_2018/2019|НИС Науки о данных]]&lt;br /&gt;
&lt;br /&gt;
[[НИС_Распределенные_системы_(4_курс,_2018)|НИС Распределенные системы]]&lt;br /&gt;
&lt;br /&gt;
[[Теория_Информации_2018/2019|Теория информации]]&lt;br /&gt;
&lt;br /&gt;
[[Безопасность_компьютерных_систем_2018|Безопасность компьютерных систем]]&lt;br /&gt;
&lt;br /&gt;
[[Методы_и_системы_обработки_больших_данных_(осень_2018)|Методы и системы обработки больших данных]]&lt;br /&gt;
&lt;br /&gt;
[[Философия_науки_2018|Философия науки]]&lt;br /&gt;
&lt;br /&gt;
[[Теория баз данных]]&lt;br /&gt;
&lt;br /&gt;
[[ConvAppr19 | Выпуклое программирование и аппроксимационные алгоритмы (ТИ)]]&lt;br /&gt;
&lt;br /&gt;
[[Функциональное программирование 2019 | Функциональное программирование]]&lt;br /&gt;
&lt;br /&gt;
[[A_Theorist&#039;s_Toolkit_2018_2019 | A Theorist&#039;s Toolkit, AMI]]&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
[[Дополнительные главы теории вероятностей 2019 | Дополнительные главы теории вероятностей 2019]]&lt;br /&gt;
&lt;br /&gt;
[[Введение в программирование (курс майнора) 2018/2019]]&lt;br /&gt;
&lt;br /&gt;
[[dopglavy_DM_1819|Допглавы дискретной математики]]&lt;br /&gt;
&lt;br /&gt;
[[Современные_методы_машинного_обучения_(курс_майнора)_2018/2019 | Современные методы машинного обучения (курс майнора) 2018/2019]]&lt;br /&gt;
&lt;br /&gt;
[[Прикладные_задачи_анализа_данных_(майнор_-_весна_2019) | Прикладные задачи анализа данных (майнор - весна 2019)]]&lt;br /&gt;
&lt;br /&gt;
[[Майнор Интеллектуальный анализ данных/Введение в анализ данных | Введение в анализ данных (курс майнора)]]&lt;br /&gt;
&lt;br /&gt;
[[Функциональный анализ (весна_2019) | Функциональный анализ (весна_2019)]]&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Курсы в рамках проекта [https://www.hse.ru/dataculture/ Data Culture]==&lt;br /&gt;
=== 2 семестр ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Дисциплина !! Образовательная программа !! Курс !! Модули &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[Основы программирования на Python весна 2019 матфак|Основы программирования на Python-2]] || Математика || 2-4 курс || 3-4 модули&lt;br /&gt;
|-&lt;br /&gt;
| [[Цифровая_грамотность_(филология)|Цифровая грамотность]] || Филология || 1 курс || 3-4 модули&lt;br /&gt;
|-&lt;br /&gt;
| [[Цифровая_грамотность_(ИИ_и_культурология)|Цифровая грамотность]] || История искусств и Культурология || 1 курс || 3-4 модули&lt;br /&gt;
|-&lt;br /&gt;
| [[Цифровая_грамотность_(ИЯМК_2019)|Цифровая грамотность]] ||  Иностранные языки и межкультурная коммуникация (ДИЯ) || 1 курс || 3-4 модули&lt;br /&gt;
|-&lt;br /&gt;
| [[Основы_анализа_и_визуализации_данных_ДИЯ_2019|Анализ и визуализации данных]] ||  Иностранные языки и межкультурная коммуникация (ДИЯ) || 2 курс || 3-4 модули&lt;br /&gt;
|-&lt;br /&gt;
| [[Научно-исследовательский_семинар_2019| Научно-исследовательский семинар]] ||  Политология || 1 курс || 3 модуль&lt;br /&gt;
|-&lt;br /&gt;
| [[ММО_Политология_201810|Методы машинного обучения]] || Прикладная политология || 1 г.о. || 2-3 модули&lt;br /&gt;
|-&lt;br /&gt;
| [[Основы_программирования_в_Python_2019|Основы программирования в Python]] || Мировая экономика || 2 курс || 3-4 модули&lt;br /&gt;
|-&lt;br /&gt;
| [[Программирование_и_компьютерные_инструменты_лингвистического_исследования|Программирование и компьютерные инструменты лингвистического исследования]] || Фундаментальная и компьютерная лингвистика || 1 курс || 1-4 модули&lt;br /&gt;
|-&lt;br /&gt;
| [[Программирование_(python)_для_лингвистов|Программирование (Python) для лингвистов]] || Фундаментальная и компьютерная лингвистика || 4 курс || 1-3 модули&lt;br /&gt;
|-&lt;br /&gt;
| [[ПМСАР-1|Автоматизированный сбор больших данных в экономико-социологических исследованиях]] || Прикладные методы социального анализа рынков  || 2 г.о.  || 3-4 модули&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 1 семестр ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Дисциплина !! Образовательная программа !! Курс !! Модули &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[Основы анализа данных в международных отношениях 2018/2019|Основы анализа данных в международных отношениях]] || Международные отношения || 2 курс || 1-2 модули&lt;br /&gt;
|-&lt;br /&gt;
| [[Introduction_to_Data_Culture_2018-2019|Introduction to Data Culture]] || Программа двух дипломов НИУ ВШЭ и Лондонского университета &amp;quot;Международные отношения&amp;quot; || 1 курс || 2 модуль&lt;br /&gt;
|-&lt;br /&gt;
| [[Программирование_и_компьютерные_инструменты_лингвистического_исследования|Программирование и компьютерные инструменты лингвистического исследования]] || Фундаментальная и компьютерная лингвистика || 1 курс || 1-4 модули&lt;br /&gt;
|-&lt;br /&gt;
| [[Цифровая грамотность(востоковедение)|Цифровая грамотность]] || Востоковедение || 1 курс || 1 модуль&lt;br /&gt;
|-&lt;br /&gt;
| [[Разработка управленческих решений в маркетинге | Разработка управленческих решений в маркетинге]] || Маркетинг и рыночная аналитика || 2 курс || 1-2 модули&lt;br /&gt;
|-&lt;br /&gt;
| [[Информационные технологии в деятельности юриста_2018-2019| Информационные технологии в деятельности юриста]] || Юриспруденция || 1 курс || 2 модуль&lt;br /&gt;
|-&lt;br /&gt;
| [[Машинное обучение на матфаке 2018/2019| Машинное обучение]] || Факультет математики || 2-4 курсы || 1-2 модули&lt;br /&gt;
|-&lt;br /&gt;
| [[ПМСАР-2| Методы анализа больших данных в исследованиях поведения покупателей]] || Прикладные методы социального анализа рынков || 2 г.о. || 1-2 модули&lt;br /&gt;
|-&lt;br /&gt;
| [[Анализ данных в Python (Политологи 1 семестр 1-2 модули)|Анализ данных в Python]] || Политология || 4 курс || 1-2 модули&lt;br /&gt;
|-&lt;br /&gt;
| [[Основы анализа и визуализации данных для медиа (Журналисты 1 семестр 1 модуль)|Основы анализа и визуализации данных для медиа]] || Журналистика || 4 курс || 1 модуль&lt;br /&gt;
|-&lt;br /&gt;
| [[Программирование_(python)_для_лингвистов|Программирование (Python) для лингвистов]] || Фундаментальная и компьютерная лингвистика || 4 курс || 1-3 модули&lt;br /&gt;
|-&lt;br /&gt;
| [[Введение в анализ текстов на Python для ФГН 2018|Введение в анализ текстов на Python для ФГН 2018]] || Фундаментальная и компьютерная лингвистика || 3 курс || 1, 2, 4 модули&lt;br /&gt;
|-&lt;br /&gt;
| [[Машинное обучение (ФЭН)]] || Факультет экономических наук || 3-4 курсы || 1-2 модули&lt;br /&gt;
|-&lt;br /&gt;
| [[Программирование_(python)_для_экономистов|Программирование (Python) для экономистов]] || Факультет экономических наук || 2 курс || 1-2 модули&lt;br /&gt;
|-&lt;br /&gt;
| [[Цифровая грамотность(философия)|Цифровая грамотность]] || Философия || 1 курс || 1-2 модули&lt;br /&gt;
|-&lt;br /&gt;
| [[Цифровая_грамотность_(историки)|Цифровая грамотность]] || История || 1 курс || 1-2 модули&lt;br /&gt;
|-&lt;br /&gt;
| [[Обработка и анализ данных физического эксперимента|Обработка и анализ данных физического эксперимента]] || Физика || 2 курс || 1-2 модули&lt;br /&gt;
|-&lt;br /&gt;
| [[Статистический анализ в среде R (Социологи 1 семестр 2 модуль)|Статистический анализ в среде R ]] || Социология || 4 курс || 2 модуль&lt;br /&gt;
|-&lt;br /&gt;
| [[ММО_Политология_201810|Методы машинного обучения]] || Прикладная политология || 1 г.о. || 2-3 модули&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Архив =&lt;br /&gt;
&lt;br /&gt;
== Курсы за 2017/18 учебный год ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! 1 курс !! 2 курс !! 3 курс !! 4 курс  !! майноры и факультативы&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
[[Математический_анализ_на_ПМИ_2017/2018_(пилотный_поток) | Математический анализ на ПМИ 2017/2018 (пилотный поток)]]&lt;br /&gt;
&lt;br /&gt;
[[Математический_анализ_на_ПМИ_2017/2018_(основной_поток) | Математический анализ на ПМИ 2017/2018 (основной поток)]]&lt;br /&gt;
&lt;br /&gt;
[[Основы_и_методология_программирования_на_ПМИ_2017/2018_(пилотный_поток,_1_модуль) | Основы и методология программирования на ПМИ 2017/2018 (пилотный поток, 1 модуль)]]&lt;br /&gt;
&lt;br /&gt;
[[Основы_и_методология_программирования_на_ПМИ_2017/2018_(основной_поток,_2_модуль) | Основы и методология программирования на ПМИ 2017/2018 (основной поток, 2 модуль)]]&lt;br /&gt;
&lt;br /&gt;
[[Основы_и_методология_программирования_на_ПМИ_2017/2018_(основной_поток,_3_модуль) | Основы и методология программирования на ПМИ 2017/2018 (основной поток, 3 модуль)]]&lt;br /&gt;
&lt;br /&gt;
[[Алгоритмы_и_структуры_данных_на_ПМИ_2017/2018_(основной_поток) | Алгоритмы и структуры данных на ПМИ 2017/2018 (основной поток)]]&lt;br /&gt;
&lt;br /&gt;
[[Линейная_алгебра_и_геометрия_на_ПМИ_2017/2018_(пилотный_поток) | Линейная алгебра и геометрия на ПМИ (пилотный поток)]]&lt;br /&gt;
&lt;br /&gt;
[[Линейная_алгебра_и_геометрия_на_ПМИ_2017/2018_(основной_поток) | Линейная алгебра и геометрия на ПМИ (основной поток)]]&lt;br /&gt;
&lt;br /&gt;
[[Дискретная_математика_1_2017/2018 | Дискретная математика-1 на ПМИ]]&lt;br /&gt;
&lt;br /&gt;
[[Алгоритмы и структуры данных 1  | Алгоритмы и структуры данных – 1 (пилотный поток)]]&lt;br /&gt;
&lt;br /&gt;
[[Алгебра_на_ПМИ_2017/2018 | Алгебра на ПМИ]]&lt;br /&gt;
&lt;br /&gt;
[http://hsealgebra18.wikidot.com Алгебра на ПИ]&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
[[Теория_вероятностей_2017/2018_(основной_поток) | Теория вероятностей на ПМИ (основной поток)]]&lt;br /&gt;
&lt;br /&gt;
[[Теория_вероятностей_2017/2018_(пилотный_поток) | Теория вероятностей на ПМИ (пилотный поток)]]&lt;br /&gt;
&lt;br /&gt;
[[Математический анализ-3 на ПМИ_2017/2018_(основной_поток) | Математический анализ-2 на ПМИ (основной поток)]]&lt;br /&gt;
&lt;br /&gt;
[[Математический анализ на ПМИ_2017/2018 | Математический анализ-3 на ПМИ (пилотный поток)]]&lt;br /&gt;
&lt;br /&gt;
[[DM2-pilot2017/2018 | Дискретная математика-2 на ПМИ (пилотный поток)]]&lt;br /&gt;
&lt;br /&gt;
[[DM_2_2017_2018 | Дискретная математика-2 на ПМИ (основной поток)]]&lt;br /&gt;
&lt;br /&gt;
[[Алгоритмы и структуры данных_2_2017/2018 | Алгоритмы и структуры данных – 2 на ПМИ (основной поток)]]&lt;br /&gt;
&lt;br /&gt;
[[Дифференциальные уравнения (2 курс, 2017/2018)| Дифференциальные уравнения]]&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
[[Машинное_обучение_1/2017_2018 | Машинное обучение 1 на ПМИ]]&lt;br /&gt;
&lt;br /&gt;
[[Машинное_обучение_2/2017_2018 | Машинное обучение 2 на ПМИ]]&lt;br /&gt;
&lt;br /&gt;
[[Численные_методы_2017 | Численные методы]]&lt;br /&gt;
&lt;br /&gt;
[[Statistics of Stochastic Processes|Статистика случайных процессов 2018]] &lt;br /&gt;
&lt;br /&gt;
[[Прикладная_статистика_в_машинном_обучении | Прикладная статистика в машинном обучении]]&lt;br /&gt;
&lt;br /&gt;
[[Theory_of_Computing | Theory of Computing, AMI]]&lt;br /&gt;
&lt;br /&gt;
[[Statistical_learning_theory | Introduction to statistical learning theory]]&lt;br /&gt;
&lt;br /&gt;
[[Основные_методы_анализа_данных_(специализация_АДИС) | Основные методы анализа данных на ПМИ]]&lt;br /&gt;
&lt;br /&gt;
[[Анализ неструктурированных данных]]&lt;br /&gt;
&lt;br /&gt;
[[Безопасность компьютерных систем 2017 | Безопасность компьютерных систем]]&lt;br /&gt;
&lt;br /&gt;
[[НИС_Распределенные_системы_(3_курс,_2017) | НИС Распределенные системы]]&lt;br /&gt;
&lt;br /&gt;
[[НИС_Машинное_обучение_и_приложения_2017/2018 | НИС Машинное обучение и приложения]]&lt;br /&gt;
&lt;br /&gt;
[[Непрерывная_оптимизация | Непрерывная оптимизация]]&lt;br /&gt;
&lt;br /&gt;
[[ Сложность_и_логика|  Сложность вычислений и логика в теоретической информатике]]&lt;br /&gt;
&lt;br /&gt;
[[Data_analysis_(Software_Engineering)_2018 | Data Analysis на ПИ]]&lt;br /&gt;
&lt;br /&gt;
[http://telegra.ph/Kurs-Vvedenie-v-OOP-VSHEH-2018-Modul-3-01-30 Введение в ООП]&lt;br /&gt;
&lt;br /&gt;
[http://wiki.cs.hse.ru/Машинное_обучение_на_больших_данных Машинное обучение на больших данных]&lt;br /&gt;
&lt;br /&gt;
[[Дискретная_оптимизация | Дискретная оптимизация]]&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
&lt;br /&gt;
[[Безопасность компьютерных систем 2017 | Безопасность компьютерных систем]]&lt;br /&gt;
&lt;br /&gt;
[[Философия_науки_2017 | Философия науки]]&lt;br /&gt;
&lt;br /&gt;
[[НИС_Распределенные_системы_(4_курс,_2017) | НИС Распределенные системы]]&lt;br /&gt;
&lt;br /&gt;
[[НИС_Машинное_обучение_и_приложения_2017/2018 | НИС Машинное обучение и приложения]]&lt;br /&gt;
&lt;br /&gt;
[[Анализ неструктурированных данных]]&lt;br /&gt;
&lt;br /&gt;
[[Байесовские методы машинного обучения 2017 | Байесовские методы машинного обучения]]&lt;br /&gt;
&lt;br /&gt;
[[Функциональное программирование 2018 | Функциональное программирование]]&lt;br /&gt;
&lt;br /&gt;
[http://telegra.ph/Kurs-Vvedenie-v-OOP-VSHEH-2018-Modul-3-01-30 Введение в ООП]&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
&lt;br /&gt;
[[Современные методы машинного обучения (курс майнора) 2017/2018]]&lt;br /&gt;
&lt;br /&gt;
[[Введение в программирование (курс майнора) 2017/2018]]&lt;br /&gt;
&lt;br /&gt;
[[Майнор Интеллектуальный анализ данных/Введение в анализ данных/2017-2018 | Введение в анализ данных (курс майнора)]]&lt;br /&gt;
&lt;br /&gt;
[[Прикладные задачи анализа данных (майнор - весна 2018)]]&lt;br /&gt;
&lt;br /&gt;
[[Маго-лего &amp;quot;Линейная алгебра в приложениях&amp;quot; весна 2018 | Линейная алгебра в приложениях (маго-лего)]]&lt;br /&gt;
&lt;br /&gt;
[[Функциональный анализ 2017/18 | Функциональный анализ на ПМИ (факультатив)]]&lt;br /&gt;
&lt;br /&gt;
[[Дополнительные главы теории вероятностей и математической статистики (факультативы) | Дополнительные главы теории вероятностей и математической статистики (факультативы)]]&lt;br /&gt;
&lt;br /&gt;
[[Дополнительные главы дискретной математики 2017/18 | Дополнительные главы дискретной математики (факультатив)]]&lt;br /&gt;
&lt;br /&gt;
[[Цифровые технологии в гуманитарных науках]]&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Курсы в рамках проекта [https://www.hse.ru/dataculture/ Data Culture]==&lt;br /&gt;
&lt;br /&gt;
=== 2 семестр ===&lt;br /&gt;
&lt;br /&gt;
[[Цифровая_грамотность_2018_(2_семестр)|Цифровая грамотность (факультет гуманитарных наук — 2 семестр: ИЯМК, Филология, История искусств, Культурология, 1 курс)]]&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Научно-исследовательский семинар (ФСН) |Научно-исследовательский семинар (ОП &amp;quot;Политология&amp;quot;, 1 курс)]]&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Introduction_to_Data_Culture|Introduction to Data Culture (HSE and University of London Parallel Degree Programme in International Relations, 1 year)]]&amp;lt;br /&amp;gt;&lt;br /&gt;
[[ИИ_и_БД|Искусственный интеллект и большие данные (ОП &amp;quot;Дизайн&amp;quot;, &amp;quot;Мода&amp;quot;, 1 курс)]]&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Программирование_(python)_для_лингвистов|Компьютерная лингвистика и информационные технологии (ОП &amp;quot;Фундаментальная и компьютерная лингвистика&amp;quot;, 4 курс, 2 семестр)]]&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Основы анализа данных в международных отношениях|Основы анализа данных в международных отношениях (ОП &amp;quot;Международные отношения&amp;quot;, 2 курс, 4 модуль)]]&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Введение в data science (2_семестр)|Профориентационный семинар (блок по введению в data scicence) (Факультет социальных наук — 2 семестр: Социология, 1 курс)]]&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Введение в Data Science| Введение в Data Science (ФБиМ, 4 модуль)]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1 семестр ===&lt;br /&gt;
&lt;br /&gt;
[[Цифровая_грамотность|Цифровая грамотность (факультет гуманитарных наук — 1 семестр: История, Философия, 1 курс)]]&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Машинное обучение (факультет экономических наук)|Машинное обучение (факультет экономических наук)]] &amp;lt;br /&amp;gt;&lt;br /&gt;
[[Программирование (python) для лингвистов | Программирование (python) для лингвистов (факультет гуманитарных наук)]]&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Извлечение и анализ интернет-данных | Извлечение и анализ интернет-данных (факультет экономических наук)]]&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Анализ больших данных в социальных науках (ФСН, 2017) | Анализ больших данных в социальных науках (ФСН, 2017)]]&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Информационные_технологии_в_деятельности_юриста|Информационные технологии в деятельности юриста (Факультет права)]] &amp;lt;br /&amp;gt;&lt;br /&gt;
[[Машинное_обучение_для_лингвистов|Машинное обучение (магистратура Школы лингвистики)]] &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Курсы магистратуры Финансовые технологии и анализ данных ==&lt;br /&gt;
&lt;br /&gt;
[[Вероятностные_модели_и_прикладная_статистика_в_финансовой_математике|Вероятностные модели и прикладная статистика в финансовой математике]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Рекомендательные системы и поиск закономерностей в данных|Рекомендательные системы и поиск закономерностей в данных]]&lt;br /&gt;
&lt;br /&gt;
== Курсы за 2016/17 учебный год ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! 1 курс !! 2 курс !! 3-4 курс !! майноры&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
[[Математический анализ на ПМИ_2016/2017 | Математический анализ на ПМИ (пилотный поток)]]&lt;br /&gt;
&lt;br /&gt;
[[Линейная алгебра и геометрия_2016/2017 | Линейная алгебра и геометрия на ПМИ]]&lt;br /&gt;
&lt;br /&gt;
[[Дискретная_математика_1_2016/2017 | Дискретная математика-1 на ПМИ]]&lt;br /&gt;
&lt;br /&gt;
[[Основы и методология программирования_2016/2017_пилотный_поток | Основы и методология программирования на ПМИ (пилотный поток)]]&lt;br /&gt;
&lt;br /&gt;
[[Основы и методология программирования_2016/2017 | Основы и методология программирования на ПМИ (основной поток)]]&lt;br /&gt;
&lt;br /&gt;
[[Алгоритмы_и_структуры_данных_на_ПМИ_(пилотный_поток) | Алгоритмы и структуры данных на ПМИ (пилотный поток)]]&lt;br /&gt;
&lt;br /&gt;
[[Алгоритмы_и_структуры_данных_на_ПМИ_(основной_поток) | Алгоритмы и структуры данных на ПМИ (основной поток)]]&lt;br /&gt;
&lt;br /&gt;
[[Алгебра_на_ПМИ_2016/2017 | Алгебра на ПМИ]]&lt;br /&gt;
&lt;br /&gt;
[http://hsealgebra17.wikidot.com/ Алгебра на ПИ]&lt;br /&gt;
&lt;br /&gt;
|| &lt;br /&gt;
&lt;br /&gt;
[[Математический анализ_2016/2017 | Математический анализ-3 на ПМИ (основной поток)]]&lt;br /&gt;
&lt;br /&gt;
[[Математически_анализ_3_на_ПМИ_(пилотный_поток) | Математический анализ-3 на ПМИ (пилотный поток)]]&lt;br /&gt;
&lt;br /&gt;
[[DM_2_2016_2017 | Дискретная математика-2 на ПМИ (основной поток)]]&lt;br /&gt;
&lt;br /&gt;
[[Дискретная математика_2_2016/2017 | Дискретная математика-2 на ПМИ (пилотный поток)]]&lt;br /&gt;
&lt;br /&gt;
[[Алгоритмы и структуры данных_2_2016/2017 | Алгоритмы и структуры данных – 2 на ПМИ (основной поток)]]&lt;br /&gt;
&lt;br /&gt;
[[Теория вероятностей_2016/2017 | Теория вероятностей на ПМИ (основной поток)]]&lt;br /&gt;
&lt;br /&gt;
[[Теория_вероятностей_2016/2017_(пилотный_поток) | Теория вероятностей на ПМИ (пилотный поток)]]&lt;br /&gt;
&lt;br /&gt;
[[Архитектура_компьютеров_и_операционные_системы_2016/2017 | Архитектура компьютеров и операционные системы]]&lt;br /&gt;
&lt;br /&gt;
[[Факультатив_теория_вычислений_2016/2017 | Факультатив теория вычислений на ПМИ]]&lt;br /&gt;
&lt;br /&gt;
[[Дополнительные_главы_теории_вероятностей_(факультатив,_2017) | Дополнительные главы теории вероятностей (факультатив)]]&lt;br /&gt;
&lt;br /&gt;
[[Дифференциальные_уравнения_(2_курс,_2016/2017) | Дифференциальные уравнения]]&lt;br /&gt;
&lt;br /&gt;
[[Математическая_статистика_2016/2017_(пилотный_поток) | Математическая статистика на ПМИ (пилотный поток)]]&lt;br /&gt;
&lt;br /&gt;
[[Архитектура_компьютеров_и_операционные_системы_2016/2017 | Архитектура компьютеров и операционные системы ]]&lt;br /&gt;
&lt;br /&gt;
|| &lt;br /&gt;
&lt;br /&gt;
[[НИС_Машинное_обучение_и_приложения_2016/2017 | НИС Машинное обучение и приложения на ПМИ]]&lt;br /&gt;
&lt;br /&gt;
[[Машинное_обучение_1/2016_2017 | Машинное обучение 1 на ПМИ]]&lt;br /&gt;
&lt;br /&gt;
[[Машинное_обучение_2/2016_2017 | Машинное обучение 2 на ПМИ]]&lt;br /&gt;
&lt;br /&gt;
[[Прикладной_статистический_анализ_данных | Прикладной статистический анализ данных на ПМИ]]&lt;br /&gt;
&lt;br /&gt;
[[Численные_методы_в_анализе_данных | Численные методы в анализе данных на ПМИ]]&lt;br /&gt;
&lt;br /&gt;
[http://www.machinelearning.ru/wiki/index.php?title=Статистика_случайных_процессов_(курс_лекций,_ФКН_ВШЭ) Вероятностные модели и статистика случайных процессов на ПМИ]&lt;br /&gt;
&lt;br /&gt;
[http://www.machinelearning.ru/wiki/index.php?title=Opt Методы оптимизации на ПМИ (специализации МОП и РС)]&lt;br /&gt;
&lt;br /&gt;
[[Методы_оптимизации_(весна_2017)|Методы оптимизации 2 (дискретная оптимизация)]]&lt;br /&gt;
&lt;br /&gt;
[[НИС_Распределенные_системы_(осень_2016) | НИС Распределенные системы]]&lt;br /&gt;
&lt;br /&gt;
[[Анализ и верификация алгоритмов биржевой торговли | Анализ и верификация алгоритмов для систем биржевой торговли ]]&lt;br /&gt;
&lt;br /&gt;
[[Программирование_на_графических_процессорах | Программирование на графических процессорах]]&lt;br /&gt;
&lt;br /&gt;
[[ЯРПО | Языки разработки ПО (курс по выбору) на ПМИ]]&lt;br /&gt;
&lt;br /&gt;
[[Data analysis (Software Engineering) 2017 | Data analysis  на ПИ]]&lt;br /&gt;
&lt;br /&gt;
[[Базы данных 2 | Базы данных 2 ]]&lt;br /&gt;
&lt;br /&gt;
[[Компьютерные сети 2 | Компьютерные сети 2]]&lt;br /&gt;
&lt;br /&gt;
[[Машинное_обучение_на_больших_данных | Машинное обучение на больших данных на ПМИ]]&lt;br /&gt;
&lt;br /&gt;
||&lt;br /&gt;
&lt;br /&gt;
[[Современные_методы_машинного_обучения_(курс_майнора) | Современные методы машинного обучения (курс майнора)]]&lt;br /&gt;
&lt;br /&gt;
[[Майнор_Интеллектуальный_анализ_данных/Введение_в_программирование_2016/2017 | Введение в программирование (курс майнора)]]&lt;br /&gt;
&lt;br /&gt;
[[Майнор Интеллектуальный анализ данных/Введение в анализ данных/2016-2017 | Введение в анализ данных (курс майнора)]]&lt;br /&gt;
&lt;br /&gt;
[[Майнор Интеллектуальный анализ данных/Прикладные задачи анализа данных| Прикладные задачи анализа данных (курс майнора)]]&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|width=100%&lt;br /&gt;
|style=&amp;quot;vertical-align:top;&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Первая колонка --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Курсы за 2015/16 учебный год ===&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| [[Технологии программирования|Технологии программирования на ПМИ]]&lt;br /&gt;
|-&lt;br /&gt;
|[[ОиМП-2015|Основы и методология программирования на ПМИ]]&lt;br /&gt;
|-&lt;br /&gt;
|[[Алгоритмы и структуры данных 2016]]&lt;br /&gt;
|-&lt;br /&gt;
|[[Линейная алгебра и геометрия_2015/2016 | Линейная алгебра и геометрия на ПМИ]]&lt;br /&gt;
|-&lt;br /&gt;
|[[Алгебра_2015/2016 | Алгебра на ПМИ]]&lt;br /&gt;
|-&lt;br /&gt;
|[http://hsealgebra.wikidot.com/ Алгебра на ПИ]&lt;br /&gt;
|-&lt;br /&gt;
|[[Компьютерные системы]]&lt;br /&gt;
|-&lt;br /&gt;
|[[Математический анализ на ПМИ_2015/2016 | Математический анализ на ПМИ]]&lt;br /&gt;
|-&lt;br /&gt;
|[[Факультатив_Матпрактикум | Матпрактикум (факультатив) на ПМИ]]&lt;br /&gt;
|-&lt;br /&gt;
|[[Data analysis (Software Engineering)]]&amp;lt;br /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[Майнор Интеллектуальный анализ данных/Введение в программирование|Введение в программирование (курс майнора) на ПМИ]]&lt;br /&gt;
|-&lt;br /&gt;
|[[Майнор Интеллектуальный анализ данных/Введение в анализ данных/2015-2016|Введение в анализ данных (курс майнора) на ПМИ]]&lt;br /&gt;
|-&lt;br /&gt;
|[[НИС Машинное обучение и приложения|НИС Машинное обучение и приложения на ПМИ]]&lt;br /&gt;
|-&lt;br /&gt;
|[[Архитектура компьютеров и системное программирование (ПМИ_4, 2015/2016)|Архитектура компьютеров и системное программирование (4 курс)]]&lt;br /&gt;
|-&lt;br /&gt;
|[[Дифференциальные уравнения (2 курс, 2015/2016)| Дифференциальные уравнения]]&lt;br /&gt;
|-&lt;br /&gt;
|[[Введение в VBA|Введение в VBA]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|style=&amp;quot;vertical-align:top;&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Вторая колонка --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Курсы за 2014/15 учебный год ===&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|[[Основы и методологии программирования]]&amp;lt;br /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[Алгоритмы и структуры данных 2015 | Алгоритмы и структуры данных]]&amp;lt;br /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[Анализ данных (Программная инженерия)]]&amp;lt;br /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[Алгебра_2014/2015 | Алгебра]]&amp;lt;br /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[Magolego_sna_2015| MAGoLEGO Social Network Analysis]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Проектная работа ====&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|[[Проектная работа]] &amp;lt;br /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[Учебная практика 1 курс (2016)]]&lt;br /&gt;
|-&lt;br /&gt;
|[[Проектная работа 2 курс (2016)]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Завершение двухколоночной таблицы --&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Мероприятия факультета компьютерных наук ==&lt;br /&gt;
=== Summer School 2015 ===&lt;br /&gt;
[[Introduction to Natural Language Processing|Introduction to Natural Language Processing]]&lt;br /&gt;
#[[Lecture 1. Introduction|Introduction]]&lt;br /&gt;
#[[Lecture 2. Tokenization and word counts|Tokenization and word counts]]&lt;br /&gt;
#[[Lecture 3. POS tagging. Key word and phrase extraction|POS tagging. Key word and phrase extraction]]&lt;br /&gt;
#[[Lecture 4. Parsing|Parsing]]&lt;br /&gt;
#[[Lecture 5. Language sources|Language sources]]&lt;br /&gt;
#[[Lecture 6. Synonyms and near-synonyms detection|Synonyms and near-synonyms detection]]&lt;br /&gt;
#[[Lecture 8. Suffix trees for NLP|Suffix trees for NLP]]&lt;br /&gt;
#[[NLP References|References]]&lt;br /&gt;
&lt;br /&gt;
== Архив ==&lt;br /&gt;
* [[Учебная практика 1 курс (2015)]]&lt;/div&gt;</summary>
		<author><name>Sandello</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=%D0%9D%D0%98%D0%A1_%D0%A0%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_(4_%D0%BA%D1%83%D1%80%D1%81,_2018)&amp;diff=32087</id>
		<title>НИС Распределенные системы (4 курс, 2018)</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=%D0%9D%D0%98%D0%A1_%D0%A0%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_(4_%D0%BA%D1%83%D1%80%D1%81,_2018)&amp;diff=32087"/>
		<updated>2019-01-30T10:54:21Z</updated>

		<summary type="html">&lt;p&gt;Sandello: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Информация про семинар ==&lt;br /&gt;
В рамках научно-исследовательского семинара по распределенным системам изучаются основные понятия, принципы и результаты предметной области. &lt;br /&gt;
&lt;br /&gt;
Контакты: [mailto:sandello@gmail.com Пузыревский Иван Витальевич]&lt;br /&gt;
&lt;br /&gt;
Список тем курсовых работ: TBA&lt;br /&gt;
&lt;br /&gt;
=== Оценка ===&lt;br /&gt;
&lt;br /&gt;
1 модуль -- по докладам (опционально) + практическое задание 1&lt;br /&gt;
2 модуль -- практическое задание 2&lt;br /&gt;
3 модуль -- по докладам (обязательно) + предзащита&lt;br /&gt;
&lt;br /&gt;
Текущая таблица с оценками и ведомостью: https://docs.google.com/spreadsheets/d/1zvAqjpLXExVKFC5dHbnvWVJLNseUYKXKu5e0wSrvwUQ/edit?usp=sharing&lt;br /&gt;
&lt;br /&gt;
== Доклад ==&lt;br /&gt;
&lt;br /&gt;
Требуется выступить с докладом о научной статье, связанной с распределенными системами. В докладе надо надо изложить постановку задачи, предлагаемые авторами статьи подходы к ее решению, полученные результаты и их краткий анализ. Можно выбрать статью из списка ниже или предложить свою статью, например связанную с темой курсовой.&lt;br /&gt;
&lt;br /&gt;
Продолжительность доклада ограничена 20 минутами. После доклада отводится 5 минут на вопросы слушателей. На одном занятии проводится до 3 докладов.&lt;br /&gt;
&lt;br /&gt;
Расписание докладов доступно в таблице по ссылке: https://docs.google.com/spreadsheets/d/1zvAqjpLXExVKFC5dHbnvWVJLNseUYKXKu5e0wSrvwUQ/edit?usp=sharing. Студентам предлагается самостоятельно выбрать тему и дату выступления. В случае, если за неделю до занятия есть свободные слоты в расписании, они заполняются случайно выбранными студентами из числа тех, кто еще не делал доклад или не выбрал дату выступления. У таких студентов есть сутки, чтобы выбрать и согласовать тему доклада, в противном случае ее выбирает преподаватель.&lt;br /&gt;
&lt;br /&gt;
=== Список статей для докладов&lt;br /&gt;
&lt;br /&gt;
1. Ghemawat S., Gobioff H., Leung S.T. The Google File System // ACM Symposium on Operating Systems Principles (SOSP), 2003.&lt;br /&gt;
2. Dean J., Ghemawat S. MapReduce: simplified data processing on large clusters // USENIX Symposium on Operating System Design and Implementation (OSDI), 2004.&lt;br /&gt;
3. Hayashibara N. et al. The φ accrual failure detector // Japan Advanced Institute of Science and Technology, School of Information Science, Technical Report IS-RR-2004-010, 2004.&lt;br /&gt;
4. Van Renesse R., Schneider F. B. Chain Replication for Supporting High Throughput and Availability // USENIX Symposium on Operating System Design and Implementation (OSDI), 2004.&lt;br /&gt;
5. Lamport L. Fast paxos //Distributed Computing. – 2006. – Т. 19. – №. 2. – С. 79-103.&lt;br /&gt;
6. Chang F. et al. Bigtable: A distributed storage system for structured data // USENIX Symposium on Operating System Design and Implementation (OSDI), 2006.&lt;br /&gt;
7. Mazieres D. Paxos made practical. Technical Report, Stanford University, 2007.&lt;br /&gt;
8. Chandra T. D., Griesemer R., Redstone J. Paxos made live: an engineering perspective //Proceedings of the twenty-sixth annual ACM symposium on Principles of distributed computing. – ACM, 2007. – С. 398-407.&lt;br /&gt;
9. Isard M. et al. Dryad: distributed data-parallel programs from sequential building blocks //ACM SIGOPS operating systems review. – ACM, 2007. – Т. 41. – №. 3. – С. 59-72.&lt;br /&gt;
10. DeCandia G. et al. Dynamo: Amazon&#039;s highly available key-value store // ACM Symposium on Operating Systems Principles (SOSP), 2007.&lt;br /&gt;
11. Cooper B. F. et al. PNUTS: Yahoo!&#039;s hosted data serving platform // International Conference on Very Large Data Bases (VLDB), 2008.&lt;br /&gt;
12. Isard M. et al. Quincy: fair scheduling for distributed computing clusters //Proceedings of the ACM SIGOPS 22nd symposium on Operating systems principles. – ACM, 2009. – С. 261-276.&lt;br /&gt;
13. Van Renesse R., Minsky Y., Hayden M. A gossip-style failure detection service //Proceedings of the IFIP International Conference on Distributed Systems Platforms and Open Distributed Processing. – Springer-Verlag, 2009. – С. 55-70.&lt;br /&gt;
14. Helland P., Campbell D. Building on quicksand // Conference on Innovative Data Systems Research (CIDR), January 2009.&lt;br /&gt;
15. Malewicz G. et al. Pregel: a system for large-scale graph processing // ACM International Conference on Management of Data (SIGMOD), 2010.&lt;br /&gt;
16. Hunt P. et al. ZooKeeper: Wait-free Coordination for Internet-scale Systems //USENIX annual technical conference. – 2010. – Т. 8. – №. 9.&lt;br /&gt;
17. Lakshman A., Malik P. Cassandra: a decentralized structured storage system //ACM SIGOPS Operating Systems Review. – 2010. – Т. 44. – №. 2. – С. 35-40.&lt;br /&gt;
18. Anderson E. et al. What consistency does your key-value store actually provide? // HotDep, 2010.&lt;br /&gt;
19. Terry D. Replicated data consistency explained through baseball // Microsoft Research, Technical Report MSR-TR-2011-137, 2011.&lt;br /&gt;
20. Junqueira F. P., Reed B. C., Serafini M. Zab: High-performance broadcast for primary-backup systems //Dependable Systems &amp;amp; Networks (DSN), 2011 IEEE/IFIP 41st International Conference on. – IEEE, 2011. – С. 245-256.&lt;br /&gt;
21. Shapiro M. et al. Conflict-free replicated data types // Symposium on Self-Stabilizing Systems, 2011.&lt;br /&gt;
22. Rao J., Shekita E. J., Tata S. Using paxos to build a scalable, consistent, and highly available datastore //Proceedings of the VLDB Endowment. – 2011. – Т. 4. – №. 4. – С. 243-254.&lt;br /&gt;
23. Calder B. et al. Windows Azure Storage: a highly available cloud storage service with strong consistency // ACM Symposium on Operating Systems Principles (SOSP), 2011.&lt;br /&gt;
24. Leners J. B. et al. Detecting failures in distributed systems with the falcon spy network //Proceedings of the Twenty-Third ACM Symposium on Operating Systems Principles. – ACM, 2011. – С. 279-294.&lt;br /&gt;
25. Corbett J. C. et al. Spanner: Google’s globally distributed database // USENIX Symposium on Operating System Design and Implementation (OSDI), 2012.&lt;br /&gt;
26. Liskov B., Cowling J. Viewstamped replication revisited. Massachusetts Institute of Technology, Tech Report MIT-CSAIL-TR-2012-021, 2012.&lt;br /&gt;
27. Bronson N. et al. TAO: Facebook&#039;s Distributed Data Store for the Social Graph // USENIX Annual Technical Conference, 2013.&lt;br /&gt;
28. Murray D. G. et al. Naiad: a timely dataflow system // Proceedings of the Twenty-Fourth ACM Symposium on Operating Systems Principles. – ACM, 2013. – С. 439-455.&lt;br /&gt;
29. Schwarzkopf M. et al. Omega: flexible, scalable schedulers for large compute clusters //Proceedings of the 8th ACM European Conference on Computer Systems. – ACM, 2013. – С. 351-364.&lt;br /&gt;
30. Ongaro D., Ousterhout J. K. In search of an understandable consensus algorithm // USENIX Annual Technical Conference, 2014.&lt;br /&gt;
31. Bernstein P. A. et al. Orleans: Distributed virtual actors for programmability and scalability // Microsoft Research Technical Report MSR-TR-2014-41, 2014.&lt;br /&gt;
32. Verma A. et al. Large-scale cluster management at Google with Borg // European Conference on Computer Systems (EuroSys), 2015.&lt;br /&gt;
33. Lu H. et al. Existential consistency: measuring and understanding consistency at Facebook // ACM Symposium on Operating Systems Principles (SOSP), 2015.&lt;br /&gt;
34. Howard H. et al. Raft refloated: do we have consensus? // ACM SIGOPS Operating Systems Review. – 2015. – Т. 49. – №. 1. – С. 12-21.&lt;br /&gt;
35. Van Renesse R., Altinbuken D. Paxos made moderately complex //ACM Computing Surveys (CSUR). – 2015. – Т. 47. – №. 3. – С. 42.&lt;br /&gt;
36. Burckhardt S. et al. Global sequence protocol: A robust abstraction for replicated shared state // LIPIcs-Leibniz International Proceedings in Informatics. – Schloss Dagstuhl-Leibniz-Zentrum fuer Informatik, 2015. – Т. 37.&lt;/div&gt;</summary>
		<author><name>Sandello</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=%D0%9D%D0%98%D0%A1_%D0%A0%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_(4_%D0%BA%D1%83%D1%80%D1%81,_2018)&amp;diff=29247</id>
		<title>НИС Распределенные системы (4 курс, 2018)</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=%D0%9D%D0%98%D0%A1_%D0%A0%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_(4_%D0%BA%D1%83%D1%80%D1%81,_2018)&amp;diff=29247"/>
		<updated>2018-09-19T17:36:52Z</updated>

		<summary type="html">&lt;p&gt;Sandello: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Информация про семинар ==&lt;br /&gt;
В рамках научно-исследовательского семинара по распределенным системам изучаются основные понятия, принципы и результаты предметной области. &lt;br /&gt;
&lt;br /&gt;
Контакты: [mailto:sandello@gmail.com Пузыревский Иван Витальевич]&lt;br /&gt;
&lt;br /&gt;
Список тем курсовых работ: TBA&lt;br /&gt;
&lt;br /&gt;
=== Оценка ===&lt;br /&gt;
&lt;br /&gt;
1 модуль -- по докладам (опционально) + практическое задание 1&lt;br /&gt;
2 модуль -- практическое задание 2&lt;br /&gt;
3 модуль -- по докладам (обязательно) + предзащита&lt;br /&gt;
&lt;br /&gt;
Текущая таблица с оценками и ведомостью: https://docs.google.com/spreadsheets/d/1zvAqjpLXExVKFC5dHbnvWVJLNseUYKXKu5e0wSrvwUQ/edit?usp=sharing&lt;br /&gt;
&lt;br /&gt;
== Занятия ==&lt;br /&gt;
&lt;br /&gt;
Расписание:&lt;br /&gt;
* --12 сентября, 1 пара--&lt;br /&gt;
* 27 сентября, 1 пара&lt;br /&gt;
* 27 сентября, 5 пара?&lt;br /&gt;
* по расписанию&lt;br /&gt;
&lt;br /&gt;
Долги:&lt;br /&gt;
* вместо 13 сентября&lt;br /&gt;
* перенос с 20-го сентября&lt;/div&gt;</summary>
		<author><name>Sandello</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=%D0%9D%D0%98%D0%A1_%D0%A0%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_(4_%D0%BA%D1%83%D1%80%D1%81,_2018)&amp;diff=29246</id>
		<title>НИС Распределенные системы (4 курс, 2018)</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=%D0%9D%D0%98%D0%A1_%D0%A0%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_(4_%D0%BA%D1%83%D1%80%D1%81,_2018)&amp;diff=29246"/>
		<updated>2018-09-19T17:36:08Z</updated>

		<summary type="html">&lt;p&gt;Sandello: Новая страница: «== Информация про семинар == В рамках научно-исследовательского семинара по распределенн…»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Информация про семинар ==&lt;br /&gt;
В рамках научно-исследовательского семинара по распределенным системам изучаются основные понятия, принципы и результаты предметной области. &lt;br /&gt;
&lt;br /&gt;
Контакты: [mailto:sandello@gmail.com Пузыревский Иван Витальевич]&lt;br /&gt;
&lt;br /&gt;
Список тем курсовых работ: TBA&lt;br /&gt;
&lt;br /&gt;
=== Оценка ===&lt;br /&gt;
&lt;br /&gt;
TBA&lt;br /&gt;
&lt;br /&gt;
Текущая таблица с оценками и ведомостью: https://docs.google.com/spreadsheets/d/1zvAqjpLXExVKFC5dHbnvWVJLNseUYKXKu5e0wSrvwUQ/edit?usp=sharing&lt;br /&gt;
&lt;br /&gt;
== Занятия ==&lt;br /&gt;
&lt;br /&gt;
Расписание:&lt;br /&gt;
* --12 сентября, 1 пара--&lt;br /&gt;
* 27 сентября, 1 пара&lt;br /&gt;
* 27 сентября, 5 пара?&lt;br /&gt;
* по расписанию&lt;br /&gt;
&lt;br /&gt;
Долги:&lt;br /&gt;
* вместо 13 сентября&lt;br /&gt;
* перенос с 20-го сентября&lt;/div&gt;</summary>
		<author><name>Sandello</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=%D0%9D%D0%98%D0%A1_%D0%A0%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_(3_%D0%BA%D1%83%D1%80%D1%81,_2017)&amp;diff=28182</id>
		<title>НИС Распределенные системы (3 курс, 2017)</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=%D0%9D%D0%98%D0%A1_%D0%A0%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_(3_%D0%BA%D1%83%D1%80%D1%81,_2017)&amp;diff=28182"/>
		<updated>2018-06-15T19:49:03Z</updated>

		<summary type="html">&lt;p&gt;Sandello: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Информация про семинар ==&lt;br /&gt;
В рамках научно-исследовательского семинара по распределенным системам изучаются основные понятия, принципы и результаты предметной области. &lt;br /&gt;
&lt;br /&gt;
Контакты: [mailto:sandello@gmail.com Пузыревский Иван Витальевич]&lt;br /&gt;
&lt;br /&gt;
Список тем курсовых работ: http://wiki.cs.hse.ru/Темы_для_курсовых_работ_2017_(РС)&lt;br /&gt;
&lt;br /&gt;
=== Оценка ===&lt;br /&gt;
&lt;br /&gt;
* Проверочная работа 1 &amp;lt;= 4 баллов&lt;br /&gt;
* Задание 1 &amp;lt;= 3 баллов&lt;br /&gt;
* Задание 4 &amp;lt;= 4 баллов&lt;br /&gt;
* Рецензирование статьи &amp;lt;= 3 баллов&lt;br /&gt;
&lt;br /&gt;
Текущая таблица с оценками и ведомостью: https://docs.google.com/spreadsheets/d/16Z74fhT_TnNscsVviU9KU2mVlaMrmX3weQ6ku5jGGbk/edit?usp=sharing&lt;br /&gt;
&lt;br /&gt;
== Занятия ==&lt;br /&gt;
&lt;br /&gt;
=== 1 модуль ===&lt;br /&gt;
&lt;br /&gt;
* Модель распределенных вычислений.&lt;br /&gt;
* Объекты-регистры, типы регистров (bool/int; safe/regular/atomic; single/multi-reader; single/multi-writer).&lt;br /&gt;
* Эквивалентность вычислительной силы SRSW Bool Safe &amp;amp; MRMW Int Atomic.&lt;br /&gt;
* Блокировки (locks). Понятия живости (liveness) и безопасности (safety). Мьютекс Лампорта.&lt;br /&gt;
&lt;br /&gt;
Литература: Herlihy, Shavit -- The Art of Multiprocessor Programming (https://www.dropbox.com/s/s8sssgp95hq5f6q/aompp.pdf?dl=0). Главы 2-4.&lt;br /&gt;
&lt;br /&gt;
=== 2 модуль ===&lt;br /&gt;
&lt;br /&gt;
* Lock-free &amp;amp; wait-free исполнения.&lt;br /&gt;
* Примитив консенсуса. Число консенсуса как характеристика примитивов синхронизации.&lt;br /&gt;
* Универальность консенсуса.&lt;br /&gt;
&lt;br /&gt;
Литература: Herlihy, Shavit -- The Art of Multiprocessor Programming (https://www.dropbox.com/s/s8sssgp95hq5f6q/aompp.pdf?dl=0). Главы 5-6.&lt;br /&gt;
&lt;br /&gt;
Работа над ошибками (всем): задачи 11-19, все; &#039;&#039;&#039;deadline: НИС неделе 15.01-21.01&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== 3 модуль ===&lt;br /&gt;
&lt;br /&gt;
Распределенные алгоритмы. Время, часы, порядок на событиях.&lt;br /&gt;
&lt;br /&gt;
Назначенные статьи для разбора на занятии:&lt;br /&gt;
* на 29.01; Богданова: &#039;&#039;Lamport&#039;&#039; -- Time, clocks and the ordering of events in a distributed system ([https://yadi.sk/i/0cE6EdG5vN5mr pdf])&lt;br /&gt;
* на 29.01; Божко: &#039;&#039;Fidge&#039;&#039; -- Timestamps in message-passing systems that preserve the partial ordering ([https://yadi.sk/i/LyhtLfOMvN64M pdf])&lt;br /&gt;
* на 05.02; Когтенков: &#039;&#039;Mills&#039;&#039; -- Internet time synchronization: the network time protocol ([https://yadi.sk/i/PdXX6TO2vN6Bw pdf])&lt;br /&gt;
&lt;br /&gt;
Литература: Garg -- Elements Of Distributed Computing.&lt;br /&gt;
&lt;br /&gt;
=== 4 модуль ===&lt;br /&gt;
&lt;br /&gt;
Назначенные статьи для разбора на занятии:&lt;br /&gt;
* на 25.05; Кутенин: &#039;&#039;Liskov, Cowling&#039;&#039; -- Viewstamped replication revisited ([https://yadi.sk/i/EO37MNowy6Cwv pdf]) + &#039;&#039;Oki, Liskov&#039;&#039; -- Viewstamped replication: a new primary copy method to support highly available distributed systems ([https://yadi.sk/i/5pVDiF7Qy6D3D pdf])&lt;br /&gt;
* на 08.06; Ренева: &#039;&#039;Ongaro, Ousterhout&#039;&#039; -- In search of understandable consensus algorithm ([https://yadi.sk/i/K5gdY2X2y6EE4 pdf]) + &#039;&#039;Ousterhout&#039;&#039; -- Raft lecture ([https://www.youtube.com/watch?v=YbZ3zDzDnrw video]; 1.0ч)&lt;br /&gt;
&lt;br /&gt;
== Задание 1 ==&lt;br /&gt;
&lt;br /&gt;
Заготовка: https://github.com/sandello/hse-queue-assignment&lt;br /&gt;
&lt;br /&gt;
Дедлайн: 23 апреля 08:00.&lt;br /&gt;
&lt;br /&gt;
Вам необходимо создать файл solution_xxx.cpp (&amp;quot;xxx&amp;quot; замените на вашу фамилию), содержащий реализацию lock-free многопоточной очереди с интерфейсом IQueue; в конце файла определить тип TheQueue. Далее, скомпилировать ваше решение можно с помощью скрипта compile.sh. Решение считается корректным, если скомпилированная программа корректно, без ошибок отрабатывает при запуске с флагом --gtest_repeat=100.&lt;br /&gt;
&lt;br /&gt;
В качестве решения можно реализовать Michael-Scott Queue или очередь с использованием универсальной конструкции из второго модуля.&lt;br /&gt;
&lt;br /&gt;
Ваше решение -- cpp-файл -- присылайте на почту sandello@gmail.com или присылайте ссылку на GH.&lt;br /&gt;
&lt;br /&gt;
== Задание 2 ==&lt;br /&gt;
&lt;br /&gt;
Заготовка: https://github.com/sandello/hse-paxos-assignment&lt;br /&gt;
&lt;br /&gt;
Дедлайн: 9 июня 08:00.&lt;br /&gt;
&lt;br /&gt;
Вам необходимо создать файл solution_xxx.py (&amp;quot;xxx&amp;quot; замените на вашу фамилию), содержащий реализацию процесса распределенного отказоустойчивого write-once key-value хранилища. Write-once значит, что каждый ключ можно записать не более, чем один раз (попытки перезаписи не приводят к изменению значения). Key-value store значит, что хранилище адресует пользовательские строковые данные по пользовательскому строковому ключу. Работа с данными по фиксированному ключу имеет семантику регулярного регистра. Распределенность и отказоустойчивость значат, что операции чтения и записи может обрабатывать любая реплика (экземпляр процесса), и остановка меньшей части реплик не останавливает процесс операций.&lt;br /&gt;
&lt;br /&gt;
В задании предполагается следующая модель разработки: ваш процесс должен наследоваться от класса Process, определенном в файле public.py. Класс Process обладает тремя абстрактными методами: setup, on_tick, on_receive. Метод setup вызывается при инициализации теста и используется для передачи вашему процессу информации об окружении: в частности, о количестве процессов. Метод on_tick вызывается, когда конкретно данному процессу дается квант времени для внутренней работы. Метод on_receive вызывается при доставке данному конкретному процессу сообщения (в качестве сообщения можно использовать любой сериализуемый в json объект). В методы on_tick и on_receive передается контекст (ctx); объект контекста реализует интерфейс Context; контекст можно использовать для получения текущего (логического) времени и для отправки сообщения какому-либо другому процессу. Контекст нельзя сохранять и переиспользовать между разными вызовами on_tick и on_receive.&lt;br /&gt;
&lt;br /&gt;
Такая модель разработки отражает теоретическую модель и позволяет эмулировать отказы и эффекты асинхронности в тестах. Не допускается порождать и использовать фоновые потоки (threads); ваш код должен быть однопоточным. Код тестов взаимодействует с вашим процессом путем отправки специальных сообщений а-ля RPC-запрос. Формат сообщения следующий: &#039;&#039;{&amp;quot;method&amp;quot;: &amp;quot;M&amp;quot;, &amp;quot;request_id&amp;quot;: N, ...}&#039;&#039;. Код тестов отправляет запросы с M=get или M=set и ожидает получить в ответ (спустя некоторое количество шагов) в ответ структуру с ответом, аннотированную request_id.&lt;br /&gt;
&lt;br /&gt;
Более точно, протокол взаимодействия следующий:&lt;br /&gt;
* {&amp;quot;method&amp;quot;: &amp;quot;get&amp;quot;, &amp;quot;request_id&amp;quot;: N, &amp;quot;key&amp;quot;: &amp;quot;K&amp;quot;} -&amp;gt; {&amp;quot;request_id&amp;quot;: N, &amp;quot;value&amp;quot;: &amp;quot;V&amp;quot;} ; запрос на чтение данных по ключу K (строка); в ответ ожидается значение V (строка).&lt;br /&gt;
* {&amp;quot;method&amp;quot;: &amp;quot;set&amp;quot;, &amp;quot;request_id&amp;quot;: N, &amp;quot;key&amp;quot;: &amp;quot;K&amp;quot;, &amp;quot;value&amp;quot;: &amp;quot;V&amp;quot;} -&amp;gt; {&amp;quot;request_id&amp;quot;: N, &amp;quot;value&amp;quot;: &amp;quot;W&amp;quot;, &amp;quot;flag&amp;quot;: &amp;quot;F&amp;quot;} ; запрос на запись данных V (строка) по ключу K (строка); в ответ приходит флаг-индикатор F исхода операции; если флаг истинен, то операция закончилась успешно, и в ячейку по ключу K было действительно сохранено значение V, и в таком случае возвращаемое значение W совпадает с V; если флаг ложен, то по каким-либо причинам операция записи закончилась неуспешно (заполненность ячейки / конкуренция при записи), и возвращается фактическое значение в ячейке W.&lt;br /&gt;
* в тестах чтение ключа K всегда идет строго после какой-либо успешной записи по ключу K.&lt;br /&gt;
&lt;br /&gt;
Для запуска тестов используйте скрипт main.py. Ему необходимо передать путь до вашего класса в формате &amp;quot;МОДУЛЬ.КЛАСС&amp;quot;. К примеру, main.py -i solution_puzyrevskiy_example.GlobalKeyValueStoreProcess. Для отладки передайте ключ -v. &lt;br /&gt;
&lt;br /&gt;
Набор тестов скоро пополнится стресс-тестом. Если вы придумаете хороший, полезный тест, то присылайте PR.&lt;br /&gt;
&lt;br /&gt;
Ваше решение -- py-файл и имя класса -- присылайте на почту sandello@gmail.com или присылайте ссылку на GH.&lt;br /&gt;
&lt;br /&gt;
== Задание 3 ==&lt;br /&gt;
&lt;br /&gt;
Ваша задача -- написать краткий обзор и рецензию научной статьи.&lt;br /&gt;
&lt;br /&gt;
Дедлайн: 21 июня 19:00.&lt;br /&gt;
&lt;br /&gt;
Что такое рецензия: это текст на 1-2 страницы, резюмирующий основные результаты работы, их отличительные характеристики и важные идеи. Если в статье описывается некоторая система -- то в рецензии стоит кратко определить (без воды) решаемую задачу, архитектуру системы, интерфейсы, протоколы. Если в статье описывается алгоритм -- важные технические характеристики (время работы, память, количество сообщений, и т. д.) и ключевые идеи. Если в статье описывается исследование -- то предмет исследования, методологию и выводы из исследования. Также, чтобы рецензия не была простым пересказом, вам &#039;&#039;&#039;обязательно&#039;&#039;&#039; в конце рецензии необходимо добавить собственный оценочный блок:&lt;br /&gt;
* &#039;&#039;&#039;как минимум&#039;&#039;&#039; три комментария по упомянутым в статье требованиям (условиям окружения, ограничениям на класс решений, предпосылкам, желаемым гарантиям системы, etc); каждый комментарий -- это цитата автора, определяющая требования + аргументация, почему требование неактуально / ослаблено / невыполнимо в других условиях. К примеру: &amp;quot;в работе авторы пишут: &amp;quot;так как мы планируем запускать протокол поверх SMS-сообщений, то ограничим длину каждого сообщения протокола 80 символами&amp;quot;; -&amp;gt; в настоящий момент меньше приложений используют SMS, предпочитая месседжеры&amp;quot;.&lt;br /&gt;
* &#039;&#039;&#039;как минимум&#039;&#039;&#039; три комментария по принятым авторами дизайн-решениям в вопросах, допускающих альтернативные решения; каждый комментарий -- это краткая суть решаемой проблемы + описание принятого решения. К примеру: &amp;quot;авторы работы для валидации целостности контента сообщения используют чексумму, и дополнительно указывают отправителя в заголовке для аутентификации; возможно, более надежно было бы рассмотреть использование HMAC как альтернативы для одновременного контроля целостности и аутентификации&amp;quot;.&lt;br /&gt;
Цель данного задания -- научиться видеть требования и граничные условия, во многом обуславливающие принимаемые авторами работы решения, а также уметь генерировать альтернативные варианты решения задач. За каждый валидный комментарий (в смысле определения выше) начисляется 0.5 балла. Итого за задание можно получить 3 балла.&lt;br /&gt;
&lt;br /&gt;
Список доступных работ для рецензирования:&lt;br /&gt;
* [https://yadi.sk/i/KeJ-HuVM3XwT9D Astrolabe]&lt;br /&gt;
* [https://yadi.sk/i/RFFb68Dz3XwTB3 Bayou]&lt;br /&gt;
* [https://yadi.sk/i/sJwGSkOB3XwTCY Chord]&lt;br /&gt;
* [https://yadi.sk/i/ehIIf-YH3XwTDH Dapper]&lt;br /&gt;
* [https://yadi.sk/i/986hw3is3XwTEE DNS]&lt;br /&gt;
* [https://yadi.sk/i/PWRPtcgW3XwTEi Kademlia]&lt;br /&gt;
* [https://yadi.sk/i/1KHUCZD03XwTFw Swim]&lt;br /&gt;
* можно предложить свою работу, предварительно её согласовав.&lt;br /&gt;
&lt;br /&gt;
Регламент сдачи:&lt;br /&gt;
1. В [https://docs.google.com/spreadsheets/d/1Jb3IudYuWIe0FPE5i1T_5dKprUQoepRQ0WWyBcmug9A/edit?usp=sharing таблице] вписать свою фамилию в свободный слот. Каждую работу может рецензировать не более двух студентов.&lt;br /&gt;
2. Написать в Google Documents рецензию.&lt;br /&gt;
3. Прислать на sandello@gmail.com share-ссылку на документ с правами &amp;quot;Can Comment&amp;quot;. В теме письма укажите номер группы и фамилию.&lt;/div&gt;</summary>
		<author><name>Sandello</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=%D0%9D%D0%98%D0%A1_%D0%A0%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_(3_%D0%BA%D1%83%D1%80%D1%81,_2017)&amp;diff=27965</id>
		<title>НИС Распределенные системы (3 курс, 2017)</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=%D0%9D%D0%98%D0%A1_%D0%A0%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_(3_%D0%BA%D1%83%D1%80%D1%81,_2017)&amp;diff=27965"/>
		<updated>2018-05-25T12:14:20Z</updated>

		<summary type="html">&lt;p&gt;Sandello: /* 4 модуль */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Информация про семинар ==&lt;br /&gt;
В рамках научно-исследовательского семинара по распределенным системам изучаются основные понятия, принципы и результаты предметной области. &lt;br /&gt;
&lt;br /&gt;
Контакты: [mailto:sandello@gmail.com Пузыревский Иван Витальевич]&lt;br /&gt;
&lt;br /&gt;
Список тем курсовых работ: http://wiki.cs.hse.ru/Темы_для_курсовых_работ_2017_(РС)&lt;br /&gt;
&lt;br /&gt;
=== Оценка ===&lt;br /&gt;
&lt;br /&gt;
* Проверочная работа 1 &amp;lt;= 4 баллов&lt;br /&gt;
* Задание 1 &amp;lt;= 3 баллов&lt;br /&gt;
* Задание 4 &amp;lt;= 4 баллов&lt;br /&gt;
* Рецензирование статьи &amp;lt;= 3 баллов&lt;br /&gt;
&lt;br /&gt;
Текущая таблица с оценками и ведомостью: https://docs.google.com/spreadsheets/d/16Z74fhT_TnNscsVviU9KU2mVlaMrmX3weQ6ku5jGGbk/edit?usp=sharing&lt;br /&gt;
&lt;br /&gt;
== Занятия ==&lt;br /&gt;
&lt;br /&gt;
=== 1 модуль ===&lt;br /&gt;
&lt;br /&gt;
* Модель распределенных вычислений.&lt;br /&gt;
* Объекты-регистры, типы регистров (bool/int; safe/regular/atomic; single/multi-reader; single/multi-writer).&lt;br /&gt;
* Эквивалентность вычислительной силы SRSW Bool Safe &amp;amp; MRMW Int Atomic.&lt;br /&gt;
* Блокировки (locks). Понятия живости (liveness) и безопасности (safety). Мьютекс Лампорта.&lt;br /&gt;
&lt;br /&gt;
Литература: Herlihy, Shavit -- The Art of Multiprocessor Programming (https://www.dropbox.com/s/s8sssgp95hq5f6q/aompp.pdf?dl=0). Главы 2-4.&lt;br /&gt;
&lt;br /&gt;
=== 2 модуль ===&lt;br /&gt;
&lt;br /&gt;
* Lock-free &amp;amp; wait-free исполнения.&lt;br /&gt;
* Примитив консенсуса. Число консенсуса как характеристика примитивов синхронизации.&lt;br /&gt;
* Универальность консенсуса.&lt;br /&gt;
&lt;br /&gt;
Литература: Herlihy, Shavit -- The Art of Multiprocessor Programming (https://www.dropbox.com/s/s8sssgp95hq5f6q/aompp.pdf?dl=0). Главы 5-6.&lt;br /&gt;
&lt;br /&gt;
Работа над ошибками (всем): задачи 11-19, все; &#039;&#039;&#039;deadline: НИС неделе 15.01-21.01&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== 3 модуль ===&lt;br /&gt;
&lt;br /&gt;
Распределенные алгоритмы. Время, часы, порядок на событиях.&lt;br /&gt;
&lt;br /&gt;
Назначенные статьи для разбора на занятии:&lt;br /&gt;
* на 29.01; Богданова: &#039;&#039;Lamport&#039;&#039; -- Time, clocks and the ordering of events in a distributed system ([https://yadi.sk/i/0cE6EdG5vN5mr pdf])&lt;br /&gt;
* на 29.01; Божко: &#039;&#039;Fidge&#039;&#039; -- Timestamps in message-passing systems that preserve the partial ordering ([https://yadi.sk/i/LyhtLfOMvN64M pdf])&lt;br /&gt;
* на 05.02; Когтенков: &#039;&#039;Mills&#039;&#039; -- Internet time synchronization: the network time protocol ([https://yadi.sk/i/PdXX6TO2vN6Bw pdf])&lt;br /&gt;
&lt;br /&gt;
Литература: Garg -- Elements Of Distributed Computing.&lt;br /&gt;
&lt;br /&gt;
=== 4 модуль ===&lt;br /&gt;
&lt;br /&gt;
Назначенные статьи для разбора на занятии:&lt;br /&gt;
* на 25.05; Кутенин: &#039;&#039;Liskov, Cowling&#039;&#039; -- Viewstamped replication revisited ([https://yadi.sk/i/EO37MNowy6Cwv pdf]) + &#039;&#039;Oki, Liskov&#039;&#039; -- Viewstamped replication: a new primary copy method to support highly available distributed systems ([https://yadi.sk/i/5pVDiF7Qy6D3D pdf])&lt;br /&gt;
* на 08.06; Ренева: &#039;&#039;Ongaro, Ousterhout&#039;&#039; -- In search of understandable consensus algorithm ([https://yadi.sk/i/K5gdY2X2y6EE4 pdf]) + &#039;&#039;Ousterhout&#039;&#039; -- Raft lecture ([https://www.youtube.com/watch?v=YbZ3zDzDnrw video]; 1.0ч)&lt;br /&gt;
&lt;br /&gt;
== Задание 1 ==&lt;br /&gt;
&lt;br /&gt;
Заготовка: https://github.com/sandello/hse-queue-assignment&lt;br /&gt;
&lt;br /&gt;
Дедлайн: 23 апреля 08:00.&lt;br /&gt;
&lt;br /&gt;
Вам необходимо создать файл solution_xxx.cpp (&amp;quot;xxx&amp;quot; замените на вашу фамилию), содержащий реализацию lock-free многопоточной очереди с интерфейсом IQueue; в конце файла определить тип TheQueue. Далее, скомпилировать ваше решение можно с помощью скрипта compile.sh. Решение считается корректным, если скомпилированная программа корректно, без ошибок отрабатывает при запуске с флагом --gtest_repeat=100.&lt;br /&gt;
&lt;br /&gt;
В качестве решения можно реализовать Michael-Scott Queue или очередь с использованием универсальной конструкции из второго модуля.&lt;br /&gt;
&lt;br /&gt;
Ваше решение -- cpp-файл -- присылайте на почту sandello@gmail.com или присылайте ссылку на GH.&lt;br /&gt;
&lt;br /&gt;
== Задание 2 ==&lt;br /&gt;
&lt;br /&gt;
Заготовка: https://github.com/sandello/hse-paxos-assignment&lt;br /&gt;
&lt;br /&gt;
Дедлайн: 9 июня 08:00.&lt;br /&gt;
&lt;br /&gt;
Вам необходимо создать файл solution_xxx.py (&amp;quot;xxx&amp;quot; замените на вашу фамилию), содержащий реализацию процесса распределенного отказоустойчивого write-once key-value хранилища. Write-once значит, что каждый ключ можно записать не более, чем один раз (попытки перезаписи не приводят к изменению значения). Key-value store значит, что хранилище адресует пользовательские строковые данные по пользовательскому строковому ключу. Работа с данными по фиксированному ключу имеет семантику регулярного регистра. Распределенность и отказоустойчивость значат, что операции чтения и записи может обрабатывать любая реплика (экземпляр процесса), и остановка меньшей части реплик не останавливает процесс операций.&lt;br /&gt;
&lt;br /&gt;
В задании предполагается следующая модель разработки: ваш процесс должен наследоваться от класса Process, определенном в файле public.py. Класс Process обладает тремя абстрактными методами: setup, on_tick, on_receive. Метод setup вызывается при инициализации теста и используется для передачи вашему процессу информации об окружении: в частности, о количестве процессов. Метод on_tick вызывается, когда конкретно данному процессу дается квант времени для внутренней работы. Метод on_receive вызывается при доставке данному конкретному процессу сообщения (в качестве сообщения можно использовать любой сериализуемый в json объект). В методы on_tick и on_receive передается контекст (ctx); объект контекста реализует интерфейс Context; контекст можно использовать для получения текущего (логического) времени и для отправки сообщения какому-либо другому процессу. Контекст нельзя сохранять и переиспользовать между разными вызовами on_tick и on_receive.&lt;br /&gt;
&lt;br /&gt;
Такая модель разработки отражает теоретическую модель и позволяет эмулировать отказы и эффекты асинхронности в тестах. Не допускается порождать и использовать фоновые потоки (threads); ваш код должен быть однопоточным. Код тестов взаимодействует с вашим процессом путем отправки специальных сообщений а-ля RPC-запрос. Формат сообщения следующий: &#039;&#039;{&amp;quot;method&amp;quot;: &amp;quot;M&amp;quot;, &amp;quot;request_id&amp;quot;: N, ...}&#039;&#039;. Код тестов отправляет запросы с M=get или M=set и ожидает получить в ответ (спустя некоторое количество шагов) в ответ структуру с ответом, аннотированную request_id.&lt;br /&gt;
&lt;br /&gt;
Более точно, протокол взаимодействия следующий:&lt;br /&gt;
* {&amp;quot;method&amp;quot;: &amp;quot;get&amp;quot;, &amp;quot;request_id&amp;quot;: N, &amp;quot;key&amp;quot;: &amp;quot;K&amp;quot;} -&amp;gt; {&amp;quot;request_id&amp;quot;: N, &amp;quot;value&amp;quot;: &amp;quot;V&amp;quot;} ; запрос на чтение данных по ключу K (строка); в ответ ожидается значение V (строка).&lt;br /&gt;
* {&amp;quot;method&amp;quot;: &amp;quot;set&amp;quot;, &amp;quot;request_id&amp;quot;: N, &amp;quot;key&amp;quot;: &amp;quot;K&amp;quot;, &amp;quot;value&amp;quot;: &amp;quot;V&amp;quot;} -&amp;gt; {&amp;quot;request_id&amp;quot;: N, &amp;quot;value&amp;quot;: &amp;quot;W&amp;quot;, &amp;quot;flag&amp;quot;: &amp;quot;F&amp;quot;} ; запрос на запись данных V (строка) по ключу K (строка); в ответ приходит флаг-индикатор F исхода операции; если флаг истинен, то операция закончилась успешно, и в ячейку по ключу K было действительно сохранено значение V, и в таком случае возвращаемое значение W совпадает с V; если флаг ложен, то по каким-либо причинам операция записи закончилась неуспешно (заполненность ячейки / конкуренция при записи), и возвращается фактическое значение в ячейке W.&lt;br /&gt;
* в тестах чтение ключа K всегда идет строго после какой-либо успешной записи по ключу K.&lt;br /&gt;
&lt;br /&gt;
Для запуска тестов используйте скрипт main.py. Ему необходимо передать путь до вашего класса в формате &amp;quot;МОДУЛЬ.КЛАСС&amp;quot;. К примеру, main.py -i solution_puzyrevskiy_example.GlobalKeyValueStoreProcess. Для отладки передайте ключ -v. &lt;br /&gt;
&lt;br /&gt;
Набор тестов скоро пополнится стресс-тестом. Если вы придумаете хороший, полезный тест, то присылайте PR.&lt;br /&gt;
&lt;br /&gt;
Ваше решение -- py-файл и имя класса -- присылайте на почту sandello@gmail.com или присылайте ссылку на GH.&lt;/div&gt;</summary>
		<author><name>Sandello</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=%D0%9D%D0%98%D0%A1_%D0%A0%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_(3_%D0%BA%D1%83%D1%80%D1%81,_2017)&amp;diff=27964</id>
		<title>НИС Распределенные системы (3 курс, 2017)</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=%D0%9D%D0%98%D0%A1_%D0%A0%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_(3_%D0%BA%D1%83%D1%80%D1%81,_2017)&amp;diff=27964"/>
		<updated>2018-05-25T12:14:01Z</updated>

		<summary type="html">&lt;p&gt;Sandello: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Информация про семинар ==&lt;br /&gt;
В рамках научно-исследовательского семинара по распределенным системам изучаются основные понятия, принципы и результаты предметной области. &lt;br /&gt;
&lt;br /&gt;
Контакты: [mailto:sandello@gmail.com Пузыревский Иван Витальевич]&lt;br /&gt;
&lt;br /&gt;
Список тем курсовых работ: http://wiki.cs.hse.ru/Темы_для_курсовых_работ_2017_(РС)&lt;br /&gt;
&lt;br /&gt;
=== Оценка ===&lt;br /&gt;
&lt;br /&gt;
* Проверочная работа 1 &amp;lt;= 4 баллов&lt;br /&gt;
* Задание 1 &amp;lt;= 3 баллов&lt;br /&gt;
* Задание 4 &amp;lt;= 4 баллов&lt;br /&gt;
* Рецензирование статьи &amp;lt;= 3 баллов&lt;br /&gt;
&lt;br /&gt;
Текущая таблица с оценками и ведомостью: https://docs.google.com/spreadsheets/d/16Z74fhT_TnNscsVviU9KU2mVlaMrmX3weQ6ku5jGGbk/edit?usp=sharing&lt;br /&gt;
&lt;br /&gt;
== Занятия ==&lt;br /&gt;
&lt;br /&gt;
=== 1 модуль ===&lt;br /&gt;
&lt;br /&gt;
* Модель распределенных вычислений.&lt;br /&gt;
* Объекты-регистры, типы регистров (bool/int; safe/regular/atomic; single/multi-reader; single/multi-writer).&lt;br /&gt;
* Эквивалентность вычислительной силы SRSW Bool Safe &amp;amp; MRMW Int Atomic.&lt;br /&gt;
* Блокировки (locks). Понятия живости (liveness) и безопасности (safety). Мьютекс Лампорта.&lt;br /&gt;
&lt;br /&gt;
Литература: Herlihy, Shavit -- The Art of Multiprocessor Programming (https://www.dropbox.com/s/s8sssgp95hq5f6q/aompp.pdf?dl=0). Главы 2-4.&lt;br /&gt;
&lt;br /&gt;
=== 2 модуль ===&lt;br /&gt;
&lt;br /&gt;
* Lock-free &amp;amp; wait-free исполнения.&lt;br /&gt;
* Примитив консенсуса. Число консенсуса как характеристика примитивов синхронизации.&lt;br /&gt;
* Универальность консенсуса.&lt;br /&gt;
&lt;br /&gt;
Литература: Herlihy, Shavit -- The Art of Multiprocessor Programming (https://www.dropbox.com/s/s8sssgp95hq5f6q/aompp.pdf?dl=0). Главы 5-6.&lt;br /&gt;
&lt;br /&gt;
Работа над ошибками (всем): задачи 11-19, все; &#039;&#039;&#039;deadline: НИС неделе 15.01-21.01&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== 3 модуль ===&lt;br /&gt;
&lt;br /&gt;
Распределенные алгоритмы. Время, часы, порядок на событиях.&lt;br /&gt;
&lt;br /&gt;
Назначенные статьи для разбора на занятии:&lt;br /&gt;
* на 29.01; Богданова: &#039;&#039;Lamport&#039;&#039; -- Time, clocks and the ordering of events in a distributed system ([https://yadi.sk/i/0cE6EdG5vN5mr pdf])&lt;br /&gt;
* на 29.01; Божко: &#039;&#039;Fidge&#039;&#039; -- Timestamps in message-passing systems that preserve the partial ordering ([https://yadi.sk/i/LyhtLfOMvN64M pdf])&lt;br /&gt;
* на 05.02; Когтенков: &#039;&#039;Mills&#039;&#039; -- Internet time synchronization: the network time protocol ([https://yadi.sk/i/PdXX6TO2vN6Bw pdf])&lt;br /&gt;
&lt;br /&gt;
Литература: Garg -- Elements Of Distributed Computing.&lt;br /&gt;
&lt;br /&gt;
=== 4 модуль ===&lt;br /&gt;
&lt;br /&gt;
Назначенные статьи для разбора на занятии:&lt;br /&gt;
* на 25.05; ???: &#039;&#039;Liskov, Cowling&#039;&#039; -- Viewstamped replication revisited ([https://yadi.sk/i/EO37MNowy6Cwv pdf]) + &#039;&#039;Oki, Liskov&#039;&#039; -- Viewstamped replication: a new primary copy method to support highly available distributed systems ([https://yadi.sk/i/5pVDiF7Qy6D3D pdf])&lt;br /&gt;
* на 08.06; ???: &#039;&#039;Ongaro, Ousterhout&#039;&#039; -- In search of understandable consensus algorithm ([https://yadi.sk/i/K5gdY2X2y6EE4 pdf]) + &#039;&#039;Ousterhout&#039;&#039; -- Raft lecture ([https://www.youtube.com/watch?v=YbZ3zDzDnrw video]; 1.0ч)&lt;br /&gt;
&lt;br /&gt;
== Задание 1 ==&lt;br /&gt;
&lt;br /&gt;
Заготовка: https://github.com/sandello/hse-queue-assignment&lt;br /&gt;
&lt;br /&gt;
Дедлайн: 23 апреля 08:00.&lt;br /&gt;
&lt;br /&gt;
Вам необходимо создать файл solution_xxx.cpp (&amp;quot;xxx&amp;quot; замените на вашу фамилию), содержащий реализацию lock-free многопоточной очереди с интерфейсом IQueue; в конце файла определить тип TheQueue. Далее, скомпилировать ваше решение можно с помощью скрипта compile.sh. Решение считается корректным, если скомпилированная программа корректно, без ошибок отрабатывает при запуске с флагом --gtest_repeat=100.&lt;br /&gt;
&lt;br /&gt;
В качестве решения можно реализовать Michael-Scott Queue или очередь с использованием универсальной конструкции из второго модуля.&lt;br /&gt;
&lt;br /&gt;
Ваше решение -- cpp-файл -- присылайте на почту sandello@gmail.com или присылайте ссылку на GH.&lt;br /&gt;
&lt;br /&gt;
== Задание 2 ==&lt;br /&gt;
&lt;br /&gt;
Заготовка: https://github.com/sandello/hse-paxos-assignment&lt;br /&gt;
&lt;br /&gt;
Дедлайн: 9 июня 08:00.&lt;br /&gt;
&lt;br /&gt;
Вам необходимо создать файл solution_xxx.py (&amp;quot;xxx&amp;quot; замените на вашу фамилию), содержащий реализацию процесса распределенного отказоустойчивого write-once key-value хранилища. Write-once значит, что каждый ключ можно записать не более, чем один раз (попытки перезаписи не приводят к изменению значения). Key-value store значит, что хранилище адресует пользовательские строковые данные по пользовательскому строковому ключу. Работа с данными по фиксированному ключу имеет семантику регулярного регистра. Распределенность и отказоустойчивость значат, что операции чтения и записи может обрабатывать любая реплика (экземпляр процесса), и остановка меньшей части реплик не останавливает процесс операций.&lt;br /&gt;
&lt;br /&gt;
В задании предполагается следующая модель разработки: ваш процесс должен наследоваться от класса Process, определенном в файле public.py. Класс Process обладает тремя абстрактными методами: setup, on_tick, on_receive. Метод setup вызывается при инициализации теста и используется для передачи вашему процессу информации об окружении: в частности, о количестве процессов. Метод on_tick вызывается, когда конкретно данному процессу дается квант времени для внутренней работы. Метод on_receive вызывается при доставке данному конкретному процессу сообщения (в качестве сообщения можно использовать любой сериализуемый в json объект). В методы on_tick и on_receive передается контекст (ctx); объект контекста реализует интерфейс Context; контекст можно использовать для получения текущего (логического) времени и для отправки сообщения какому-либо другому процессу. Контекст нельзя сохранять и переиспользовать между разными вызовами on_tick и on_receive.&lt;br /&gt;
&lt;br /&gt;
Такая модель разработки отражает теоретическую модель и позволяет эмулировать отказы и эффекты асинхронности в тестах. Не допускается порождать и использовать фоновые потоки (threads); ваш код должен быть однопоточным. Код тестов взаимодействует с вашим процессом путем отправки специальных сообщений а-ля RPC-запрос. Формат сообщения следующий: &#039;&#039;{&amp;quot;method&amp;quot;: &amp;quot;M&amp;quot;, &amp;quot;request_id&amp;quot;: N, ...}&#039;&#039;. Код тестов отправляет запросы с M=get или M=set и ожидает получить в ответ (спустя некоторое количество шагов) в ответ структуру с ответом, аннотированную request_id.&lt;br /&gt;
&lt;br /&gt;
Более точно, протокол взаимодействия следующий:&lt;br /&gt;
* {&amp;quot;method&amp;quot;: &amp;quot;get&amp;quot;, &amp;quot;request_id&amp;quot;: N, &amp;quot;key&amp;quot;: &amp;quot;K&amp;quot;} -&amp;gt; {&amp;quot;request_id&amp;quot;: N, &amp;quot;value&amp;quot;: &amp;quot;V&amp;quot;} ; запрос на чтение данных по ключу K (строка); в ответ ожидается значение V (строка).&lt;br /&gt;
* {&amp;quot;method&amp;quot;: &amp;quot;set&amp;quot;, &amp;quot;request_id&amp;quot;: N, &amp;quot;key&amp;quot;: &amp;quot;K&amp;quot;, &amp;quot;value&amp;quot;: &amp;quot;V&amp;quot;} -&amp;gt; {&amp;quot;request_id&amp;quot;: N, &amp;quot;value&amp;quot;: &amp;quot;W&amp;quot;, &amp;quot;flag&amp;quot;: &amp;quot;F&amp;quot;} ; запрос на запись данных V (строка) по ключу K (строка); в ответ приходит флаг-индикатор F исхода операции; если флаг истинен, то операция закончилась успешно, и в ячейку по ключу K было действительно сохранено значение V, и в таком случае возвращаемое значение W совпадает с V; если флаг ложен, то по каким-либо причинам операция записи закончилась неуспешно (заполненность ячейки / конкуренция при записи), и возвращается фактическое значение в ячейке W.&lt;br /&gt;
* в тестах чтение ключа K всегда идет строго после какой-либо успешной записи по ключу K.&lt;br /&gt;
&lt;br /&gt;
Для запуска тестов используйте скрипт main.py. Ему необходимо передать путь до вашего класса в формате &amp;quot;МОДУЛЬ.КЛАСС&amp;quot;. К примеру, main.py -i solution_puzyrevskiy_example.GlobalKeyValueStoreProcess. Для отладки передайте ключ -v. &lt;br /&gt;
&lt;br /&gt;
Набор тестов скоро пополнится стресс-тестом. Если вы придумаете хороший, полезный тест, то присылайте PR.&lt;br /&gt;
&lt;br /&gt;
Ваше решение -- py-файл и имя класса -- присылайте на почту sandello@gmail.com или присылайте ссылку на GH.&lt;/div&gt;</summary>
		<author><name>Sandello</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=%D0%9D%D0%98%D0%A1_%D0%A0%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_(3_%D0%BA%D1%83%D1%80%D1%81,_2017)&amp;diff=27916</id>
		<title>НИС Распределенные системы (3 курс, 2017)</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=%D0%9D%D0%98%D0%A1_%D0%A0%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_(3_%D0%BA%D1%83%D1%80%D1%81,_2017)&amp;diff=27916"/>
		<updated>2018-05-20T19:10:03Z</updated>

		<summary type="html">&lt;p&gt;Sandello: /* Задание 2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Информация про семинар ==&lt;br /&gt;
В рамках научно-исследовательского семинара по распределенным системам изучаются основные понятия, принципы и результаты предметной области. &lt;br /&gt;
&lt;br /&gt;
Контакты: [mailto:sandello@gmail.com Пузыревский Иван Витальевич]&lt;br /&gt;
&lt;br /&gt;
Список тем курсовых работ: http://wiki.cs.hse.ru/Темы_для_курсовых_работ_2017_(РС)&lt;br /&gt;
&lt;br /&gt;
=== Оценка ===&lt;br /&gt;
&lt;br /&gt;
* Проверочная работа 1 &amp;lt;= 4 баллов&lt;br /&gt;
* Задание 1 &amp;lt;= 3 баллов&lt;br /&gt;
* Проверочная работа 2 &amp;lt;= 4 баллов&lt;br /&gt;
* Задание 2 &amp;lt;= 3 баллов&lt;br /&gt;
&lt;br /&gt;
Текущая таблица с оценками и ведомостью: https://docs.google.com/spreadsheets/d/16Z74fhT_TnNscsVviU9KU2mVlaMrmX3weQ6ku5jGGbk/edit?usp=sharing&lt;br /&gt;
&lt;br /&gt;
== Занятия ==&lt;br /&gt;
&lt;br /&gt;
=== 1 модуль ===&lt;br /&gt;
&lt;br /&gt;
* Модель распределенных вычислений.&lt;br /&gt;
* Объекты-регистры, типы регистров (bool/int; safe/regular/atomic; single/multi-reader; single/multi-writer).&lt;br /&gt;
* Эквивалентность вычислительной силы SRSW Bool Safe &amp;amp; MRMW Int Atomic.&lt;br /&gt;
* Блокировки (locks). Понятия живости (liveness) и безопасности (safety). Мьютекс Лампорта.&lt;br /&gt;
&lt;br /&gt;
Литература: Herlihy, Shavit -- The Art of Multiprocessor Programming (https://www.dropbox.com/s/s8sssgp95hq5f6q/aompp.pdf?dl=0). Главы 2-4.&lt;br /&gt;
&lt;br /&gt;
=== 2 модуль ===&lt;br /&gt;
&lt;br /&gt;
* Lock-free &amp;amp; wait-free исполнения.&lt;br /&gt;
* Примитив консенсуса. Число консенсуса как характеристика примитивов синхронизации.&lt;br /&gt;
* Универальность консенсуса.&lt;br /&gt;
&lt;br /&gt;
Литература: Herlihy, Shavit -- The Art of Multiprocessor Programming (https://www.dropbox.com/s/s8sssgp95hq5f6q/aompp.pdf?dl=0). Главы 5-6.&lt;br /&gt;
&lt;br /&gt;
Работа над ошибками (всем): задачи 11-19, все; &#039;&#039;&#039;deadline: НИС неделе 15.01-21.01&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== 3 модуль ===&lt;br /&gt;
&lt;br /&gt;
Распределенные алгоритмы. Время, часы, порядок на событиях.&lt;br /&gt;
&lt;br /&gt;
Назначенные статьи для разбора на занятии:&lt;br /&gt;
* на 29.01; Богданова: &#039;&#039;Lamport&#039;&#039; -- Time, clocks and the ordering of events in a distributed system ([https://yadi.sk/i/0cE6EdG5vN5mr pdf])&lt;br /&gt;
* на 29.01; Божко: &#039;&#039;Fidge&#039;&#039; -- Timestamps in message-passing systems that preserve the partial ordering ([https://yadi.sk/i/LyhtLfOMvN64M pdf])&lt;br /&gt;
* на 05.02; Когтенков: &#039;&#039;Mills&#039;&#039; -- Internet time synchronization: the network time protocol ([https://yadi.sk/i/PdXX6TO2vN6Bw pdf])&lt;br /&gt;
&lt;br /&gt;
Литература: Garg -- Elements Of Distributed Computing.&lt;br /&gt;
&lt;br /&gt;
=== 4 модуль ===&lt;br /&gt;
&lt;br /&gt;
Назначенные статьи для разбора на занятии:&lt;br /&gt;
* на 25.05; ???: &#039;&#039;Liskov, Cowling&#039;&#039; -- Viewstamped replication revisited ([https://yadi.sk/i/EO37MNowy6Cwv pdf]) + &#039;&#039;Oki, Liskov&#039;&#039; -- Viewstamped replication: a new primary copy method to support highly available distributed systems ([https://yadi.sk/i/5pVDiF7Qy6D3D pdf])&lt;br /&gt;
* на 08.06; ???: &#039;&#039;Ongaro, Ousterhout&#039;&#039; -- In search of understandable consensus algorithm ([https://yadi.sk/i/K5gdY2X2y6EE4 pdf]) + &#039;&#039;Ousterhout&#039;&#039; -- Raft lecture ([https://www.youtube.com/watch?v=YbZ3zDzDnrw video]; 1.0ч)&lt;br /&gt;
&lt;br /&gt;
== Задание 1 ==&lt;br /&gt;
&lt;br /&gt;
Заготовка: https://github.com/sandello/hse-queue-assignment&lt;br /&gt;
&lt;br /&gt;
Дедлайн: 23 апреля 08:00.&lt;br /&gt;
&lt;br /&gt;
Вам необходимо создать файл solution_xxx.cpp (&amp;quot;xxx&amp;quot; замените на вашу фамилию), содержащий реализацию lock-free многопоточной очереди с интерфейсом IQueue; в конце файла определить тип TheQueue. Далее, скомпилировать ваше решение можно с помощью скрипта compile.sh. Решение считается корректным, если скомпилированная программа корректно, без ошибок отрабатывает при запуске с флагом --gtest_repeat=100.&lt;br /&gt;
&lt;br /&gt;
В качестве решения можно реализовать Michael-Scott Queue или очередь с использованием универсальной конструкции из второго модуля.&lt;br /&gt;
&lt;br /&gt;
Ваше решение -- cpp-файл -- присылайте на почту sandello@gmail.com или присылайте ссылку на GH.&lt;br /&gt;
&lt;br /&gt;
== Задание 2 ==&lt;br /&gt;
&lt;br /&gt;
Заготовка: https://github.com/sandello/hse-paxos-assignment&lt;br /&gt;
&lt;br /&gt;
Дедлайн: 9 июня 08:00.&lt;br /&gt;
&lt;br /&gt;
Вам необходимо создать файл solution_xxx.py (&amp;quot;xxx&amp;quot; замените на вашу фамилию), содержащий реализацию процесса распределенного отказоустойчивого write-once key-value хранилища. Write-once значит, что каждый ключ можно записать не более, чем один раз (попытки перезаписи не приводят к изменению значения). Key-value store значит, что хранилище адресует пользовательские строковые данные по пользовательскому строковому ключу. Работа с данными по фиксированному ключу имеет семантику регулярного регистра. Распределенность и отказоустойчивость значат, что операции чтения и записи может обрабатывать любая реплика (экземпляр процесса), и остановка меньшей части реплик не останавливает процесс операций.&lt;br /&gt;
&lt;br /&gt;
В задании предполагается следующая модель разработки: ваш процесс должен наследоваться от класса Process, определенном в файле public.py. Класс Process обладает тремя абстрактными методами: setup, on_tick, on_receive. Метод setup вызывается при инициализации теста и используется для передачи вашему процессу информации об окружении: в частности, о количестве процессов. Метод on_tick вызывается, когда конкретно данному процессу дается квант времени для внутренней работы. Метод on_receive вызывается при доставке данному конкретному процессу сообщения (в качестве сообщения можно использовать любой сериализуемый в json объект). В методы on_tick и on_receive передается контекст (ctx); объект контекста реализует интерфейс Context; контекст можно использовать для получения текущего (логического) времени и для отправки сообщения какому-либо другому процессу. Контекст нельзя сохранять и переиспользовать между разными вызовами on_tick и on_receive.&lt;br /&gt;
&lt;br /&gt;
Такая модель разработки отражает теоретическую модель и позволяет эмулировать отказы и эффекты асинхронности в тестах. Не допускается порождать и использовать фоновые потоки (threads); ваш код должен быть однопоточным. Код тестов взаимодействует с вашим процессом путем отправки специальных сообщений а-ля RPC-запрос. Формат сообщения следующий: &#039;&#039;{&amp;quot;method&amp;quot;: &amp;quot;M&amp;quot;, &amp;quot;request_id&amp;quot;: N, ...}&#039;&#039;. Код тестов отправляет запросы с M=get или M=set и ожидает получить в ответ (спустя некоторое количество шагов) в ответ структуру с ответом, аннотированную request_id.&lt;br /&gt;
&lt;br /&gt;
Более точно, протокол взаимодействия следующий:&lt;br /&gt;
* {&amp;quot;method&amp;quot;: &amp;quot;get&amp;quot;, &amp;quot;request_id&amp;quot;: N, &amp;quot;key&amp;quot;: &amp;quot;K&amp;quot;} -&amp;gt; {&amp;quot;request_id&amp;quot;: N, &amp;quot;value&amp;quot;: &amp;quot;V&amp;quot;} ; запрос на чтение данных по ключу K (строка); в ответ ожидается значение V (строка).&lt;br /&gt;
* {&amp;quot;method&amp;quot;: &amp;quot;set&amp;quot;, &amp;quot;request_id&amp;quot;: N, &amp;quot;key&amp;quot;: &amp;quot;K&amp;quot;, &amp;quot;value&amp;quot;: &amp;quot;V&amp;quot;} -&amp;gt; {&amp;quot;request_id&amp;quot;: N, &amp;quot;value&amp;quot;: &amp;quot;W&amp;quot;, &amp;quot;flag&amp;quot;: &amp;quot;F&amp;quot;} ; запрос на запись данных V (строка) по ключу K (строка); в ответ приходит флаг-индикатор F исхода операции; если флаг истинен, то операция закончилась успешно, и в ячейку по ключу K было действительно сохранено значение V, и в таком случае возвращаемое значение W совпадает с V; если флаг ложен, то по каким-либо причинам операция записи закончилась неуспешно (заполненность ячейки / конкуренция при записи), и возвращается фактическое значение в ячейке W.&lt;br /&gt;
* в тестах чтение ключа K всегда идет строго после какой-либо успешной записи по ключу K.&lt;br /&gt;
&lt;br /&gt;
Для запуска тестов используйте скрипт main.py. Ему необходимо передать путь до вашего класса в формате &amp;quot;МОДУЛЬ.КЛАСС&amp;quot;. К примеру, main.py -i solution_puzyrevskiy_example.GlobalKeyValueStoreProcess. Для отладки передайте ключ -v. &lt;br /&gt;
&lt;br /&gt;
Набор тестов скоро пополнится стресс-тестом. Если вы придумаете хороший, полезный тест, то присылайте PR.&lt;br /&gt;
&lt;br /&gt;
Ваше решение -- py-файл и имя класса -- присылайте на почту sandello@gmail.com или присылайте ссылку на GH.&lt;/div&gt;</summary>
		<author><name>Sandello</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=%D0%9D%D0%98%D0%A1_%D0%A0%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_(3_%D0%BA%D1%83%D1%80%D1%81,_2017)&amp;diff=27914</id>
		<title>НИС Распределенные системы (3 курс, 2017)</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=%D0%9D%D0%98%D0%A1_%D0%A0%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_(3_%D0%BA%D1%83%D1%80%D1%81,_2017)&amp;diff=27914"/>
		<updated>2018-05-19T18:15:09Z</updated>

		<summary type="html">&lt;p&gt;Sandello: /* Задание 2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Информация про семинар ==&lt;br /&gt;
В рамках научно-исследовательского семинара по распределенным системам изучаются основные понятия, принципы и результаты предметной области. &lt;br /&gt;
&lt;br /&gt;
Контакты: [mailto:sandello@gmail.com Пузыревский Иван Витальевич]&lt;br /&gt;
&lt;br /&gt;
Список тем курсовых работ: http://wiki.cs.hse.ru/Темы_для_курсовых_работ_2017_(РС)&lt;br /&gt;
&lt;br /&gt;
=== Оценка ===&lt;br /&gt;
&lt;br /&gt;
* Проверочная работа 1 &amp;lt;= 4 баллов&lt;br /&gt;
* Задание 1 &amp;lt;= 3 баллов&lt;br /&gt;
* Проверочная работа 2 &amp;lt;= 4 баллов&lt;br /&gt;
* Задание 2 &amp;lt;= 3 баллов&lt;br /&gt;
&lt;br /&gt;
Текущая таблица с оценками и ведомостью: https://docs.google.com/spreadsheets/d/16Z74fhT_TnNscsVviU9KU2mVlaMrmX3weQ6ku5jGGbk/edit?usp=sharing&lt;br /&gt;
&lt;br /&gt;
== Занятия ==&lt;br /&gt;
&lt;br /&gt;
=== 1 модуль ===&lt;br /&gt;
&lt;br /&gt;
* Модель распределенных вычислений.&lt;br /&gt;
* Объекты-регистры, типы регистров (bool/int; safe/regular/atomic; single/multi-reader; single/multi-writer).&lt;br /&gt;
* Эквивалентность вычислительной силы SRSW Bool Safe &amp;amp; MRMW Int Atomic.&lt;br /&gt;
* Блокировки (locks). Понятия живости (liveness) и безопасности (safety). Мьютекс Лампорта.&lt;br /&gt;
&lt;br /&gt;
Литература: Herlihy, Shavit -- The Art of Multiprocessor Programming (https://www.dropbox.com/s/s8sssgp95hq5f6q/aompp.pdf?dl=0). Главы 2-4.&lt;br /&gt;
&lt;br /&gt;
=== 2 модуль ===&lt;br /&gt;
&lt;br /&gt;
* Lock-free &amp;amp; wait-free исполнения.&lt;br /&gt;
* Примитив консенсуса. Число консенсуса как характеристика примитивов синхронизации.&lt;br /&gt;
* Универальность консенсуса.&lt;br /&gt;
&lt;br /&gt;
Литература: Herlihy, Shavit -- The Art of Multiprocessor Programming (https://www.dropbox.com/s/s8sssgp95hq5f6q/aompp.pdf?dl=0). Главы 5-6.&lt;br /&gt;
&lt;br /&gt;
Работа над ошибками (всем): задачи 11-19, все; &#039;&#039;&#039;deadline: НИС неделе 15.01-21.01&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== 3 модуль ===&lt;br /&gt;
&lt;br /&gt;
Распределенные алгоритмы. Время, часы, порядок на событиях.&lt;br /&gt;
&lt;br /&gt;
Назначенные статьи для разбора на занятии:&lt;br /&gt;
* на 29.01; Богданова: &#039;&#039;Lamport&#039;&#039; -- Time, clocks and the ordering of events in a distributed system ([https://yadi.sk/i/0cE6EdG5vN5mr pdf])&lt;br /&gt;
* на 29.01; Божко: &#039;&#039;Fidge&#039;&#039; -- Timestamps in message-passing systems that preserve the partial ordering ([https://yadi.sk/i/LyhtLfOMvN64M pdf])&lt;br /&gt;
* на 05.02; Когтенков: &#039;&#039;Mills&#039;&#039; -- Internet time synchronization: the network time protocol ([https://yadi.sk/i/PdXX6TO2vN6Bw pdf])&lt;br /&gt;
&lt;br /&gt;
Литература: Garg -- Elements Of Distributed Computing.&lt;br /&gt;
&lt;br /&gt;
=== 4 модуль ===&lt;br /&gt;
&lt;br /&gt;
Назначенные статьи для разбора на занятии:&lt;br /&gt;
* на 25.05; ???: &#039;&#039;Liskov, Cowling&#039;&#039; -- Viewstamped replication revisited ([https://yadi.sk/i/EO37MNowy6Cwv pdf]) + &#039;&#039;Oki, Liskov&#039;&#039; -- Viewstamped replication: a new primary copy method to support highly available distributed systems ([https://yadi.sk/i/5pVDiF7Qy6D3D pdf])&lt;br /&gt;
* на 08.06; ???: &#039;&#039;Ongaro, Ousterhout&#039;&#039; -- In search of understandable consensus algorithm ([https://yadi.sk/i/K5gdY2X2y6EE4 pdf]) + &#039;&#039;Ousterhout&#039;&#039; -- Raft lecture ([https://www.youtube.com/watch?v=YbZ3zDzDnrw video]; 1.0ч)&lt;br /&gt;
&lt;br /&gt;
== Задание 1 ==&lt;br /&gt;
&lt;br /&gt;
Заготовка: https://github.com/sandello/hse-queue-assignment&lt;br /&gt;
&lt;br /&gt;
Дедлайн: 23 апреля 08:00.&lt;br /&gt;
&lt;br /&gt;
Вам необходимо создать файл solution_xxx.cpp (&amp;quot;xxx&amp;quot; замените на вашу фамилию), содержащий реализацию lock-free многопоточной очереди с интерфейсом IQueue; в конце файла определить тип TheQueue. Далее, скомпилировать ваше решение можно с помощью скрипта compile.sh. Решение считается корректным, если скомпилированная программа корректно, без ошибок отрабатывает при запуске с флагом --gtest_repeat=100.&lt;br /&gt;
&lt;br /&gt;
В качестве решения можно реализовать Michael-Scott Queue или очередь с использованием универсальной конструкции из второго модуля.&lt;br /&gt;
&lt;br /&gt;
Ваше решение -- cpp-файл -- присылайте на почту sandello@gmail.com или присылайте ссылку на GH.&lt;br /&gt;
&lt;br /&gt;
== Задание 2 ==&lt;br /&gt;
&lt;br /&gt;
Заготовка: https://github.com/sandello/hse-paxos-assignment&lt;br /&gt;
&lt;br /&gt;
Дедлайн: 4 июня 08:00.&lt;br /&gt;
&lt;br /&gt;
Вам необходимо создать файл solution_xxx.py (&amp;quot;xxx&amp;quot; замените на вашу фамилию), содержащий реализацию процесса распределенного отказоустойчивого write-once key-value хранилища. Write-once значит, что каждый ключ можно записать не более, чем один раз (попытки перезаписи не приводят к изменению значения). Key-value store значит, что хранилище адресует пользовательские строковые данные по пользовательскому строковому ключу. Работа с данными по фиксированному ключу имеет семантику регулярного регистра. Распределенность и отказоустойчивость значат, что операции чтения и записи может обрабатывать любая реплика (экземпляр процесса), и остановка меньшей части реплик не останавливает процесс операций.&lt;br /&gt;
&lt;br /&gt;
В задании предполагается следующая модель разработки: ваш процесс должен наследоваться от класса Process, определенном в файле public.py. Класс Process обладает тремя абстрактными методами: setup, on_tick, on_receive. Метод setup вызывается при инициализации теста и используется для передачи вашему процессу информации об окружении: в частности, о количестве процессов. Метод on_tick вызывается, когда конкретно данному процессу дается квант времени для внутренней работы. Метод on_receive вызывается при доставке данному конкретному процессу сообщения (в качестве сообщения можно использовать любой сериализуемый в json объект). В методы on_tick и on_receive передается контекст (ctx); объект контекста реализует интерфейс Context; контекст можно использовать для получения текущего (логического) времени и для отправки сообщения какому-либо другому процессу. Контекст нельзя сохранять и переиспользовать между разными вызовами on_tick и on_receive.&lt;br /&gt;
&lt;br /&gt;
Такая модель разработки отражает теоретическую модель и позволяет эмулировать отказы и эффекты асинхронности в тестах. Не допускается порождать и использовать фоновые потоки (threads); ваш код должен быть однопоточным. Код тестов взаимодействует с вашим процессом путем отправки специальных сообщений а-ля RPC-запрос. Формат сообщения следующий: &#039;&#039;{&amp;quot;method&amp;quot;: &amp;quot;M&amp;quot;, &amp;quot;request_id&amp;quot;: N, ...}&#039;&#039;. Код тестов отправляет запросы с M=get или M=set и ожидает получить в ответ (спустя некоторое количество шагов) в ответ структуру с ответом, аннотированную request_id.&lt;br /&gt;
&lt;br /&gt;
Более точно, протокол взаимодействия следующий:&lt;br /&gt;
* {&amp;quot;method&amp;quot;: &amp;quot;get&amp;quot;, &amp;quot;request_id&amp;quot;: N, &amp;quot;key&amp;quot;: &amp;quot;K&amp;quot;} -&amp;gt; {&amp;quot;request_id&amp;quot;: N, &amp;quot;value&amp;quot;: &amp;quot;V&amp;quot;} ; запрос на чтение данных по ключу K (строка); в ответ ожидается значение V (строка).&lt;br /&gt;
* {&amp;quot;method&amp;quot;: &amp;quot;set&amp;quot;, &amp;quot;request_id&amp;quot;: N, &amp;quot;key&amp;quot;: &amp;quot;K&amp;quot;, &amp;quot;value&amp;quot;: &amp;quot;V&amp;quot;} -&amp;gt; {&amp;quot;request_id&amp;quot;: N, &amp;quot;value&amp;quot;: &amp;quot;W&amp;quot;, &amp;quot;flag&amp;quot;: &amp;quot;F&amp;quot;} ; запрос на запись данных V (строка) по ключу K (строка); в ответ приходит флаг-индикатор F исхода операции; если флаг истинен, то операция закончилась успешно, и в ячейку по ключу K было действительно сохранено значение V, и в таком случае возвращаемое значение W совпадает с V; если флаг ложен, то по каким-либо причинам операция записи закончилась неуспешно (заполненность ячейки / конкуренция при записи), и возвращается фактическое значение в ячейке W.&lt;br /&gt;
* в тестах чтение ключа K всегда идет строго после какой-либо успешной записи по ключу K.&lt;br /&gt;
&lt;br /&gt;
Для запуска тестов используйте скрипт main.py. Ему необходимо передать путь до вашего класса в формате &amp;quot;МОДУЛЬ.КЛАСС&amp;quot;. К примеру, main.py -i solution_puzyrevskiy_example.GlobalKeyValueStoreProcess. Для отладки передайте ключ -v. &lt;br /&gt;
&lt;br /&gt;
Набор тестов скоро пополнится стресс-тестом. Если вы придумаете хороший, полезный тест, то присылайте PR.&lt;br /&gt;
&lt;br /&gt;
Ваше решение -- py-файл и имя класса -- присылайте на почту sandello@gmail.com или присылайте ссылку на GH.&lt;/div&gt;</summary>
		<author><name>Sandello</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=%D0%9D%D0%98%D0%A1_%D0%A0%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_(3_%D0%BA%D1%83%D1%80%D1%81,_2017)&amp;diff=27913</id>
		<title>НИС Распределенные системы (3 курс, 2017)</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=%D0%9D%D0%98%D0%A1_%D0%A0%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_(3_%D0%BA%D1%83%D1%80%D1%81,_2017)&amp;diff=27913"/>
		<updated>2018-05-19T18:14:57Z</updated>

		<summary type="html">&lt;p&gt;Sandello: /* Задание 2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Информация про семинар ==&lt;br /&gt;
В рамках научно-исследовательского семинара по распределенным системам изучаются основные понятия, принципы и результаты предметной области. &lt;br /&gt;
&lt;br /&gt;
Контакты: [mailto:sandello@gmail.com Пузыревский Иван Витальевич]&lt;br /&gt;
&lt;br /&gt;
Список тем курсовых работ: http://wiki.cs.hse.ru/Темы_для_курсовых_работ_2017_(РС)&lt;br /&gt;
&lt;br /&gt;
=== Оценка ===&lt;br /&gt;
&lt;br /&gt;
* Проверочная работа 1 &amp;lt;= 4 баллов&lt;br /&gt;
* Задание 1 &amp;lt;= 3 баллов&lt;br /&gt;
* Проверочная работа 2 &amp;lt;= 4 баллов&lt;br /&gt;
* Задание 2 &amp;lt;= 3 баллов&lt;br /&gt;
&lt;br /&gt;
Текущая таблица с оценками и ведомостью: https://docs.google.com/spreadsheets/d/16Z74fhT_TnNscsVviU9KU2mVlaMrmX3weQ6ku5jGGbk/edit?usp=sharing&lt;br /&gt;
&lt;br /&gt;
== Занятия ==&lt;br /&gt;
&lt;br /&gt;
=== 1 модуль ===&lt;br /&gt;
&lt;br /&gt;
* Модель распределенных вычислений.&lt;br /&gt;
* Объекты-регистры, типы регистров (bool/int; safe/regular/atomic; single/multi-reader; single/multi-writer).&lt;br /&gt;
* Эквивалентность вычислительной силы SRSW Bool Safe &amp;amp; MRMW Int Atomic.&lt;br /&gt;
* Блокировки (locks). Понятия живости (liveness) и безопасности (safety). Мьютекс Лампорта.&lt;br /&gt;
&lt;br /&gt;
Литература: Herlihy, Shavit -- The Art of Multiprocessor Programming (https://www.dropbox.com/s/s8sssgp95hq5f6q/aompp.pdf?dl=0). Главы 2-4.&lt;br /&gt;
&lt;br /&gt;
=== 2 модуль ===&lt;br /&gt;
&lt;br /&gt;
* Lock-free &amp;amp; wait-free исполнения.&lt;br /&gt;
* Примитив консенсуса. Число консенсуса как характеристика примитивов синхронизации.&lt;br /&gt;
* Универальность консенсуса.&lt;br /&gt;
&lt;br /&gt;
Литература: Herlihy, Shavit -- The Art of Multiprocessor Programming (https://www.dropbox.com/s/s8sssgp95hq5f6q/aompp.pdf?dl=0). Главы 5-6.&lt;br /&gt;
&lt;br /&gt;
Работа над ошибками (всем): задачи 11-19, все; &#039;&#039;&#039;deadline: НИС неделе 15.01-21.01&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== 3 модуль ===&lt;br /&gt;
&lt;br /&gt;
Распределенные алгоритмы. Время, часы, порядок на событиях.&lt;br /&gt;
&lt;br /&gt;
Назначенные статьи для разбора на занятии:&lt;br /&gt;
* на 29.01; Богданова: &#039;&#039;Lamport&#039;&#039; -- Time, clocks and the ordering of events in a distributed system ([https://yadi.sk/i/0cE6EdG5vN5mr pdf])&lt;br /&gt;
* на 29.01; Божко: &#039;&#039;Fidge&#039;&#039; -- Timestamps in message-passing systems that preserve the partial ordering ([https://yadi.sk/i/LyhtLfOMvN64M pdf])&lt;br /&gt;
* на 05.02; Когтенков: &#039;&#039;Mills&#039;&#039; -- Internet time synchronization: the network time protocol ([https://yadi.sk/i/PdXX6TO2vN6Bw pdf])&lt;br /&gt;
&lt;br /&gt;
Литература: Garg -- Elements Of Distributed Computing.&lt;br /&gt;
&lt;br /&gt;
=== 4 модуль ===&lt;br /&gt;
&lt;br /&gt;
Назначенные статьи для разбора на занятии:&lt;br /&gt;
* на 25.05; ???: &#039;&#039;Liskov, Cowling&#039;&#039; -- Viewstamped replication revisited ([https://yadi.sk/i/EO37MNowy6Cwv pdf]) + &#039;&#039;Oki, Liskov&#039;&#039; -- Viewstamped replication: a new primary copy method to support highly available distributed systems ([https://yadi.sk/i/5pVDiF7Qy6D3D pdf])&lt;br /&gt;
* на 08.06; ???: &#039;&#039;Ongaro, Ousterhout&#039;&#039; -- In search of understandable consensus algorithm ([https://yadi.sk/i/K5gdY2X2y6EE4 pdf]) + &#039;&#039;Ousterhout&#039;&#039; -- Raft lecture ([https://www.youtube.com/watch?v=YbZ3zDzDnrw video]; 1.0ч)&lt;br /&gt;
&lt;br /&gt;
== Задание 1 ==&lt;br /&gt;
&lt;br /&gt;
Заготовка: https://github.com/sandello/hse-queue-assignment&lt;br /&gt;
&lt;br /&gt;
Дедлайн: 23 апреля 08:00.&lt;br /&gt;
&lt;br /&gt;
Вам необходимо создать файл solution_xxx.cpp (&amp;quot;xxx&amp;quot; замените на вашу фамилию), содержащий реализацию lock-free многопоточной очереди с интерфейсом IQueue; в конце файла определить тип TheQueue. Далее, скомпилировать ваше решение можно с помощью скрипта compile.sh. Решение считается корректным, если скомпилированная программа корректно, без ошибок отрабатывает при запуске с флагом --gtest_repeat=100.&lt;br /&gt;
&lt;br /&gt;
В качестве решения можно реализовать Michael-Scott Queue или очередь с использованием универсальной конструкции из второго модуля.&lt;br /&gt;
&lt;br /&gt;
Ваше решение -- cpp-файл -- присылайте на почту sandello@gmail.com или присылайте ссылку на GH.&lt;br /&gt;
&lt;br /&gt;
== Задание 2 ==&lt;br /&gt;
&lt;br /&gt;
Заготовка: https://github.com/sandello/hse-paxos-assignment&lt;br /&gt;
&lt;br /&gt;
Дедлайн: 4 июня 08:00.&lt;br /&gt;
&lt;br /&gt;
Вам необходимо создать файл solution_xxx.py (&amp;quot;xxx&amp;quot; замените на вашу фамилию), содержащий реализацию процесса распределенного отказоустойчивого write-once key-value хранилища. Write-once значит, что каждый ключ можно записать не более, чем один раз (попытки перезаписи не приводят к изменению значения). Key-value store значит, что хранилище адресует пользовательские строковые данные по пользовательскому строковому ключу. Работа с данными по фиксированному ключу имеет семантику регулярного регистра. Распределенность и отказоустойчивость значат, что операции чтения и записи может обрабатывать любая реплика (экземпляр процесса), и остановка меньшей части реплик не останавливает процесс операций.&lt;br /&gt;
&lt;br /&gt;
В задании предполагается следующая модель разработки: ваш процесс должен наследоваться от класса Process, определенном в файле public.py. Класс Process обладает тремя абстрактными методами: setup, on_tick, on_receive. Метод setup вызывается при инициализации теста и используется для передачи вашему процессу информации об окружении: в частности, о количестве процессов. Метод on_tick вызывается, когда конкретно данному процессу дается квант времени для внутренней работы. Метод on_receive вызывается при доставке данному конкретному процессу сообщения (в качестве сообщения можно использовать любой сериализуемый в json объект). В методы on_tick и on_receive передается контекст (ctx); объект контекста реализует интерфейс Context; контекст можно использовать для получения текущего (логического) времени и для отправки сообщения какому-либо другому процессу. Контекст нельзя сохранять и переиспользовать между разными вызовами on_tick и on_receive.&lt;br /&gt;
&lt;br /&gt;
Такая модель разработки отражает теоретическую модель и позволяет эмулировать отказы и эффекты асинхронности в тестах. Не допускается порождать и использовать фоновые потоки (threads); ваш код должен быть однопоточным. Код тестов взаимодействует с вашим процессом путем отправки специальных сообщений а-ля RPC-запрос. Формат сообщения следующий: &#039;&#039;{&amp;quot;method&amp;quot;: &amp;quot;M&amp;quot;, &amp;quot;request_id&amp;quot;: N, ...}&#039;&#039;. Код тестов отправляет запросы с M=get или M=set и ожидает получить в ответ (спустя некоторое количество шагов) в ответ структуру с ответом, аннотированную request_id.&lt;br /&gt;
&lt;br /&gt;
Более точно, протокол взаимодействия следующий:&lt;br /&gt;
* {&amp;quot;method&amp;quot;: &amp;quot;get&amp;quot;, &amp;quot;request_id&amp;quot;: N, &amp;quot;key&amp;quot;: &amp;quot;K&amp;quot;} -&amp;gt; {&amp;quot;request_id&amp;quot;: N, &amp;quot;value&amp;quot;: &amp;quot;V&amp;quot;} ; запрос на чтение данных по ключу K (строка); в ответ ожидается значение V (строка).&lt;br /&gt;
* {&amp;quot;method&amp;quot;: &amp;quot;set&amp;quot;, &amp;quot;request_id&amp;quot;: N, &amp;quot;key&amp;quot;: &amp;quot;K&amp;quot;, &amp;quot;value&amp;quot;: &amp;quot;V&amp;quot;} -&amp;gt; {&amp;quot;request_id&amp;quot;: N, &amp;quot;value&amp;quot;: &amp;quot;W&amp;quot;, &amp;quot;flag&amp;quot;: &amp;quot;F&amp;quot;} ; запрос на запись данных V (строка) по ключу K (строка); в ответ приходит флаг-индикатор F исхода операции; если флаг истинен, то операция закончилась успешно, и в ячейку по ключу K было действительно сохранено значение V, и в таком случае возвращаемое значение W совпадает с V; если флаг ложен, то по каким-либо причинам операция записи закончилась неуспешно (заполненность ячейки / конкуренция при записи), и возвращается фактическое значение в ячейке W.&lt;br /&gt;
* в тестах чтение ключа K всегда идет строго после какой-либо успешной записи по ключу K.&lt;br /&gt;
&lt;br /&gt;
Для запуска тестов используйте скрипт main.py. Ему необходимо передать путь до вашего класса в формате &amp;quot;МОДУЛЬ.КЛАСС&amp;quot;. К примеру, main.py -i solution_puzyrevskiy_example.GlobalKeyValueStoreProcess. Для отладки передайте ключ -v. &lt;br /&gt;
&lt;br /&gt;
Набор тестов скоро пополнится стресс-тестом. Если вы придумаете хороший, полезный тест, то присылайте PR.&lt;br /&gt;
&lt;br /&gt;
Ваше решение -- py-файл -- присылайте на почту sandello@gmail.com или присылайте ссылку на GH.&lt;/div&gt;</summary>
		<author><name>Sandello</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=%D0%9D%D0%98%D0%A1_%D0%A0%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_(3_%D0%BA%D1%83%D1%80%D1%81,_2017)&amp;diff=27912</id>
		<title>НИС Распределенные системы (3 курс, 2017)</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=%D0%9D%D0%98%D0%A1_%D0%A0%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_(3_%D0%BA%D1%83%D1%80%D1%81,_2017)&amp;diff=27912"/>
		<updated>2018-05-19T18:14:46Z</updated>

		<summary type="html">&lt;p&gt;Sandello: /* Задание 2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Информация про семинар ==&lt;br /&gt;
В рамках научно-исследовательского семинара по распределенным системам изучаются основные понятия, принципы и результаты предметной области. &lt;br /&gt;
&lt;br /&gt;
Контакты: [mailto:sandello@gmail.com Пузыревский Иван Витальевич]&lt;br /&gt;
&lt;br /&gt;
Список тем курсовых работ: http://wiki.cs.hse.ru/Темы_для_курсовых_работ_2017_(РС)&lt;br /&gt;
&lt;br /&gt;
=== Оценка ===&lt;br /&gt;
&lt;br /&gt;
* Проверочная работа 1 &amp;lt;= 4 баллов&lt;br /&gt;
* Задание 1 &amp;lt;= 3 баллов&lt;br /&gt;
* Проверочная работа 2 &amp;lt;= 4 баллов&lt;br /&gt;
* Задание 2 &amp;lt;= 3 баллов&lt;br /&gt;
&lt;br /&gt;
Текущая таблица с оценками и ведомостью: https://docs.google.com/spreadsheets/d/16Z74fhT_TnNscsVviU9KU2mVlaMrmX3weQ6ku5jGGbk/edit?usp=sharing&lt;br /&gt;
&lt;br /&gt;
== Занятия ==&lt;br /&gt;
&lt;br /&gt;
=== 1 модуль ===&lt;br /&gt;
&lt;br /&gt;
* Модель распределенных вычислений.&lt;br /&gt;
* Объекты-регистры, типы регистров (bool/int; safe/regular/atomic; single/multi-reader; single/multi-writer).&lt;br /&gt;
* Эквивалентность вычислительной силы SRSW Bool Safe &amp;amp; MRMW Int Atomic.&lt;br /&gt;
* Блокировки (locks). Понятия живости (liveness) и безопасности (safety). Мьютекс Лампорта.&lt;br /&gt;
&lt;br /&gt;
Литература: Herlihy, Shavit -- The Art of Multiprocessor Programming (https://www.dropbox.com/s/s8sssgp95hq5f6q/aompp.pdf?dl=0). Главы 2-4.&lt;br /&gt;
&lt;br /&gt;
=== 2 модуль ===&lt;br /&gt;
&lt;br /&gt;
* Lock-free &amp;amp; wait-free исполнения.&lt;br /&gt;
* Примитив консенсуса. Число консенсуса как характеристика примитивов синхронизации.&lt;br /&gt;
* Универальность консенсуса.&lt;br /&gt;
&lt;br /&gt;
Литература: Herlihy, Shavit -- The Art of Multiprocessor Programming (https://www.dropbox.com/s/s8sssgp95hq5f6q/aompp.pdf?dl=0). Главы 5-6.&lt;br /&gt;
&lt;br /&gt;
Работа над ошибками (всем): задачи 11-19, все; &#039;&#039;&#039;deadline: НИС неделе 15.01-21.01&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== 3 модуль ===&lt;br /&gt;
&lt;br /&gt;
Распределенные алгоритмы. Время, часы, порядок на событиях.&lt;br /&gt;
&lt;br /&gt;
Назначенные статьи для разбора на занятии:&lt;br /&gt;
* на 29.01; Богданова: &#039;&#039;Lamport&#039;&#039; -- Time, clocks and the ordering of events in a distributed system ([https://yadi.sk/i/0cE6EdG5vN5mr pdf])&lt;br /&gt;
* на 29.01; Божко: &#039;&#039;Fidge&#039;&#039; -- Timestamps in message-passing systems that preserve the partial ordering ([https://yadi.sk/i/LyhtLfOMvN64M pdf])&lt;br /&gt;
* на 05.02; Когтенков: &#039;&#039;Mills&#039;&#039; -- Internet time synchronization: the network time protocol ([https://yadi.sk/i/PdXX6TO2vN6Bw pdf])&lt;br /&gt;
&lt;br /&gt;
Литература: Garg -- Elements Of Distributed Computing.&lt;br /&gt;
&lt;br /&gt;
=== 4 модуль ===&lt;br /&gt;
&lt;br /&gt;
Назначенные статьи для разбора на занятии:&lt;br /&gt;
* на 25.05; ???: &#039;&#039;Liskov, Cowling&#039;&#039; -- Viewstamped replication revisited ([https://yadi.sk/i/EO37MNowy6Cwv pdf]) + &#039;&#039;Oki, Liskov&#039;&#039; -- Viewstamped replication: a new primary copy method to support highly available distributed systems ([https://yadi.sk/i/5pVDiF7Qy6D3D pdf])&lt;br /&gt;
* на 08.06; ???: &#039;&#039;Ongaro, Ousterhout&#039;&#039; -- In search of understandable consensus algorithm ([https://yadi.sk/i/K5gdY2X2y6EE4 pdf]) + &#039;&#039;Ousterhout&#039;&#039; -- Raft lecture ([https://www.youtube.com/watch?v=YbZ3zDzDnrw video]; 1.0ч)&lt;br /&gt;
&lt;br /&gt;
== Задание 1 ==&lt;br /&gt;
&lt;br /&gt;
Заготовка: https://github.com/sandello/hse-queue-assignment&lt;br /&gt;
&lt;br /&gt;
Дедлайн: 23 апреля 08:00.&lt;br /&gt;
&lt;br /&gt;
Вам необходимо создать файл solution_xxx.cpp (&amp;quot;xxx&amp;quot; замените на вашу фамилию), содержащий реализацию lock-free многопоточной очереди с интерфейсом IQueue; в конце файла определить тип TheQueue. Далее, скомпилировать ваше решение можно с помощью скрипта compile.sh. Решение считается корректным, если скомпилированная программа корректно, без ошибок отрабатывает при запуске с флагом --gtest_repeat=100.&lt;br /&gt;
&lt;br /&gt;
В качестве решения можно реализовать Michael-Scott Queue или очередь с использованием универсальной конструкции из второго модуля.&lt;br /&gt;
&lt;br /&gt;
Ваше решение -- cpp-файл -- присылайте на почту sandello@gmail.com или присылайте ссылку на GH.&lt;br /&gt;
&lt;br /&gt;
== Задание 2 ==&lt;br /&gt;
&lt;br /&gt;
Заготовка: https://github.com/sandello/hse-paxos-assignment&lt;br /&gt;
&lt;br /&gt;
Дедлайн: 4 июня 08:00.&lt;br /&gt;
&lt;br /&gt;
Вам необходимо создать файл solution_xxx.py (&amp;quot;xxx&amp;quot; замените на вашу фамилию), содержащий реализацию процесса распределенного отказоустойчивого write-once key-value хранилища. Write-once значит, что каждый ключ можно записать не более, чем один раз (попытки перезаписи не приводят к изменению значения). Key-value store значит, что хранилище адресует пользовательские строковые данные по пользовательскому строковому ключу. Работа с данными по фиксированному ключу имеет семантику регулярного регистра. Распределенность и отказоустойчивость значат, что операции чтения и записи может обрабатывать любая реплика (экземпляр процесса), и остановка меньшей части реплик не останавливает процесс операций.&lt;br /&gt;
&lt;br /&gt;
В задании предполагается следующая модель разработки: ваш процесс должен наследоваться от класса Process, определенном в файле public.py. Класс Process обладает тремя абстрактными методами: setup, on_tick, on_receive. Метод setup вызывается при инициализации теста и используется для передачи вашему процессу информации об окружении: в частности, о количестве процессов. Метод on_tick вызывается, когда конкретно данному процессу дается квант времени для внутренней работы. Метод on_receive вызывается при доставке данному конкретному процессу сообщения (в качестве сообщения можно использовать любой сериализуемый в json объект). В методы on_tick и on_receive передается контекст (ctx); объект контекста реализует интерфейс Context; контекст можно использовать для получения текущего (логического) времени и для отправки сообщения какому-либо другому процессу. Контекст нельзя сохранять и переиспользовать между разными вызовами on_tick и on_receive.&lt;br /&gt;
&lt;br /&gt;
Такая модель разработки отражает теоретическую модель и позволяет эмулировать отказы и эффекты асинхронности в тестах. Не допускается порождать и использовать фоновые потоки (threads); ваш код должен быть однопоточным. Код тестов взаимодействует с вашим процессом путем отправки специальных сообщений а-ля RPC-запрос. Формат сообщения следующий: &#039;&#039;{&amp;quot;method&amp;quot;: &amp;quot;M&amp;quot;, &amp;quot;request_id&amp;quot;: N, ...}&#039;&#039;. Код тестов отправляет запросы с M=get или M=set и ожидает получить в ответ (спустя некоторое количество шагов) в ответ структуру с ответом, аннотированную request_id.&lt;br /&gt;
&lt;br /&gt;
Более точно, протокол взаимодействия следующий:&lt;br /&gt;
* {&amp;quot;method&amp;quot;: &amp;quot;get&amp;quot;, &amp;quot;request_id&amp;quot;: N, &amp;quot;key&amp;quot;: &amp;quot;K&amp;quot;} -&amp;gt; {&amp;quot;request_id&amp;quot;: N, &amp;quot;value&amp;quot;: &amp;quot;V&amp;quot;} ; запрос на чтение данных по ключу K (строка); в ответ ожидается значение V (строка).&lt;br /&gt;
* {&amp;quot;method&amp;quot;: &amp;quot;set&amp;quot;, &amp;quot;request_id&amp;quot;: N, &amp;quot;key&amp;quot;: &amp;quot;K&amp;quot;, &amp;quot;value&amp;quot;: &amp;quot;V&amp;quot;} -&amp;gt; {&amp;quot;request_id&amp;quot;: N, &amp;quot;value&amp;quot;: &amp;quot;W&amp;quot;, &amp;quot;flag&amp;quot;: &amp;quot;F&amp;quot;} ; запрос на запись данных V (строка) по ключу K (строка); в ответ приходит флаг-индикатор F исхода операции; если флаг истинен, то операция закончилась успешно, и в ячейку по ключу K было действительно сохранено значение V, и в таком случае возвращаемое значение W совпадает с V; если флаг ложен, то по каким-либо причинам операция записи закончилась неуспешно (заполненность ячейки / конкуренция при записи), и возвращается фактическое значение в ячейке W.&lt;br /&gt;
* в тестах чтение ключа K всегда идет строго после какой-либо успешной записи по ключу K.&lt;br /&gt;
&lt;br /&gt;
Для запуска тестов используйте скрипт main.py. Ему необходимо передать путь до вашего класса в формате &amp;quot;МОДУЛЬ.КЛАСС&amp;quot;. К примеру, main.py -i solution_puzyrevskiy_example.GlobalKeyValueStoreProcess. Для отладки передайте ключ -v. &lt;br /&gt;
&lt;br /&gt;
Набор тестов скоро пополнится стресс-тестом. Если вы придумаете хороший, полезный тест, то присылайте PR.&lt;br /&gt;
&lt;br /&gt;
Ваше решение -- cpp-файл -- присылайте на почту sandello@gmail.com или присылайте ссылку на GH.&lt;/div&gt;</summary>
		<author><name>Sandello</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=%D0%9D%D0%98%D0%A1_%D0%A0%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_(3_%D0%BA%D1%83%D1%80%D1%81,_2017)&amp;diff=27911</id>
		<title>НИС Распределенные системы (3 курс, 2017)</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=%D0%9D%D0%98%D0%A1_%D0%A0%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_(3_%D0%BA%D1%83%D1%80%D1%81,_2017)&amp;diff=27911"/>
		<updated>2018-05-19T18:12:42Z</updated>

		<summary type="html">&lt;p&gt;Sandello: /* Задание 2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Информация про семинар ==&lt;br /&gt;
В рамках научно-исследовательского семинара по распределенным системам изучаются основные понятия, принципы и результаты предметной области. &lt;br /&gt;
&lt;br /&gt;
Контакты: [mailto:sandello@gmail.com Пузыревский Иван Витальевич]&lt;br /&gt;
&lt;br /&gt;
Список тем курсовых работ: http://wiki.cs.hse.ru/Темы_для_курсовых_работ_2017_(РС)&lt;br /&gt;
&lt;br /&gt;
=== Оценка ===&lt;br /&gt;
&lt;br /&gt;
* Проверочная работа 1 &amp;lt;= 4 баллов&lt;br /&gt;
* Задание 1 &amp;lt;= 3 баллов&lt;br /&gt;
* Проверочная работа 2 &amp;lt;= 4 баллов&lt;br /&gt;
* Задание 2 &amp;lt;= 3 баллов&lt;br /&gt;
&lt;br /&gt;
Текущая таблица с оценками и ведомостью: https://docs.google.com/spreadsheets/d/16Z74fhT_TnNscsVviU9KU2mVlaMrmX3weQ6ku5jGGbk/edit?usp=sharing&lt;br /&gt;
&lt;br /&gt;
== Занятия ==&lt;br /&gt;
&lt;br /&gt;
=== 1 модуль ===&lt;br /&gt;
&lt;br /&gt;
* Модель распределенных вычислений.&lt;br /&gt;
* Объекты-регистры, типы регистров (bool/int; safe/regular/atomic; single/multi-reader; single/multi-writer).&lt;br /&gt;
* Эквивалентность вычислительной силы SRSW Bool Safe &amp;amp; MRMW Int Atomic.&lt;br /&gt;
* Блокировки (locks). Понятия живости (liveness) и безопасности (safety). Мьютекс Лампорта.&lt;br /&gt;
&lt;br /&gt;
Литература: Herlihy, Shavit -- The Art of Multiprocessor Programming (https://www.dropbox.com/s/s8sssgp95hq5f6q/aompp.pdf?dl=0). Главы 2-4.&lt;br /&gt;
&lt;br /&gt;
=== 2 модуль ===&lt;br /&gt;
&lt;br /&gt;
* Lock-free &amp;amp; wait-free исполнения.&lt;br /&gt;
* Примитив консенсуса. Число консенсуса как характеристика примитивов синхронизации.&lt;br /&gt;
* Универальность консенсуса.&lt;br /&gt;
&lt;br /&gt;
Литература: Herlihy, Shavit -- The Art of Multiprocessor Programming (https://www.dropbox.com/s/s8sssgp95hq5f6q/aompp.pdf?dl=0). Главы 5-6.&lt;br /&gt;
&lt;br /&gt;
Работа над ошибками (всем): задачи 11-19, все; &#039;&#039;&#039;deadline: НИС неделе 15.01-21.01&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== 3 модуль ===&lt;br /&gt;
&lt;br /&gt;
Распределенные алгоритмы. Время, часы, порядок на событиях.&lt;br /&gt;
&lt;br /&gt;
Назначенные статьи для разбора на занятии:&lt;br /&gt;
* на 29.01; Богданова: &#039;&#039;Lamport&#039;&#039; -- Time, clocks and the ordering of events in a distributed system ([https://yadi.sk/i/0cE6EdG5vN5mr pdf])&lt;br /&gt;
* на 29.01; Божко: &#039;&#039;Fidge&#039;&#039; -- Timestamps in message-passing systems that preserve the partial ordering ([https://yadi.sk/i/LyhtLfOMvN64M pdf])&lt;br /&gt;
* на 05.02; Когтенков: &#039;&#039;Mills&#039;&#039; -- Internet time synchronization: the network time protocol ([https://yadi.sk/i/PdXX6TO2vN6Bw pdf])&lt;br /&gt;
&lt;br /&gt;
Литература: Garg -- Elements Of Distributed Computing.&lt;br /&gt;
&lt;br /&gt;
=== 4 модуль ===&lt;br /&gt;
&lt;br /&gt;
Назначенные статьи для разбора на занятии:&lt;br /&gt;
* на 25.05; ???: &#039;&#039;Liskov, Cowling&#039;&#039; -- Viewstamped replication revisited ([https://yadi.sk/i/EO37MNowy6Cwv pdf]) + &#039;&#039;Oki, Liskov&#039;&#039; -- Viewstamped replication: a new primary copy method to support highly available distributed systems ([https://yadi.sk/i/5pVDiF7Qy6D3D pdf])&lt;br /&gt;
* на 08.06; ???: &#039;&#039;Ongaro, Ousterhout&#039;&#039; -- In search of understandable consensus algorithm ([https://yadi.sk/i/K5gdY2X2y6EE4 pdf]) + &#039;&#039;Ousterhout&#039;&#039; -- Raft lecture ([https://www.youtube.com/watch?v=YbZ3zDzDnrw video]; 1.0ч)&lt;br /&gt;
&lt;br /&gt;
== Задание 1 ==&lt;br /&gt;
&lt;br /&gt;
Заготовка: https://github.com/sandello/hse-queue-assignment&lt;br /&gt;
&lt;br /&gt;
Дедлайн: 23 апреля 08:00.&lt;br /&gt;
&lt;br /&gt;
Вам необходимо создать файл solution_xxx.cpp (&amp;quot;xxx&amp;quot; замените на вашу фамилию), содержащий реализацию lock-free многопоточной очереди с интерфейсом IQueue; в конце файла определить тип TheQueue. Далее, скомпилировать ваше решение можно с помощью скрипта compile.sh. Решение считается корректным, если скомпилированная программа корректно, без ошибок отрабатывает при запуске с флагом --gtest_repeat=100.&lt;br /&gt;
&lt;br /&gt;
В качестве решения можно реализовать Michael-Scott Queue или очередь с использованием универсальной конструкции из второго модуля.&lt;br /&gt;
&lt;br /&gt;
Ваше решение -- cpp-файл -- присылайте на почту sandello@gmail.com или присылайте ссылку на GH.&lt;br /&gt;
&lt;br /&gt;
== Задание 2 ==&lt;br /&gt;
&lt;br /&gt;
Заготовка: https://github.com/sandello/hse-paxos-assignment&lt;br /&gt;
&lt;br /&gt;
Дедлайн: 4 июня 08:00.&lt;br /&gt;
&lt;br /&gt;
Вам необходимо создать файл solution_xxx.py (&amp;quot;xxx&amp;quot; замените на вашу фамилию), содержащий реализацию процесса распределенного отказоустойчивого write-once key-value хранилища. Write-once значит, что каждый ключ можно записать не более, чем один раз (попытки перезаписи не приводят к изменению значения). Key-value store значит, что хранилище адресует пользовательские строковые данные по пользовательскому строковому ключу. Работа с данными по фиксированному ключу имеет семантику регулярного регистра. Распределенность и отказоустойчивость значат, что операции чтения и записи может обрабатывать любая реплика (экземпляр процесса), и остановка меньшей части реплик не останавливает процесс операций.&lt;br /&gt;
&lt;br /&gt;
В задании предполагается следующая модель разработки: ваш процесс должен наследоваться от класса Process, определенном в файле public.py. Класс Process обладает тремя абстрактными методами: setup, on_tick, on_receive. Метод setup вызывается при инициализации теста и используется для передачи вашему процессу информации об окружении: в частности, о количестве процессов. Метод on_tick вызывается, когда конкретно данному процессу дается квант времени для внутренней работы. Метод on_receive вызывается при доставке данному конкретному процессу сообщения (в качестве сообщения можно использовать любой сериализуемый в json объект). В методы on_tick и on_receive передается контекст (ctx); объект контекста реализует интерфейс Context; контекст можно использовать для получения текущего (логического) времени и для отправки сообщения какому-либо другому процессу. Контекст нельзя сохранять и переиспользовать между разными вызовами on_tick и on_receive.&lt;br /&gt;
&lt;br /&gt;
Такая модель разработки отражает теоретическую модель и позволяет эмулировать отказы и эффекты асинхронности в тестах. Не допускается порождать и использовать фоновые потоки (threads); ваш код должен быть однопоточным. Код тестов взаимодействует с вашим процессом путем отправки специальных сообщений а-ля RPC-запрос. Формат сообщения следующий: &#039;&#039;{&amp;quot;method&amp;quot;: &amp;quot;M&amp;quot;, &amp;quot;request_id&amp;quot;: N, ...}&#039;&#039;. Код тестов отправляет запросы с M=get или M=set и ожидает получить в ответ (спустя некоторое количество шагов) в ответ структуру с ответом, аннотированную request_id.&lt;br /&gt;
&lt;br /&gt;
Более точно, протокол взаимодействия следующий:&lt;br /&gt;
* {&amp;quot;method&amp;quot;: &amp;quot;get&amp;quot;, &amp;quot;request_id&amp;quot;: N, &amp;quot;key&amp;quot;: &amp;quot;K&amp;quot;} -&amp;gt; {&amp;quot;request_id&amp;quot;: N, &amp;quot;value&amp;quot;: &amp;quot;V&amp;quot;} ; запрос на чтение данных по ключу K (строка); в ответ ожидается значение V (строка).&lt;br /&gt;
* {&amp;quot;method&amp;quot;: &amp;quot;set&amp;quot;, &amp;quot;request_id&amp;quot;: N, &amp;quot;key&amp;quot;: &amp;quot;K&amp;quot;, &amp;quot;value&amp;quot;: &amp;quot;V&amp;quot;} -&amp;gt; {&amp;quot;request_id&amp;quot;: N, &amp;quot;value&amp;quot;: &amp;quot;W&amp;quot;, &amp;quot;flag&amp;quot;: &amp;quot;F&amp;quot;} ; запрос на запись данных V (строка) по ключу K (строка); в ответ приходит флаг-индикатор F исхода операции; если флаг истинен, то операция закончилась успешно, и в ячейку по ключу K было действительно сохранено значение V, и в таком случае возвращаемое значение W совпадает с V; если флаг ложен, то по каким-либо причинам операция записи закончилась неуспешно (заполненность ячейки / конкуренция при записи), и возвращается фактическое значение в ячейке W.&lt;br /&gt;
* в тестах чтение ключа K всегда идет строго после какой-либо успешной записи по ключу K.&lt;br /&gt;
&lt;br /&gt;
Для запуска тестов используйте скрипт main.py. Ему необходимо передать путь до вашего класса в формате &amp;quot;МОДУЛЬ.КЛАСС&amp;quot;. К примеру, main.py -i solution_puzyrevskiy_example.GlobalKeyValueStoreProcess. Для отладки передайте ключ -v. &lt;br /&gt;
&lt;br /&gt;
Набор тестов скоро пополнится стресс-тестом. Если вы придумаете хороший, полезный тест, то присылайте PR.&lt;/div&gt;</summary>
		<author><name>Sandello</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=%D0%9D%D0%98%D0%A1_%D0%A0%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_(3_%D0%BA%D1%83%D1%80%D1%81,_2017)&amp;diff=27910</id>
		<title>НИС Распределенные системы (3 курс, 2017)</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=%D0%9D%D0%98%D0%A1_%D0%A0%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_(3_%D0%BA%D1%83%D1%80%D1%81,_2017)&amp;diff=27910"/>
		<updated>2018-05-19T18:06:19Z</updated>

		<summary type="html">&lt;p&gt;Sandello: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Информация про семинар ==&lt;br /&gt;
В рамках научно-исследовательского семинара по распределенным системам изучаются основные понятия, принципы и результаты предметной области. &lt;br /&gt;
&lt;br /&gt;
Контакты: [mailto:sandello@gmail.com Пузыревский Иван Витальевич]&lt;br /&gt;
&lt;br /&gt;
Список тем курсовых работ: http://wiki.cs.hse.ru/Темы_для_курсовых_работ_2017_(РС)&lt;br /&gt;
&lt;br /&gt;
=== Оценка ===&lt;br /&gt;
&lt;br /&gt;
* Проверочная работа 1 &amp;lt;= 4 баллов&lt;br /&gt;
* Задание 1 &amp;lt;= 3 баллов&lt;br /&gt;
* Проверочная работа 2 &amp;lt;= 4 баллов&lt;br /&gt;
* Задание 2 &amp;lt;= 3 баллов&lt;br /&gt;
&lt;br /&gt;
Текущая таблица с оценками и ведомостью: https://docs.google.com/spreadsheets/d/16Z74fhT_TnNscsVviU9KU2mVlaMrmX3weQ6ku5jGGbk/edit?usp=sharing&lt;br /&gt;
&lt;br /&gt;
== Занятия ==&lt;br /&gt;
&lt;br /&gt;
=== 1 модуль ===&lt;br /&gt;
&lt;br /&gt;
* Модель распределенных вычислений.&lt;br /&gt;
* Объекты-регистры, типы регистров (bool/int; safe/regular/atomic; single/multi-reader; single/multi-writer).&lt;br /&gt;
* Эквивалентность вычислительной силы SRSW Bool Safe &amp;amp; MRMW Int Atomic.&lt;br /&gt;
* Блокировки (locks). Понятия живости (liveness) и безопасности (safety). Мьютекс Лампорта.&lt;br /&gt;
&lt;br /&gt;
Литература: Herlihy, Shavit -- The Art of Multiprocessor Programming (https://www.dropbox.com/s/s8sssgp95hq5f6q/aompp.pdf?dl=0). Главы 2-4.&lt;br /&gt;
&lt;br /&gt;
=== 2 модуль ===&lt;br /&gt;
&lt;br /&gt;
* Lock-free &amp;amp; wait-free исполнения.&lt;br /&gt;
* Примитив консенсуса. Число консенсуса как характеристика примитивов синхронизации.&lt;br /&gt;
* Универальность консенсуса.&lt;br /&gt;
&lt;br /&gt;
Литература: Herlihy, Shavit -- The Art of Multiprocessor Programming (https://www.dropbox.com/s/s8sssgp95hq5f6q/aompp.pdf?dl=0). Главы 5-6.&lt;br /&gt;
&lt;br /&gt;
Работа над ошибками (всем): задачи 11-19, все; &#039;&#039;&#039;deadline: НИС неделе 15.01-21.01&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== 3 модуль ===&lt;br /&gt;
&lt;br /&gt;
Распределенные алгоритмы. Время, часы, порядок на событиях.&lt;br /&gt;
&lt;br /&gt;
Назначенные статьи для разбора на занятии:&lt;br /&gt;
* на 29.01; Богданова: &#039;&#039;Lamport&#039;&#039; -- Time, clocks and the ordering of events in a distributed system ([https://yadi.sk/i/0cE6EdG5vN5mr pdf])&lt;br /&gt;
* на 29.01; Божко: &#039;&#039;Fidge&#039;&#039; -- Timestamps in message-passing systems that preserve the partial ordering ([https://yadi.sk/i/LyhtLfOMvN64M pdf])&lt;br /&gt;
* на 05.02; Когтенков: &#039;&#039;Mills&#039;&#039; -- Internet time synchronization: the network time protocol ([https://yadi.sk/i/PdXX6TO2vN6Bw pdf])&lt;br /&gt;
&lt;br /&gt;
Литература: Garg -- Elements Of Distributed Computing.&lt;br /&gt;
&lt;br /&gt;
=== 4 модуль ===&lt;br /&gt;
&lt;br /&gt;
Назначенные статьи для разбора на занятии:&lt;br /&gt;
* на 25.05; ???: &#039;&#039;Liskov, Cowling&#039;&#039; -- Viewstamped replication revisited ([https://yadi.sk/i/EO37MNowy6Cwv pdf]) + &#039;&#039;Oki, Liskov&#039;&#039; -- Viewstamped replication: a new primary copy method to support highly available distributed systems ([https://yadi.sk/i/5pVDiF7Qy6D3D pdf])&lt;br /&gt;
* на 08.06; ???: &#039;&#039;Ongaro, Ousterhout&#039;&#039; -- In search of understandable consensus algorithm ([https://yadi.sk/i/K5gdY2X2y6EE4 pdf]) + &#039;&#039;Ousterhout&#039;&#039; -- Raft lecture ([https://www.youtube.com/watch?v=YbZ3zDzDnrw video]; 1.0ч)&lt;br /&gt;
&lt;br /&gt;
== Задание 1 ==&lt;br /&gt;
&lt;br /&gt;
Заготовка: https://github.com/sandello/hse-queue-assignment&lt;br /&gt;
&lt;br /&gt;
Дедлайн: 23 апреля 08:00.&lt;br /&gt;
&lt;br /&gt;
Вам необходимо создать файл solution_xxx.cpp (&amp;quot;xxx&amp;quot; замените на вашу фамилию), содержащий реализацию lock-free многопоточной очереди с интерфейсом IQueue; в конце файла определить тип TheQueue. Далее, скомпилировать ваше решение можно с помощью скрипта compile.sh. Решение считается корректным, если скомпилированная программа корректно, без ошибок отрабатывает при запуске с флагом --gtest_repeat=100.&lt;br /&gt;
&lt;br /&gt;
В качестве решения можно реализовать Michael-Scott Queue или очередь с использованием универсальной конструкции из второго модуля.&lt;br /&gt;
&lt;br /&gt;
Ваше решение -- cpp-файл -- присылайте на почту sandello@gmail.com или присылайте ссылку на GH.&lt;br /&gt;
&lt;br /&gt;
== Задание 2 ==&lt;br /&gt;
&lt;br /&gt;
Заготовка: https://github.com/sandello/hse-paxos-assignment&lt;br /&gt;
&lt;br /&gt;
Дедлайн: 4 июня 08:00.&lt;br /&gt;
&lt;br /&gt;
Вам необходимо создать файл solution_xxx.py (&amp;quot;xxx&amp;quot; замените на вашу фамилию), содержащий реализацию write-once key-value store процесса. Write-once значит, что каждый ключ можно записать не более, чем один раз (попытки перезаписи не приводят к изменению значения). Key-value store значит, что хранилище адресует пользовательские строковые данные по пользовательскому строковому ключу.&lt;br /&gt;
&lt;br /&gt;
В задании предполагается следующая модель разработки: ваш процесс должен наследоваться от класса Process, определенном в файле public.py. Класс Process обладает тремя абстрактными методами: setup, on_tick, on_receive. Метод setup вызывается при инициализации теста и используется для передачи вашему процессу информации об окружении: в частности, о количестве процессов. Метод on_tick вызывается, когда конкретно данному процессу дается квант времени для внутренней работы. Метод on_receive вызывается при доставке данному конкретному процессу сообщения (в качестве сообщения можно использовать любой сериализуемый в json объект). В методы on_tick и on_receive передается контекст (ctx); объект контекста реализует интерфейс Context; контекст можно использовать для получения текущего (логического) времени и для отправки сообщения какому-либо другому процессу. Контекст нельзя сохранять и переиспользовать между разными вызовами on_tick и on_receive.&lt;br /&gt;
&lt;br /&gt;
Такая модель разработки отражает используемую в распределенных вычислениях теоретическую модель и позволяет в тестах эмулировать эффекты конкурентности и рандомизировать порядок доставки сообщений. Не допускается порождать и использовать фоновые потоки (threads); ваш код должен быть однопоточным. &lt;br /&gt;
&lt;br /&gt;
Код тестов взаимодействует с вашим процессом путем отправки специальных сообщений а-ля RPC-запрос. Формат сообщения следующий: &#039;&#039;{&amp;quot;method&amp;quot;: &amp;quot;M&amp;quot;, &amp;quot;request_id&amp;quot;: N, ...}&#039;&#039;. Код тестов отправляет запросы с M=get или M=set и ожидает получить в ответ (спустя некоторое количество шагов) в ответ структуру с ответом, аннотированную request_id.&lt;br /&gt;
&lt;br /&gt;
Более точно, протокол взаимодействия следующий:&lt;br /&gt;
* {&amp;quot;method&amp;quot;: &amp;quot;get&amp;quot;, &amp;quot;request_id&amp;quot;: N, &amp;quot;key&amp;quot;: &amp;quot;K&amp;quot;} -&amp;gt; {&amp;quot;request_id&amp;quot;: N, &amp;quot;value&amp;quot;: &amp;quot;V&amp;quot;} ; запрос на чтение данных по ключу K (строка); в ответ ожидается значение V (строка).&lt;br /&gt;
* {&amp;quot;method&amp;quot;: &amp;quot;set&amp;quot;, &amp;quot;request_id&amp;quot;: N, &amp;quot;key&amp;quot;: &amp;quot;K&amp;quot;, &amp;quot;value&amp;quot;: &amp;quot;V&amp;quot;} -&amp;gt; {&amp;quot;request_id&amp;quot;: N, &amp;quot;value&amp;quot;: &amp;quot;W&amp;quot;, &amp;quot;flag&amp;quot;: &amp;quot;F&amp;quot;} ; запрос на запись данных V (строка) по ключу K (строка); в ответ приходит флаг-индикатор F исхода операции; если флаг истинен, то операция закончилась успешно, и в ячейку по ключу K было действительно сохранено значение V, и в таком случае возвращаемое значение W совпадает с V; если флаг ложен, то по каким-либо причинам операция записи закончилась неуспешно (заполненность ячейки / конкуренция при записи), и возвращается фактическое значение в ячейке W.&lt;br /&gt;
* в тестах чтение ключа K всегда идет строго после какой-либо успешной записи по ключу K.&lt;br /&gt;
&lt;br /&gt;
Для запуска тестов используйте скрипт main.py. Ему необходимо передать путь до вашего класса в формате &amp;quot;МОДУЛЬ.КЛАСС&amp;quot;. К примеру, main.py -i solution_puzyrevskiy_example.GlobalKeyValueStoreProcess. Для отладки передайте ключ -v. &lt;br /&gt;
&lt;br /&gt;
Набор тестов скоро пополнится стресс-тестом. Если вы придумаете хороший, полезный тест, то присылайте PR.&lt;/div&gt;</summary>
		<author><name>Sandello</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=%D0%9D%D0%98%D0%A1_%D0%A0%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_(3_%D0%BA%D1%83%D1%80%D1%81,_2017)&amp;diff=27907</id>
		<title>НИС Распределенные системы (3 курс, 2017)</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=%D0%9D%D0%98%D0%A1_%D0%A0%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_(3_%D0%BA%D1%83%D1%80%D1%81,_2017)&amp;diff=27907"/>
		<updated>2018-05-18T11:19:28Z</updated>

		<summary type="html">&lt;p&gt;Sandello: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Информация про семинар ==&lt;br /&gt;
В рамках научно-исследовательского семинара по распределенным системам изучаются основные понятия, принципы и результаты предметной области. &lt;br /&gt;
&lt;br /&gt;
Контакты: [mailto:sandello@gmail.com Пузыревский Иван Витальевич]&lt;br /&gt;
&lt;br /&gt;
Список тем курсовых работ: http://wiki.cs.hse.ru/Темы_для_курсовых_работ_2017_(РС)&lt;br /&gt;
&lt;br /&gt;
=== Оценка ===&lt;br /&gt;
&lt;br /&gt;
* Проверочная работа 1 &amp;lt;= 4 баллов&lt;br /&gt;
* Задание 1 &amp;lt;= 3 баллов&lt;br /&gt;
* Проверочная работа 2 &amp;lt;= 4 баллов&lt;br /&gt;
* Задание 2 &amp;lt;= 3 баллов&lt;br /&gt;
&lt;br /&gt;
Текущая таблица с оценками и ведомостью: https://docs.google.com/spreadsheets/d/16Z74fhT_TnNscsVviU9KU2mVlaMrmX3weQ6ku5jGGbk/edit?usp=sharing&lt;br /&gt;
&lt;br /&gt;
== Занятия ==&lt;br /&gt;
&lt;br /&gt;
=== 1 модуль ===&lt;br /&gt;
&lt;br /&gt;
* Модель распределенных вычислений.&lt;br /&gt;
* Объекты-регистры, типы регистров (bool/int; safe/regular/atomic; single/multi-reader; single/multi-writer).&lt;br /&gt;
* Эквивалентность вычислительной силы SRSW Bool Safe &amp;amp; MRMW Int Atomic.&lt;br /&gt;
* Блокировки (locks). Понятия живости (liveness) и безопасности (safety). Мьютекс Лампорта.&lt;br /&gt;
&lt;br /&gt;
Литература: Herlihy, Shavit -- The Art of Multiprocessor Programming (https://www.dropbox.com/s/s8sssgp95hq5f6q/aompp.pdf?dl=0). Главы 2-4.&lt;br /&gt;
&lt;br /&gt;
=== 2 модуль ===&lt;br /&gt;
&lt;br /&gt;
* Lock-free &amp;amp; wait-free исполнения.&lt;br /&gt;
* Примитив консенсуса. Число консенсуса как характеристика примитивов синхронизации.&lt;br /&gt;
* Универальность консенсуса.&lt;br /&gt;
&lt;br /&gt;
Литература: Herlihy, Shavit -- The Art of Multiprocessor Programming (https://www.dropbox.com/s/s8sssgp95hq5f6q/aompp.pdf?dl=0). Главы 5-6.&lt;br /&gt;
&lt;br /&gt;
Работа над ошибками (всем): задачи 11-19, все; &#039;&#039;&#039;deadline: НИС неделе 15.01-21.01&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== 3 модуль ===&lt;br /&gt;
&lt;br /&gt;
Распределенные алгоритмы. Время, часы, порядок на событиях.&lt;br /&gt;
&lt;br /&gt;
Назначенные статьи для разбора на занятии:&lt;br /&gt;
* на 29.01; Богданова: &#039;&#039;Lamport&#039;&#039; -- Time, clocks and the ordering of events in a distributed system ([https://yadi.sk/i/0cE6EdG5vN5mr pdf])&lt;br /&gt;
* на 29.01; Божко: &#039;&#039;Fidge&#039;&#039; -- Timestamps in message-passing systems that preserve the partial ordering ([https://yadi.sk/i/LyhtLfOMvN64M pdf])&lt;br /&gt;
* на 05.02; Когтенков: &#039;&#039;Mills&#039;&#039; -- Internet time synchronization: the network time protocol ([https://yadi.sk/i/PdXX6TO2vN6Bw pdf])&lt;br /&gt;
&lt;br /&gt;
Литература: Garg -- Elements Of Distributed Computing.&lt;br /&gt;
&lt;br /&gt;
=== 4 модуль ===&lt;br /&gt;
&lt;br /&gt;
Назначенные статьи для разбора на занятии:&lt;br /&gt;
* на 25.05; ???: &#039;&#039;Liskov, Cowling&#039;&#039; -- Viewstamped replication revisited ([https://yadi.sk/i/EO37MNowy6Cwv pdf]) + &#039;&#039;Oki, Liskov&#039;&#039; -- Viewstamped replication: a new primary copy method to support highly available distributed systems ([https://yadi.sk/i/5pVDiF7Qy6D3D pdf])&lt;br /&gt;
* на 08.06; ???: &#039;&#039;Ongaro, Ousterhout&#039;&#039; -- In search of understandable consensus algorithm ([https://yadi.sk/i/K5gdY2X2y6EE4 pdf]) + &#039;&#039;Ousterhout&#039;&#039; -- Raft lecture ([https://www.youtube.com/watch?v=YbZ3zDzDnrw video]; 1.0ч)&lt;br /&gt;
&lt;br /&gt;
== Задание 1 ==&lt;br /&gt;
&lt;br /&gt;
Заготовка: https://github.com/sandello/hse-queue-assignment&lt;br /&gt;
&lt;br /&gt;
Дедлайн: 23 апреля 08:00.&lt;br /&gt;
&lt;br /&gt;
Вам необходимо создать файл solution_xxx.cpp (&amp;quot;xxx&amp;quot; замените на вашу фамилию), содержащий реализацию lock-free многопоточной очереди с интерфейсом IQueue; в конце файла определить тип TheQueue. Далее, скомпилировать ваше решение можно с помощью скрипта compile.sh. Решение считается корректным, если скомпилированная программа корректно, без ошибок отрабатывает при запуске с флагом --gtest_repeat=100.&lt;br /&gt;
&lt;br /&gt;
В качестве решения можно реализовать Michael-Scott Queue или очередь с использованием универсальной конструкции из второго модуля.&lt;br /&gt;
&lt;br /&gt;
Ваше решение -- cpp-файл -- присылайте на почту sandello@gmail.com или присылайте ссылку на GH.&lt;br /&gt;
&lt;br /&gt;
== Задание 2 ==&lt;br /&gt;
TBA.&lt;/div&gt;</summary>
		<author><name>Sandello</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=%D0%9D%D0%98%D0%A1_%D0%A0%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_(3_%D0%BA%D1%83%D1%80%D1%81,_2017)&amp;diff=27906</id>
		<title>НИС Распределенные системы (3 курс, 2017)</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=%D0%9D%D0%98%D0%A1_%D0%A0%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_(3_%D0%BA%D1%83%D1%80%D1%81,_2017)&amp;diff=27906"/>
		<updated>2018-05-18T11:19:11Z</updated>

		<summary type="html">&lt;p&gt;Sandello: /* Занятия */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Информация про семинар ==&lt;br /&gt;
В рамках научно-исследовательского семинара по распределенным системам изучаются основные понятия, принципы и результаты предметной области. &lt;br /&gt;
&lt;br /&gt;
Контакты: [mailto:sandello@gmail.com Пузыревский Иван Витальевич]&lt;br /&gt;
&lt;br /&gt;
Список тем курсовых работ: http://wiki.cs.hse.ru/Темы_для_курсовых_работ_2017_(РС)&lt;br /&gt;
&lt;br /&gt;
=== Оценка ===&lt;br /&gt;
&lt;br /&gt;
* Проверочная работа 1 &amp;lt;= 4 баллов&lt;br /&gt;
* Задание 1 &amp;lt;= 3 баллов&lt;br /&gt;
* Проверочная работа 2 &amp;lt;= 4 баллов&lt;br /&gt;
* Задание 2 &amp;lt;= 3 баллов&lt;br /&gt;
&lt;br /&gt;
Текущая таблица с оценками и ведомостью: https://docs.google.com/spreadsheets/d/16Z74fhT_TnNscsVviU9KU2mVlaMrmX3weQ6ku5jGGbk/edit?usp=sharing&lt;br /&gt;
&lt;br /&gt;
== Занятия ==&lt;br /&gt;
&lt;br /&gt;
=== 1 модуль ===&lt;br /&gt;
&lt;br /&gt;
* Модель распределенных вычислений.&lt;br /&gt;
* Объекты-регистры, типы регистров (bool/int; safe/regular/atomic; single/multi-reader; single/multi-writer).&lt;br /&gt;
* Эквивалентность вычислительной силы SRSW Bool Safe &amp;amp; MRMW Int Atomic.&lt;br /&gt;
* Блокировки (locks). Понятия живости (liveness) и безопасности (safety). Мьютекс Лампорта.&lt;br /&gt;
&lt;br /&gt;
Литература: Herlihy, Shavit -- The Art of Multiprocessor Programming (https://www.dropbox.com/s/s8sssgp95hq5f6q/aompp.pdf?dl=0). Главы 2-4.&lt;br /&gt;
&lt;br /&gt;
=== 2 модуль ===&lt;br /&gt;
&lt;br /&gt;
* Lock-free &amp;amp; wait-free исполнения.&lt;br /&gt;
* Примитив консенсуса. Число консенсуса как характеристика примитивов синхронизации.&lt;br /&gt;
* Универальность консенсуса.&lt;br /&gt;
&lt;br /&gt;
Литература: Herlihy, Shavit -- The Art of Multiprocessor Programming (https://www.dropbox.com/s/s8sssgp95hq5f6q/aompp.pdf?dl=0). Главы 5-6.&lt;br /&gt;
&lt;br /&gt;
Работа над ошибками (всем): задачи 11-19, все; &#039;&#039;&#039;deadline: НИС неделе 15.01-21.01&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== 3 модуль ===&lt;br /&gt;
&lt;br /&gt;
Распределенные алгоритмы. Время, часы, порядок на событиях.&lt;br /&gt;
&lt;br /&gt;
Назначенные статьи для разбора на занятии:&lt;br /&gt;
* на 29.01; Богданова: &#039;&#039;Lamport&#039;&#039; -- Time, clocks and the ordering of events in a distributed system ([https://yadi.sk/i/0cE6EdG5vN5mr pdf])&lt;br /&gt;
* на 29.01; Божко: &#039;&#039;Fidge&#039;&#039; -- Timestamps in message-passing systems that preserve the partial ordering ([https://yadi.sk/i/LyhtLfOMvN64M pdf])&lt;br /&gt;
* на 05.02; Когтенков: &#039;&#039;Mills&#039;&#039; -- Internet time synchronization: the network time protocol ([https://yadi.sk/i/PdXX6TO2vN6Bw pdf])&lt;br /&gt;
&lt;br /&gt;
Литература: Garg -- Elements Of Distributed Computing.&lt;br /&gt;
&lt;br /&gt;
=== 4 модуль ===&lt;br /&gt;
&lt;br /&gt;
Назначенные статьи для разбора на занятии:&lt;br /&gt;
* на 25.05; ???: &#039;&#039;Liskov, Cowling&#039;&#039; -- Viewstamped replication revisited ([https://yadi.sk/i/EO37MNowy6Cwv pdf]) + &#039;&#039;Oki, Liskov&#039;&#039; -- Viewstamped replication: a new primary copy method to support highly available distributed systems ([https://yadi.sk/i/5pVDiF7Qy6D3D pdf])&lt;br /&gt;
* на 08.06; ???: &#039;&#039;Ongaro, Ousterhout&#039;&#039; -- In search of understandable consensus algorithm ([https://yadi.sk/i/K5gdY2X2y6EE4 pdf]) + &#039;&#039;Ousterhout&#039;&#039; -- Raft lecture ([https://www.youtube.com/watch?v=YbZ3zDzDnrw video]; 1.0ч)&lt;br /&gt;
&lt;br /&gt;
== Задание 1 ==&lt;br /&gt;
&lt;br /&gt;
Заготовка: https://github.com/sandello/hse-queue-assignment&lt;br /&gt;
&lt;br /&gt;
Дедлайн: 23 апреля 08:00.&lt;br /&gt;
&lt;br /&gt;
Вам необходимо создать файл solution_xxx.cpp (&amp;quot;xxx&amp;quot; замените на вашу фамилию), содержащий реализацию lock-free многопоточной очереди с интерфейсом IQueue; в конце файла определить тип TheQueue. Далее, скомпилировать ваше решение можно с помощью скрипта compile.sh. Решение считается корректным, если скомпилированная программа корректно, без ошибок отрабатывает при запуске с флагом --gtest_repeat=100.&lt;br /&gt;
&lt;br /&gt;
В качестве решения можно реализовать Michael-Scott Queue или очередь с использованием универсальной конструкции из второго модуля.&lt;br /&gt;
&lt;br /&gt;
Ваше решение -- cpp-файл -- присылайте на почту sandello@gmail.com или присылайте ссылку на GH.&lt;/div&gt;</summary>
		<author><name>Sandello</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=%D0%9D%D0%98%D0%A1_%D0%A0%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_(3_%D0%BA%D1%83%D1%80%D1%81,_2017)&amp;diff=27477</id>
		<title>НИС Распределенные системы (3 курс, 2017)</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=%D0%9D%D0%98%D0%A1_%D0%A0%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_(3_%D0%BA%D1%83%D1%80%D1%81,_2017)&amp;diff=27477"/>
		<updated>2018-04-06T12:23:48Z</updated>

		<summary type="html">&lt;p&gt;Sandello: /* Задание 1 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Информация про семинар ==&lt;br /&gt;
В рамках научно-исследовательского семинара по распределенным системам изучаются основные понятия, принципы и результаты предметной области. &lt;br /&gt;
&lt;br /&gt;
Контакты: [mailto:sandello@gmail.com Пузыревский Иван Витальевич]&lt;br /&gt;
&lt;br /&gt;
Список тем курсовых работ: http://wiki.cs.hse.ru/Темы_для_курсовых_работ_2017_(РС)&lt;br /&gt;
&lt;br /&gt;
=== Оценка ===&lt;br /&gt;
&lt;br /&gt;
* Проверочная работа 1 &amp;lt;= 4 баллов&lt;br /&gt;
* Задание 1 &amp;lt;= 3 баллов&lt;br /&gt;
* Проверочная работа 2 &amp;lt;= 4 баллов&lt;br /&gt;
* Задание 2 &amp;lt;= 3 баллов&lt;br /&gt;
&lt;br /&gt;
Текущая таблица с оценками и ведомостью: https://docs.google.com/spreadsheets/d/16Z74fhT_TnNscsVviU9KU2mVlaMrmX3weQ6ku5jGGbk/edit?usp=sharing&lt;br /&gt;
&lt;br /&gt;
== Занятия ==&lt;br /&gt;
&lt;br /&gt;
=== 1 модуль ===&lt;br /&gt;
&lt;br /&gt;
* Модель распределенных вычислений.&lt;br /&gt;
* Объекты-регистры, типы регистров (bool/int; safe/regular/atomic; single/multi-reader; single/multi-writer).&lt;br /&gt;
* Эквивалентность вычислительной силы SRSW Bool Safe &amp;amp; MRMW Int Atomic.&lt;br /&gt;
* Блокировки (locks). Понятия живости (liveness) и безопасности (safety). Мьютекс Лампорта.&lt;br /&gt;
&lt;br /&gt;
Литература: Herlihy, Shavit -- The Art of Multiprocessor Programming (https://www.dropbox.com/s/s8sssgp95hq5f6q/aompp.pdf?dl=0). Главы 2-4.&lt;br /&gt;
&lt;br /&gt;
=== 2 модуль ===&lt;br /&gt;
&lt;br /&gt;
* Lock-free &amp;amp; wait-free исполнения.&lt;br /&gt;
* Примитив консенсуса. Число консенсуса как характеристика примитивов синхронизации.&lt;br /&gt;
* Универальность консенсуса.&lt;br /&gt;
&lt;br /&gt;
Литература: Herlihy, Shavit -- The Art of Multiprocessor Programming (https://www.dropbox.com/s/s8sssgp95hq5f6q/aompp.pdf?dl=0). Главы 5-6.&lt;br /&gt;
&lt;br /&gt;
Работа над ошибками (всем): задачи 11-19, все; &#039;&#039;&#039;deadline: НИС неделе 15.01-21.01&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== 3 модуль ===&lt;br /&gt;
&lt;br /&gt;
Распределенные алгоритмы. Время, часы, порядок на событиях.&lt;br /&gt;
&lt;br /&gt;
Назначенные статьи для разбора на занятии:&lt;br /&gt;
* на 29.01; Богданова: &#039;&#039;Lamport&#039;&#039; -- Time, clocks and the ordering of events in a distributed system ([https://yadi.sk/i/0cE6EdG5vN5mr pdf])&lt;br /&gt;
* на 29.01; Божко: &#039;&#039;Fidge&#039;&#039; -- Timestamps in message-passing systems that preserve the partial ordering ([https://yadi.sk/i/LyhtLfOMvN64M pdf])&lt;br /&gt;
* на 05.02; Когтенков: &#039;&#039;Mills&#039;&#039; -- Internet time synchronization: the network time protocol ([https://yadi.sk/i/PdXX6TO2vN6Bw pdf])&lt;br /&gt;
&lt;br /&gt;
Литература: Garg -- Elements Of Distributed Computing.&lt;br /&gt;
&lt;br /&gt;
== Задание 1 ==&lt;br /&gt;
&lt;br /&gt;
Заготовка: https://github.com/sandello/hse-queue-assignment&lt;br /&gt;
&lt;br /&gt;
Дедлайн: 23 апреля 08:00.&lt;br /&gt;
&lt;br /&gt;
Вам необходимо создать файл solution_xxx.cpp (&amp;quot;xxx&amp;quot; замените на вашу фамилию), содержащий реализацию lock-free многопоточной очереди с интерфейсом IQueue; в конце файла определить тип TheQueue. Далее, скомпилировать ваше решение можно с помощью скрипта compile.sh. Решение считается корректным, если скомпилированная программа корректно, без ошибок отрабатывает при запуске с флагом --gtest_repeat=100.&lt;br /&gt;
&lt;br /&gt;
В качестве решения можно реализовать Michael-Scott Queue или очередь с использованием универсальной конструкции из второго модуля.&lt;br /&gt;
&lt;br /&gt;
Ваше решение -- cpp-файл -- присылайте на почту sandello@gmail.com или присылайте ссылку на GH.&lt;/div&gt;</summary>
		<author><name>Sandello</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=%D0%9D%D0%98%D0%A1_%D0%A0%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_(3_%D0%BA%D1%83%D1%80%D1%81,_2017)&amp;diff=27476</id>
		<title>НИС Распределенные системы (3 курс, 2017)</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=%D0%9D%D0%98%D0%A1_%D0%A0%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_(3_%D0%BA%D1%83%D1%80%D1%81,_2017)&amp;diff=27476"/>
		<updated>2018-04-06T12:16:14Z</updated>

		<summary type="html">&lt;p&gt;Sandello: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Информация про семинар ==&lt;br /&gt;
В рамках научно-исследовательского семинара по распределенным системам изучаются основные понятия, принципы и результаты предметной области. &lt;br /&gt;
&lt;br /&gt;
Контакты: [mailto:sandello@gmail.com Пузыревский Иван Витальевич]&lt;br /&gt;
&lt;br /&gt;
Список тем курсовых работ: http://wiki.cs.hse.ru/Темы_для_курсовых_работ_2017_(РС)&lt;br /&gt;
&lt;br /&gt;
=== Оценка ===&lt;br /&gt;
&lt;br /&gt;
* Проверочная работа 1 &amp;lt;= 4 баллов&lt;br /&gt;
* Задание 1 &amp;lt;= 3 баллов&lt;br /&gt;
* Проверочная работа 2 &amp;lt;= 4 баллов&lt;br /&gt;
* Задание 2 &amp;lt;= 3 баллов&lt;br /&gt;
&lt;br /&gt;
Текущая таблица с оценками и ведомостью: https://docs.google.com/spreadsheets/d/16Z74fhT_TnNscsVviU9KU2mVlaMrmX3weQ6ku5jGGbk/edit?usp=sharing&lt;br /&gt;
&lt;br /&gt;
== Занятия ==&lt;br /&gt;
&lt;br /&gt;
=== 1 модуль ===&lt;br /&gt;
&lt;br /&gt;
* Модель распределенных вычислений.&lt;br /&gt;
* Объекты-регистры, типы регистров (bool/int; safe/regular/atomic; single/multi-reader; single/multi-writer).&lt;br /&gt;
* Эквивалентность вычислительной силы SRSW Bool Safe &amp;amp; MRMW Int Atomic.&lt;br /&gt;
* Блокировки (locks). Понятия живости (liveness) и безопасности (safety). Мьютекс Лампорта.&lt;br /&gt;
&lt;br /&gt;
Литература: Herlihy, Shavit -- The Art of Multiprocessor Programming (https://www.dropbox.com/s/s8sssgp95hq5f6q/aompp.pdf?dl=0). Главы 2-4.&lt;br /&gt;
&lt;br /&gt;
=== 2 модуль ===&lt;br /&gt;
&lt;br /&gt;
* Lock-free &amp;amp; wait-free исполнения.&lt;br /&gt;
* Примитив консенсуса. Число консенсуса как характеристика примитивов синхронизации.&lt;br /&gt;
* Универальность консенсуса.&lt;br /&gt;
&lt;br /&gt;
Литература: Herlihy, Shavit -- The Art of Multiprocessor Programming (https://www.dropbox.com/s/s8sssgp95hq5f6q/aompp.pdf?dl=0). Главы 5-6.&lt;br /&gt;
&lt;br /&gt;
Работа над ошибками (всем): задачи 11-19, все; &#039;&#039;&#039;deadline: НИС неделе 15.01-21.01&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== 3 модуль ===&lt;br /&gt;
&lt;br /&gt;
Распределенные алгоритмы. Время, часы, порядок на событиях.&lt;br /&gt;
&lt;br /&gt;
Назначенные статьи для разбора на занятии:&lt;br /&gt;
* на 29.01; Богданова: &#039;&#039;Lamport&#039;&#039; -- Time, clocks and the ordering of events in a distributed system ([https://yadi.sk/i/0cE6EdG5vN5mr pdf])&lt;br /&gt;
* на 29.01; Божко: &#039;&#039;Fidge&#039;&#039; -- Timestamps in message-passing systems that preserve the partial ordering ([https://yadi.sk/i/LyhtLfOMvN64M pdf])&lt;br /&gt;
* на 05.02; Когтенков: &#039;&#039;Mills&#039;&#039; -- Internet time synchronization: the network time protocol ([https://yadi.sk/i/PdXX6TO2vN6Bw pdf])&lt;br /&gt;
&lt;br /&gt;
Литература: Garg -- Elements Of Distributed Computing.&lt;br /&gt;
&lt;br /&gt;
== Задание 1 ==&lt;br /&gt;
&lt;br /&gt;
Заготовка: http://wiki.cs.hse.ru/НИС_Распределенные_системы_(3_курс,_2017)&lt;br /&gt;
&lt;br /&gt;
Дедлайн: 23 апреля 08:00.&lt;br /&gt;
&lt;br /&gt;
Вам необходимо создать файл solution_xxx.cpp (&amp;quot;xxx&amp;quot; замените на вашу фамилию), содержащий реализацию lock-free многопоточной очереди с интерфейсом IQueue; в конце файла определить тип TheQueue. Далее, скомпилировать ваше решение можно с помощью скрипта compile.sh. Решение считается корректным, если скомпилированная программа корректно, без ошибок отрабатывает при запуске с флагом --gtest_repeat=100.&lt;br /&gt;
&lt;br /&gt;
В качестве решения можно реализовать Michael-Scott Queue или очередь с использованием универсальной конструкции из второго модуля.&lt;br /&gt;
&lt;br /&gt;
Ваше решение -- cpp-файл -- присылайте на почту sandello@gmail.com или присылайте ссылку на GH.&lt;/div&gt;</summary>
		<author><name>Sandello</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=%D0%9D%D0%98%D0%A1_%D0%A0%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_(4_%D0%BA%D1%83%D1%80%D1%81,_2017)&amp;diff=27046</id>
		<title>НИС Распределенные системы (4 курс, 2017)</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=%D0%9D%D0%98%D0%A1_%D0%A0%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_(4_%D0%BA%D1%83%D1%80%D1%81,_2017)&amp;diff=27046"/>
		<updated>2018-02-22T13:06:34Z</updated>

		<summary type="html">&lt;p&gt;Sandello: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Информация про семинар ==&lt;br /&gt;
В рамках научно-исследовательского семинара по распределенным системам изучаются основные понятия, принципы и результаты предметной области. &lt;br /&gt;
&lt;br /&gt;
Контакты: [mailto:sandello@gmail.com Пузыревский Иван Витальевич]&lt;br /&gt;
&lt;br /&gt;
Список тем курсовых работ: http://wiki.cs.hse.ru/Темы_для_курсовых_работ_2017_(РС)&lt;br /&gt;
&lt;br /&gt;
== Оценка ==&lt;br /&gt;
&lt;br /&gt;
Текущая таблица с оценками, ведомостью и заданиями: https://docs.google.com/spreadsheets/d/1YnHTdQ3RvAfMdMk2PMUYac1jM71-ApJBoWvB4w_Qkrc/edit?usp=sharing&lt;br /&gt;
&lt;br /&gt;
Оценка формируется как 0.3*участие + 0.4*игра + 0.3*проверочная.&lt;br /&gt;
&lt;br /&gt;
=== Участие ===&lt;br /&gt;
Участие -- выступление с докладом/разбором статьи на семинаре. Учёт всех докладов есть в табличке.&lt;br /&gt;
&lt;br /&gt;
=== Игра на BlockChain ===&lt;br /&gt;
&lt;br /&gt;
Нужно до &#039;&#039;&#039;5 марта&#039;&#039;&#039; (жесткий, крайний срок) сдать игру поверх blockchain. Требования:&lt;br /&gt;
* игра должна быть отдельным приложением, а не кодом внутри remix;&lt;br /&gt;
* в архиве с игрой должна быть инструкция по запуску и использованию; можно предоставить docker-контейнер;&lt;br /&gt;
* у игры должен быть интерфейс (текстовый, веб или графический); через интерфейс должно быть возможно играть (то есть начинать новую игру, делать ходы, видеть состояние, результаты).&lt;br /&gt;
&lt;br /&gt;
Материалы:&lt;br /&gt;
* &#039;&#039;Solidity online IDE&#039;&#039; - http://remix.ethereum.org/&lt;br /&gt;
* &#039;&#039;Private testnet&#039;&#039; - https://souptacular.gitbooks.io/ethereum-tutorials-and-tips-by-hudson/content/private-chain.html&lt;br /&gt;
* &#039;&#039;Solidity from Python&#039;&#039; - http://ecomunsing.com/tutorial-controlling-ethereum-with-python&lt;br /&gt;
* &#039;&#039;Код с семинара&#039;&#039; - http://bit.ly/2wzqu0q&lt;br /&gt;
&lt;br /&gt;
Игру присылать на почту sandello@gmail.com , в теме письма укажите &amp;quot;ПМИ 145 НИС - &amp;lt;Фамилия Имя&amp;gt; - Игра&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Проверочная&lt;br /&gt;
&lt;br /&gt;
Будет на семинаре 5-го марта по главам 2-6 книги https://www.dropbox.com/s/s8sssgp95hq5f6q/aompp.pdf .&lt;/div&gt;</summary>
		<author><name>Sandello</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=%D0%9D%D0%98%D0%A1_%D0%A0%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_(3_%D0%BA%D1%83%D1%80%D1%81,_2017)&amp;diff=27034</id>
		<title>НИС Распределенные системы (3 курс, 2017)</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=%D0%9D%D0%98%D0%A1_%D0%A0%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_(3_%D0%BA%D1%83%D1%80%D1%81,_2017)&amp;diff=27034"/>
		<updated>2018-02-21T08:57:37Z</updated>

		<summary type="html">&lt;p&gt;Sandello: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Информация про семинар ==&lt;br /&gt;
В рамках научно-исследовательского семинара по распределенным системам изучаются основные понятия, принципы и результаты предметной области. &lt;br /&gt;
&lt;br /&gt;
Контакты: [mailto:sandello@gmail.com Пузыревский Иван Витальевич]&lt;br /&gt;
&lt;br /&gt;
Список тем курсовых работ: http://wiki.cs.hse.ru/Темы_для_курсовых_работ_2017_(РС)&lt;br /&gt;
&lt;br /&gt;
=== Оценка ===&lt;br /&gt;
&lt;br /&gt;
* Проверочная работа 1 &amp;lt;= 4 баллов&lt;br /&gt;
* Задание 1 &amp;lt;= 3 баллов&lt;br /&gt;
* Проверочная работа 2 &amp;lt;= 4 баллов&lt;br /&gt;
* Задание 2 &amp;lt;= 3 баллов&lt;br /&gt;
&lt;br /&gt;
Текущая таблица с оценками и ведомостью: https://docs.google.com/spreadsheets/d/16Z74fhT_TnNscsVviU9KU2mVlaMrmX3weQ6ku5jGGbk/edit?usp=sharing&lt;br /&gt;
&lt;br /&gt;
== Занятия ==&lt;br /&gt;
&lt;br /&gt;
=== 1 модуль ===&lt;br /&gt;
&lt;br /&gt;
* Модель распределенных вычислений.&lt;br /&gt;
* Объекты-регистры, типы регистров (bool/int; safe/regular/atomic; single/multi-reader; single/multi-writer).&lt;br /&gt;
* Эквивалентность вычислительной силы SRSW Bool Safe &amp;amp; MRMW Int Atomic.&lt;br /&gt;
* Блокировки (locks). Понятия живости (liveness) и безопасности (safety). Мьютекс Лампорта.&lt;br /&gt;
&lt;br /&gt;
Литература: Herlihy, Shavit -- The Art of Multiprocessor Programming (https://www.dropbox.com/s/s8sssgp95hq5f6q/aompp.pdf?dl=0). Главы 2-4.&lt;br /&gt;
&lt;br /&gt;
=== 2 модуль ===&lt;br /&gt;
&lt;br /&gt;
* Lock-free &amp;amp; wait-free исполнения.&lt;br /&gt;
* Примитив консенсуса. Число консенсуса как характеристика примитивов синхронизации.&lt;br /&gt;
* Универальность консенсуса.&lt;br /&gt;
&lt;br /&gt;
Литература: Herlihy, Shavit -- The Art of Multiprocessor Programming (https://www.dropbox.com/s/s8sssgp95hq5f6q/aompp.pdf?dl=0). Главы 5-6.&lt;br /&gt;
&lt;br /&gt;
Работа над ошибками (всем): задачи 11-19, все; &#039;&#039;&#039;deadline: НИС неделе 15.01-21.01&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== 3 модуль ===&lt;br /&gt;
&lt;br /&gt;
Распределенные алгоритмы. Время, часы, порядок на событиях.&lt;br /&gt;
&lt;br /&gt;
Назначенные статьи для разбора на занятии:&lt;br /&gt;
* на 29.01; Богданова: &#039;&#039;Lamport&#039;&#039; -- Time, clocks and the ordering of events in a distributed system ([https://yadi.sk/i/0cE6EdG5vN5mr pdf])&lt;br /&gt;
* на 29.01; Божко: &#039;&#039;Fidge&#039;&#039; -- Timestamps in message-passing systems that preserve the partial ordering ([https://yadi.sk/i/LyhtLfOMvN64M pdf])&lt;br /&gt;
* на 05.02; Когтенков: &#039;&#039;Mills&#039;&#039; -- Internet time synchronization: the network time protocol ([https://yadi.sk/i/PdXX6TO2vN6Bw pdf])&lt;br /&gt;
&lt;br /&gt;
Литература: Garg -- Elements Of Distributed Computing.&lt;/div&gt;</summary>
		<author><name>Sandello</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=%D0%9D%D0%98%D0%A1_%D0%A0%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_(3_%D0%BA%D1%83%D1%80%D1%81,_2017)&amp;diff=26687</id>
		<title>НИС Распределенные системы (3 курс, 2017)</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=%D0%9D%D0%98%D0%A1_%D0%A0%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_(3_%D0%BA%D1%83%D1%80%D1%81,_2017)&amp;diff=26687"/>
		<updated>2018-01-22T12:05:43Z</updated>

		<summary type="html">&lt;p&gt;Sandello: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Информация про семинар ==&lt;br /&gt;
В рамках научно-исследовательского семинара по распределенным системам изучаются основные понятия, принципы и результаты предметной области. &lt;br /&gt;
&lt;br /&gt;
Контакты: [mailto:sandello@gmail.com Пузыревский Иван Витальевич]&lt;br /&gt;
&lt;br /&gt;
Список тем курсовых работ: http://wiki.cs.hse.ru/Темы_для_курсовых_работ_2017_(РС)&lt;br /&gt;
&lt;br /&gt;
=== Оценка ===&lt;br /&gt;
&lt;br /&gt;
* Проверочная работа 1 &amp;lt;= 4 баллов&lt;br /&gt;
* Задание 1 &amp;lt;= 3 баллов&lt;br /&gt;
* Проверочная работа 2 &amp;lt;= 4 баллов&lt;br /&gt;
* Задание 2 &amp;lt;= 3 баллов&lt;br /&gt;
&lt;br /&gt;
Текущая таблица с оценками и ведомостью: https://docs.google.com/spreadsheets/d/16Z74fhT_TnNscsVviU9KU2mVlaMrmX3weQ6ku5jGGbk/edit?usp=sharing&lt;br /&gt;
&lt;br /&gt;
== Занятия ==&lt;br /&gt;
&lt;br /&gt;
=== 1 модуль ===&lt;br /&gt;
&lt;br /&gt;
* Модель распределенных вычислений.&lt;br /&gt;
* Объекты-регистры, типы регистров (bool/int; safe/regular/atomic; single/multi-reader; single/multi-writer).&lt;br /&gt;
* Эквивалентность вычислительной силы SRSW Bool Safe &amp;amp; MRMW Int Atomic.&lt;br /&gt;
* Блокировки (locks). Понятия живости (liveness) и безопасности (safety). Мьютекс Лампорта.&lt;br /&gt;
&lt;br /&gt;
Литература: Herlihy, Shavit -- The Art of Multiprocessor Programming (https://www.dropbox.com/s/s8sssgp95hq5f6q/aompp.pdf?dl=0). Главы 2-4.&lt;br /&gt;
&lt;br /&gt;
=== 2 модуль ===&lt;br /&gt;
&lt;br /&gt;
* Lock-free &amp;amp; wait-free исполнения.&lt;br /&gt;
* Примитив консенсуса. Число консенсуса как характеристика примитивов синхронизации.&lt;br /&gt;
* Универальность консенсуса.&lt;br /&gt;
&lt;br /&gt;
Литература: Herlihy, Shavit -- The Art of Multiprocessor Programming (https://www.dropbox.com/s/s8sssgp95hq5f6q/aompp.pdf?dl=0). Главы 5-6.&lt;br /&gt;
&lt;br /&gt;
Проверочная работа: https://yadi.sk/i/8FSZSlli3QiJAc&lt;br /&gt;
&lt;br /&gt;
Работа над ошибками (всем): задачи 11-19, все; &#039;&#039;&#039;deadline: НИС неделе 15.01-21.01&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== 3 модуль ===&lt;br /&gt;
&lt;br /&gt;
Распределенные алгоритмы. Время, часы, порядок на событиях.&lt;br /&gt;
&lt;br /&gt;
Назначенные статьи для разбора на занятии:&lt;br /&gt;
* на 29.01; Богданова: &#039;&#039;Lamport&#039;&#039; -- Time, clocks and the ordering of events in a distributed system ([https://yadi.sk/i/0cE6EdG5vN5mr pdf])&lt;br /&gt;
* на 29.01; Божко: &#039;&#039;Fidge&#039;&#039; -- Timestamps in message-passing systems that preserve the partial ordering ([https://yadi.sk/i/LyhtLfOMvN64M pdf])&lt;br /&gt;
* на 05.02; Когтенков: &#039;&#039;Mills&#039;&#039; -- Internet time synchronization: the network time protocol ([https://yadi.sk/i/PdXX6TO2vN6Bw pdf])&lt;br /&gt;
&lt;br /&gt;
Литература: Garg -- Elements Of Distributed Computing.&lt;/div&gt;</summary>
		<author><name>Sandello</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=%D0%9D%D0%98%D0%A1_%D0%A0%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_(3_%D0%BA%D1%83%D1%80%D1%81,_2017)&amp;diff=26686</id>
		<title>НИС Распределенные системы (3 курс, 2017)</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=%D0%9D%D0%98%D0%A1_%D0%A0%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_(3_%D0%BA%D1%83%D1%80%D1%81,_2017)&amp;diff=26686"/>
		<updated>2018-01-22T12:05:16Z</updated>

		<summary type="html">&lt;p&gt;Sandello: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Информация про семинар ==&lt;br /&gt;
В рамках научно-исследовательского семинара по распределенным системам изучаются основные понятия, принципы и результаты предметной области. &lt;br /&gt;
&lt;br /&gt;
Контакты: [mailto:sandello@gmail.com Пузыревский Иван Витальевич]&lt;br /&gt;
&lt;br /&gt;
Список тем курсовых работ: http://wiki.cs.hse.ru/Темы_для_курсовых_работ_2017_(РС)&lt;br /&gt;
&lt;br /&gt;
=== Оценка ===&lt;br /&gt;
&lt;br /&gt;
* Проверочная работа 1 &amp;lt;= 4 баллов&lt;br /&gt;
* Задание 1 &amp;lt;= 3 баллов&lt;br /&gt;
* Проверочная работа 2 &amp;lt;= 4 баллов&lt;br /&gt;
* Задание 2 &amp;lt;= 3 баллов&lt;br /&gt;
&lt;br /&gt;
Текущая таблица с оценками и ведомостью: https://docs.google.com/spreadsheets/d/16Z74fhT_TnNscsVviU9KU2mVlaMrmX3weQ6ku5jGGbk/edit?usp=sharing&lt;br /&gt;
&lt;br /&gt;
== Занятия ==&lt;br /&gt;
&lt;br /&gt;
=== 1 модуль ===&lt;br /&gt;
&lt;br /&gt;
* Модель распределенных вычислений.&lt;br /&gt;
* Объекты-регистры, типы регистров (bool/int; safe/regular/atomic; single/multi-reader; single/multi-writer).&lt;br /&gt;
* Эквивалентность вычислительной силы SRSW Bool Safe &amp;amp; MRMW Int Atomic.&lt;br /&gt;
* Блокировки (locks). Понятия живости (liveness) и безопасности (safety). Мьютекс Лампорта.&lt;br /&gt;
&lt;br /&gt;
Литература: Herlihy, Shavit -- The Art of Multiprocessor Programming (https://www.dropbox.com/s/s8sssgp95hq5f6q/aompp.pdf?dl=0). Главы 2-4.&lt;br /&gt;
&lt;br /&gt;
=== 2 модуль ===&lt;br /&gt;
&lt;br /&gt;
* Lock-free &amp;amp; wait-free исполнения.&lt;br /&gt;
* Примитив консенсуса. Число консенсуса как характеристика примитивов синхронизации.&lt;br /&gt;
* Универальность консенсуса.&lt;br /&gt;
&lt;br /&gt;
Литература: Herlihy, Shavit -- The Art of Multiprocessor Programming (https://www.dropbox.com/s/s8sssgp95hq5f6q/aompp.pdf?dl=0). Главы 5-6.&lt;br /&gt;
&lt;br /&gt;
Проверочная работа: https://yadi.sk/i/8FSZSlli3QiJAc&lt;br /&gt;
&lt;br /&gt;
Работа над ошибками (всем): задачи 11-19, все; &#039;&#039;&#039;deadline: НИС неделе 15.01-21.01&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== 3 модуль ===&lt;br /&gt;
&lt;br /&gt;
Распределенные алгоритмы. Время, часы, порядок на событиях.&lt;br /&gt;
&lt;br /&gt;
Назначенные статьи для разбора на занятии:&lt;br /&gt;
* на 29.01; Богданова: &#039;&#039;Lamport&#039;&#039; -- Time, clocks and the ordering of events in a distributed system ([https://yadi.sk/i/0cE6EdG5vN5mr pdf])&lt;br /&gt;
* на 29.01; Божко: &#039;&#039;Fidge&#039;&#039; -- Timestamps in message-passing systems that preserve the partial ordering ([https://yadi.sk/i/LyhtLfOMvN64M pdf])&lt;br /&gt;
* на 05.02: Когтенков: &#039;&#039;Mills&#039;&#039; -- Internet time synchronization: the network time protocol ([https://yadi.sk/i/PdXX6TO2vN6Bw pdf])&lt;br /&gt;
&lt;br /&gt;
Литература: Garj -- Elements of Distributed Computing.&lt;/div&gt;</summary>
		<author><name>Sandello</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=%D0%9D%D0%98%D0%A1_%D0%A0%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_(3_%D0%BA%D1%83%D1%80%D1%81,_2017)&amp;diff=26685</id>
		<title>НИС Распределенные системы (3 курс, 2017)</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=%D0%9D%D0%98%D0%A1_%D0%A0%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_(3_%D0%BA%D1%83%D1%80%D1%81,_2017)&amp;diff=26685"/>
		<updated>2018-01-22T12:04:32Z</updated>

		<summary type="html">&lt;p&gt;Sandello: /* Занятия */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Информация про семинар ==&lt;br /&gt;
В рамках научно-исследовательского семинара по распределенным системам изучаются основные понятия, принципы и результаты предметной области. &lt;br /&gt;
&lt;br /&gt;
Контакты: [mailto:sandello@gmail.com Пузыревский Иван Витальевич]&lt;br /&gt;
&lt;br /&gt;
Список тем курсовых работ: http://wiki.cs.hse.ru/Темы_для_курсовых_работ_2017_(РС)&lt;br /&gt;
&lt;br /&gt;
=== Оценка ===&lt;br /&gt;
&lt;br /&gt;
* Проверочная работа 1 &amp;lt;= 4 баллов&lt;br /&gt;
* Задание 1 &amp;lt;= 3 баллов&lt;br /&gt;
* Проверочная работа 2 &amp;lt;= 4 баллов&lt;br /&gt;
* Задание 2 &amp;lt;= 3 баллов&lt;br /&gt;
&lt;br /&gt;
Текущая таблица с оценками и ведомостью: https://docs.google.com/spreadsheets/d/16Z74fhT_TnNscsVviU9KU2mVlaMrmX3weQ6ku5jGGbk/edit?usp=sharing&lt;br /&gt;
&lt;br /&gt;
== Занятия ==&lt;br /&gt;
&lt;br /&gt;
=== 1 модуль ===&lt;br /&gt;
&lt;br /&gt;
* Модель распределенных вычислений.&lt;br /&gt;
* Объекты-регистры, типы регистров (bool/int; safe/regular/atomic; single/multi-reader; single/multi-writer).&lt;br /&gt;
* Эквивалентность вычислительной силы SRSW Bool Safe &amp;amp; MRMW Int Atomic.&lt;br /&gt;
* Блокировки (locks). Понятия живости (liveness) и безопасности (safety). Мьютекс Лампорта.&lt;br /&gt;
&lt;br /&gt;
Литература: Herlihy, Shavit -- The Art of Multiprocessor Programming (https://www.dropbox.com/s/s8sssgp95hq5f6q/aompp.pdf?dl=0). Главы 2-4.&lt;br /&gt;
&lt;br /&gt;
=== 2 модуль ===&lt;br /&gt;
&lt;br /&gt;
* Lock-free &amp;amp; wait-free исполнения.&lt;br /&gt;
* Примитив консенсуса. Число консенсуса как характеристика примитивов синхронизации.&lt;br /&gt;
* Универальность консенсуса.&lt;br /&gt;
&lt;br /&gt;
Литература: Herlihy, Shavit -- The Art of Multiprocessor Programming (https://www.dropbox.com/s/s8sssgp95hq5f6q/aompp.pdf?dl=0). Главы 5-6.&lt;br /&gt;
&lt;br /&gt;
Проверочная работа: https://yadi.sk/i/8FSZSlli3QiJAc&lt;br /&gt;
&lt;br /&gt;
Работа над ошибками (всем): задачи 11-19, все; &#039;&#039;&#039;deadline: НИС неделе 15.01-21.01&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== 3 модуль ===&lt;br /&gt;
&lt;br /&gt;
Распределенные алгоритмы. Время, часы, порядок на событиях.&lt;br /&gt;
&lt;br /&gt;
Назначенные статьи для разбора на занятии:&lt;br /&gt;
* &#039;&#039;&#039;Богданова&#039;&#039;&#039;, на 29.01: &#039;&#039;Lamport&#039;&#039; -- Time, clocks and the ordering of events in a distributed system ([https://yadi.sk/i/0cE6EdG5vN5mr pdf])&lt;br /&gt;
* &#039;&#039;&#039;Божко&#039;&#039;&#039;, на 29.01: &#039;&#039;Fidge&#039;&#039; -- Timestamps in message-passing systems that preserve the partial ordering ([https://yadi.sk/i/LyhtLfOMvN64M pdf])&lt;br /&gt;
* &#039;&#039;&#039;Когтенков&#039;&#039;&#039;, на 05.02: &#039;&#039;Mills&#039;&#039; -- Internet time synchronization: the network time protocol ([https://yadi.sk/i/PdXX6TO2vN6Bw pdf])&lt;br /&gt;
&lt;br /&gt;
Литература: Garj -- Elements of Distributed Computing.&lt;/div&gt;</summary>
		<author><name>Sandello</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=%D0%9D%D0%98%D0%A1_%D0%A0%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_(3_%D0%BA%D1%83%D1%80%D1%81,_2017)&amp;diff=26275</id>
		<title>НИС Распределенные системы (3 курс, 2017)</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=%D0%9D%D0%98%D0%A1_%D0%A0%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_(3_%D0%BA%D1%83%D1%80%D1%81,_2017)&amp;diff=26275"/>
		<updated>2017-12-18T10:24:01Z</updated>

		<summary type="html">&lt;p&gt;Sandello: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Информация про семинар ==&lt;br /&gt;
В рамках научно-исследовательского семинара по распределенным системам изучаются основные понятия, принципы и результаты предметной области. &lt;br /&gt;
&lt;br /&gt;
Контакты: [mailto:sandello@gmail.com Пузыревский Иван Витальевич]&lt;br /&gt;
&lt;br /&gt;
Список тем курсовых работ: http://wiki.cs.hse.ru/Темы_для_курсовых_работ_2017_(РС)&lt;br /&gt;
&lt;br /&gt;
=== Оценка ===&lt;br /&gt;
&lt;br /&gt;
* Проверочная работа 1 &amp;lt;= 4 баллов&lt;br /&gt;
* Задание 1 &amp;lt;= 3 баллов&lt;br /&gt;
* Проверочная работа 2 &amp;lt;= 4 баллов&lt;br /&gt;
* Задание 2 &amp;lt;= 3 баллов&lt;br /&gt;
&lt;br /&gt;
Текущая таблица с оценками и ведомостью: https://docs.google.com/spreadsheets/d/16Z74fhT_TnNscsVviU9KU2mVlaMrmX3weQ6ku5jGGbk/edit?usp=sharing&lt;br /&gt;
&lt;br /&gt;
== Занятия ==&lt;br /&gt;
&lt;br /&gt;
=== 1 модуль ===&lt;br /&gt;
&lt;br /&gt;
* Модель распределенных вычислений.&lt;br /&gt;
* Объекты-регистры, типы регистров (bool/int; safe/regular/atomic; single/multi-reader; single/multi-writer).&lt;br /&gt;
* Эквивалентность вычислительной силы SRSW Bool Safe &amp;amp; MRMW Int Atomic.&lt;br /&gt;
* Блокировки (locks). Понятия живости (liveness) и безопасности (safety). Мьютекс Лампорта.&lt;br /&gt;
&lt;br /&gt;
Литература: Herlihy, Shavit -- The Art of Multiprocessor Programming (https://www.dropbox.com/s/s8sssgp95hq5f6q/aompp.pdf?dl=0). Главы 2-4.&lt;br /&gt;
&lt;br /&gt;
=== 2 модуль ===&lt;br /&gt;
&lt;br /&gt;
* Lock-free &amp;amp; wait-free исполнения.&lt;br /&gt;
* Примитив консенсуса. Число консенсуса как характеристика примитивов синхронизации.&lt;br /&gt;
* Универальность консенсуса.&lt;br /&gt;
&lt;br /&gt;
Литература: Herlihy, Shavit -- The Art of Multiprocessor Programming (https://www.dropbox.com/s/s8sssgp95hq5f6q/aompp.pdf?dl=0). Главы 5-6.&lt;br /&gt;
&lt;br /&gt;
Проверочная работа: https://yadi.sk/i/8FSZSlli3QiJAc&lt;br /&gt;
&lt;br /&gt;
Работа над ошибками (всем): задачи 11-19, все; &#039;&#039;&#039;deadline: НИС неделе 15.01-21.01&#039;&#039;&#039;.&lt;/div&gt;</summary>
		<author><name>Sandello</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=%D0%A2%D0%B5%D0%BC%D1%8B_%D0%B4%D0%BB%D1%8F_%D0%BA%D1%83%D1%80%D1%81%D0%BE%D0%B2%D1%8B%D1%85_%D1%80%D0%B0%D0%B1%D0%BE%D1%82_2017_(%D0%A0%D0%A1)&amp;diff=25573</id>
		<title>Темы для курсовых работ 2017 (РС)</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=%D0%A2%D0%B5%D0%BC%D1%8B_%D0%B4%D0%BB%D1%8F_%D0%BA%D1%83%D1%80%D1%81%D0%BE%D0%B2%D1%8B%D1%85_%D1%80%D0%B0%D0%B1%D0%BE%D1%82_2017_(%D0%A0%D0%A1)&amp;diff=25573"/>
		<updated>2017-10-30T09:01:09Z</updated>

		<summary type="html">&lt;p&gt;Sandello: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Курсовые работы ==&lt;br /&gt;
&lt;br /&gt;
Ниже приведены описания возможных проектов курсовой работы (напоминаю, что на третьем курсе в качестве курсовой работы засчитывается и [http://wiki.cs.hse.ru/Проектная_работа проектная работа]).&lt;br /&gt;
&lt;br /&gt;
Если вас заинтересовала какая-либо из предложенных тем и вы хотите над ней поработать в рамках вашей курсовой работы, то ваша последовательность действий такая:&lt;br /&gt;
# напишите письмо руководителю темы, в копию письма добавьте Пузыревского Ивана (ipuzyrevskiy@hse.ru); укажите, над какой задачей вы хотите поработать; укажите релевантную информацию про вас (публичный github, опыт по теме, что вы сочтете нужным);&lt;br /&gt;
# далее, вам нужно с руководителем обсудить задачу и возможность работы над ней; обычно руководитель вам чуть более подробно вам расскажет, что от вас будет требоваться, вы обсудите, насколько реально вам выполнить предлагаемую работу;&lt;br /&gt;
# в конечном итоге, вы вместе с руководителем приходите или к положительному решению (вы работаете над оговоренной задачей), или к отрицательному (вам необходимо выбрать другую тему курсовой работы).&lt;br /&gt;
&lt;br /&gt;
=== Рекомендуемые темы проектной работы ===&lt;br /&gt;
&lt;br /&gt;
==== Безопасность ====&lt;br /&gt;
По поводу тем курсовых работ на тему информационной безопасности можно обращаться напрямую к [[mailto:gamajun@gmail.com Денису Гамаюнову]]. В рамках командной проектной работы предлагается два проекта:&lt;br /&gt;
* http://wiki.cs.hse.ru/Децентрализованный_крипточат_(командный_проект)&lt;br /&gt;
* http://wiki.cs.hse.ru/Веб-краулер_для_поиска_уязвимостей_авторизации_(командный_проект)&lt;br /&gt;
&lt;br /&gt;
==== Криптовалюты, блокчейн ====&lt;br /&gt;
По поводу курсовых работ на тему криптовалют, блокчейна можно обращаться напрямую к [[Участник:Ryavorsky|Ярославу Яворскому]] для непосредственного обсуждения. Ниже приведены примеры тем, предлагаемых в рамках проектной работы на 2-м курсе.&lt;br /&gt;
* http://wiki.cs.hse.ru/Анализ_данных,_хранимых_в_реестрах_криптовалют_(проект)&lt;br /&gt;
* http://wiki.cs.hse.ru/Аналитический_сервис_по_новостям_в_сфере_блокчейн_технологий_(проект)&lt;br /&gt;
* http://wiki.cs.hse.ru/Тестирование_и_верификация_смарт-контрактов_(проект)&lt;br /&gt;
* http://wiki.cs.hse.ru/Разработка_веб_интерфейсов_для_криптовалют_и_смарт-контрактов_(проект)&lt;br /&gt;
&lt;br /&gt;
=== Темы возможных курсовых работ ===&lt;br /&gt;
&lt;br /&gt;
==== ClickHouse (9 тем) ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:milovidov@yandex-team.ru Миловидов Алексей]&lt;br /&gt;
&lt;br /&gt;
[https://clickhouse.yandex/ ClickHouse] -- открытая колоночная СУБД, позволяющая выполнять аналитические запросы в интерактивном режиме по данным, обновляемым в реальном времени. ClickHouse разработан в Яндексе для задач Яндекс.Метрики -- второй по величине системы веб-аналитики в мире. &lt;br /&gt;
&lt;br /&gt;
В качестве тем для курсовых работ предлагается следующий набор проектов:&lt;br /&gt;
* Использование первичного ключа при ORDER BY monotonic(PK), GROUP BY injective(subset(PK)).&lt;br /&gt;
* Поддержка форматов ввода-вывода Parquet и Protobuf.&lt;br /&gt;
* Модификаторы WITH ROLLUP и WITH CUBE для GROUP BY.&lt;br /&gt;
* Поддержка вычисляемых DEFAULT выражений для полуструктурированных форматов JSONEachRow, TSKV.&lt;br /&gt;
* Short-curcuit вычисление некоторых функций.&lt;br /&gt;
* Оптимизация простых выражений с помощью генерации LLVM кода.&lt;br /&gt;
* Кэширование промежуточных данных конвейера выполнения запроса.&lt;br /&gt;
* Оптимизация алгоритма слияний.&lt;br /&gt;
* Генератор тестовых данных.&lt;br /&gt;
&lt;br /&gt;
==== Postgres Pro: Автоматизация смены мастера в кластере PostgreSQL, использующем логическую  репликацию ====&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:marat.abubekerov@gmail.com Абубекеров Марат]&lt;br /&gt;
&lt;br /&gt;
Есть кластер  PostgreSQL  с  мастером  и  несколькими  репликами.  Используется логическая  репликация.  Требуется  разработать  приложение, которое  в  случае  выхода мастера  из  строя  автоматически  выбирает  нового  мастера  и  переключает  на  него остальные  реплики.  Допускается зависимость  от  сторонних  приложений,  в  частности etcd  или  Consul.&lt;br /&gt;
&lt;br /&gt;
==== Postgres Pro: Приоритезация запросов  в  РСУБД  PostgreSQL ====&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:marat.abubekerov@gmail.com Абубекеров Марат]&lt;br /&gt;
&lt;br /&gt;
Исследовать  различные  механизмы  приоритезации запросов  в  реляционных  базах данных.  Реализовать  механизм  приоритезации з апросов  для  РСУБД  PostgreSQL. Запросы  с  большим  приоритетом  выполняются  раньше запросов  с  низким приоритетом.  Кроме того,  время,  выделяемое  на  выполнение запросов, пропорционально  их  приоритетам.  Например,  при  одновременном  выполнении  OLTP  и OLAP запросов  становится  возможно  присвоить  первым  более  высокий  приоритет, чем  вторым.  В  результате  OLTP запросы  будут  выполняться как  можно  быстрее,  а OLAP запросы  будут  выполняться  в  фоне  с  меньшим  приоритетом.&lt;br /&gt;
&lt;br /&gt;
==== Postgres Pro: Разработка  механизма  ограничения  используемых  ресурсов  в  PostgreSQL ====&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:marat.abubekerov@gmail.com Абубекеров Марат]&lt;br /&gt;
&lt;br /&gt;
Исследование  механизмов  ограничения  использования  системных  ресурсов -   времени CPU,  оперативной  памяти,  места  на  диске,  сетевого трафика,  и так  далее.  Реализация механизма  ограничения  используемых  ресурсов  по  пользователям  и  сессиям  для РСУБД  PostgreSQL.  Допускается  использование  сторонних  механизмов,  в  частности cgroups.&lt;br /&gt;
&lt;br /&gt;
==== Postgres Pro: Реализация  в  модуле  pg_trgm  поиска  по  N-граммам  с  N  &amp;gt;  3 ====&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:marat.abubekerov@gmail.com Абубекеров Марат]&lt;br /&gt;
&lt;br /&gt;
Модуль  pg_trgm  для  PostgreSQL  позволяет  делать  индексы  по триграммам  для нечеткого  поиска.  К  примеру,  слово &#039;молоко&#039;  будет  разложено  на  массив триграмм [ мол,  оло,  лок,  око]  и  если  поисковый  слово  содержит  опечатку, то большинство триграмм  останется  неизменным.  Это  свойство  используется  для поиска:  можно  разложить  искомые  слова/фразы  на триграммы,  построить  по ним  обратный ( инвертированный)  индекс  и  при  поиске  искать  документы  с максимальным  числом  одинаковых триграмм.  Такой  подход  хорошо  и  быстро работает  на  словах  и  небольших  фразах.&lt;br /&gt;
Однако  данный  подход  не  эффективен,  если  поиск  ведется  по  предложениям. Так как  предложение  большое, то  разных триграмм  от каждого  документа получается  много  и  поисковый запрос  будет  пересекаться  с  очень  большим количеством  строк  в таблице.  Чтобы  избежать  этого,  предлагается реализовать  поддержку  не триграмм,  а  на  N-грамм  с  N=4,5  и так  далее.  Тогда разных  N-грам  ставится  экспоненциально  больше  с  ростом  N  и  соответственно вероятность  встретить  данную  N-грамму -   меньше,  следовательно  при  поиске требуется  проверять  на  соответствие  меньше  строк  и  поиск  становится эффективнее.&lt;br /&gt;
&lt;br /&gt;
==== Улучшение симулятора планировщика ресурсов кластера ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:ignat@yandex-team.ru Игнатий Игоревич Колесниченко]&lt;br /&gt;
&lt;br /&gt;
В системе [https://habrahabr.ru/company/yandex/blog/311104/ YT] одна из наиболее значимых компонент -- это планировщик вычислений. Именно он отвечает за распределение ресурсов кластера между пользователями с учетом их требований и желаемых гарантий (зачастую, противоречивых). От эффективности работы планировщика зависит общая эффективность работы кластера и удовлетворенность пользователей. Для проведения оффлайн-экспериментов над алгоритмами планировщика был разработан симулятор, использующий &amp;quot;трейс&amp;quot; событий, снятый с реального кластера (запуск вычислений, освобождение вычислительных ресурсов, потеря вычислений в результате сбоя, и др.). Ниже представлены возможные направления для последующих исследований и улучшений данной функциональности.&lt;br /&gt;
&lt;br /&gt;
В текущей версии симулятора известен ряд недоработок, существенно влияющих на качество симуляции. Например, текущий симулятор не учитывает зависимость вычислений между собой (когда выход одного вычисления используется как вход для другого). За счет использования метаинформации (имя пользователя, время начала/окончания вычислений, именование входных/выходных данных) можно было бы восстановить данные зависимости, что позволит существенно улучшить качество симуляции и, соответственно, качество вычисляемых метрик для цепочек вычислений.&lt;br /&gt;
&lt;br /&gt;
==== Формальная спецификация HDFS с использованием TLA+ ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:sandello@yandex-team.ru Иван Витальевич Пузыревский]&lt;br /&gt;
&lt;br /&gt;
HDFS (Hadoop Distributed File System) -- распределенная отказоустойчивая файловая система. В данной работе предлагается разработать и проверить формальную спецификацию системы с помощью [http://research.microsoft.com/en-us/um/people/lamport/tla/tla.html TLA+].&lt;br /&gt;
&lt;br /&gt;
==== Фреймворк для изучения, разработки и тестирования распределенных алгоритмов при наличии отказов ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:sandello@yandex-team.ru Иван Витальевич Пузыревский]&lt;br /&gt;
&lt;br /&gt;
При анализе и реализации распределенных алгоритмов наиболее сложной частью является обработка отказов, сетевых или процессных. В большинстве языков программирования и в большинстве прикладных библиотек существуют только базовые возможности для тестирования и проверки распределенного алгоритма в условиях сетевых сбоев. В рамках данной работы предлагается минимально интрузивным образом подменить сетевые взаимодействия в сетевых приложениях с целью последующего изучения и изменения характера коммуникации. В первом приближении можно считать, что вся сетевая коммуникация проходит через некоторого &amp;quot;оракула&amp;quot;, который определяет факт и порядок доставки сообщений, величину сетевых задержек, корректность данных. &lt;br /&gt;
&lt;br /&gt;
==== Исследование применимости фонтанирующих кодов в сетевых протоколах как альтернатива обратной связи, основанной на потере пакетов ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:sandello@yandex-team.ru Иван Витальевич Пузыревский]&lt;br /&gt;
&lt;br /&gt;
Современные сетевые протоколы для оценки эффективной пропускной способности сети опираются на &#039;&#039;сетевые потери&#039;&#039;: при переполнении буферов, очереди, или каких-либо других ресурсов во время доставки пакета, последний просто отбрасывается; на оценке доли отброшенных пакетов строится управление трафиком, например, в протоколе TCP. Определение факта потери пакета использует часы (таймауты), что в случае приложений, чувствительных к сетевым задержкам, приводит к всплескам латентности. В рамках данной работы предлагается исследовать возможность применения фонтанирующих кодов ([https://en.wikipedia.org/wiki/Fountain_code wiki]) для обеспечения гарантированной доставки данных в случае сетевых потерь.&lt;br /&gt;
&lt;br /&gt;
==== Имитационное моделирование вычислительных ресурсов и распределенных вычислительных инфраструктур ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:oleg.sukhoroslov@gmail.com Олег Викторович Сухорослов]&lt;br /&gt;
&lt;br /&gt;
Имитационное моделирование активно используется в исследованиях распределенных систем, заменяя натурные эксперименты и позволяя воспроизводимым образом сравнивать между собой различные методы (например, алгоритмы планирования задач). В данной работе объектом моделирования являются распределенные вычислительные инфраструктуры, состоящие из нескольких автономных ресурсов различного типа (кластеров, гридов, облаков, персональных компьютеров). Для реалистичного моделирования таких инфраструктур требуется хорошо моделировать отдельные ресурсы, их планировщики, нагрузку и доступность, а также передачу данных по сети. Для данных целей предлагается использовать [http://simgrid.gforge.inria.fr/ SimGrid], фреймворк для создания симуляторов распределенных систем. Требуется улучшить имеющиеся или реализовать новые модели ресурсов (например, кластер с планировщиком и внутренним потоком заданий), а также интегрировать их в единую модель. Возможны отдельные подтемы и работа в команде.&lt;br /&gt;
&lt;br /&gt;
==== Симуляция и сравнительный анализ алгоритмов планирования задач в распределенных вычислительных системах ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:oleg.sukhoroslov@gmail.com Олег Викторович Сухорослов]&lt;br /&gt;
&lt;br /&gt;
Планирование выполнения задач в распределенных системах в постановках, представляющих практический интерес, является NP-полной задачей. За последнее десятилетие было предложено множество алгоритмов планирования, основанных на различного рода (мета)эвристиках и ориентированных на различные классы приложений (bag of tasks, parallel job, workflow) и систем. При этом недостаточно хорошо изучен вопрос об области применимости и сравнительной эффективности данных алгоритмов в различных ситуациях. В данной работе предлагается реализовать на базе существующего симулятора наиболее известные алгоритмы и сравнить их друг с другом путем проведения имитационных экспериментов для различных типов приложений и систем. Возможны отдельные подтемы и работа в команде.&lt;br /&gt;
&lt;br /&gt;
==== Исследование и экспериментальная оценка технологий распределенных вычислений на основе pilot jobs ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:oleg.sukhoroslov@gmail.com Олег Викторович Сухорослов]&lt;br /&gt;
&lt;br /&gt;
При реализации крупномасштабных вычислений на базе распределенных ресурсов с собственными планировщиками часто используется стратегия pilot jobs. Данная стратегия, заключающаяся в запуске на ресурсах заданий-агентов с последующим динамическим распределением по ним задач, позволяет уменьшить влияние задержек в очередях ресурсов и накладные расходы на запуск задач. В настоящее время существует несколько технологий (pilot job frameworks), реализующих данный подход, например HTCondor, DIANE, BigJob, Swift, DIRAC. В данной работе предлагается изучить и сравнить между собой несколько данных технологий путем их развертывания и проведения экспериментов на тестовой инфраструктуре. Особое внимание планируется уделить сравнению производительности различных решений, оценке их масштабируемости, выявлению узких мест и поиску способов их устранения.&lt;br /&gt;
&lt;br /&gt;
==== Использование простаивающих вычислительных ресурсов для распределенных вычислений на базе платформы Everest ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:oleg.sukhoroslov@gmail.com Олег Викторович Сухорослов]&lt;br /&gt;
&lt;br /&gt;
Платформа [http://everest.distcomp.org/ Everest], разрабатываемая в ИППИ РАН, позволяет публиковать в виде веб-сервисов вычислительные приложения и запускать через веб-интерфейс расчеты на произвольных комбинациях внешних ресурсов, подключенных пользователями к платформе. Интеграция ресурсов с платформой реализована на основе специально разработанного агента, который выполняется на стороне ресурса. В настоящее время агент поддерживает запуск задач на одиночной машине (в монопольном режиме) и кластере (с приоритетом обычного пользователя), не учитывая внешнюю нагрузку на ресурс. В данной работе предлагается реализовать поддержку использования ресурса только в моменты его простоя, что требует мониторинга текущей загрузки ресурса и динамического управления задачами. При этом планируется использовать опыт и наработки систем, ориентированных на использование простаивающих персональных компьютеров (BOINC, Condor).&lt;br /&gt;
&lt;br /&gt;
==== Реализация универсального вычислительного агента для систем распределенных вычислений ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:oleg.sukhoroslov@gmail.com Олег Викторович Сухорослов]&lt;br /&gt;
&lt;br /&gt;
Платформа [http://everest.distcomp.org/ Everest], разрабатываемая в ИППИ РАН, позволяет публиковать в виде веб-сервисов вычислительные приложения и запускать через веб-интерфейс расчеты на произвольных комбинациях внешних ресурсов, подключенных пользователями к платформе. Интеграция ресурсов с платформой реализована на основе специально разработанного агента, который выполняется на стороне ресурса. Агент написан на языке Python с использованием фреймворка Tornado и реализует асинхронную обработку, запуск и мониторинг поступающих задач, загрузку данных и обмен сообщениями с платформой. В данной работе предлагается реализовать принципиально новую версию агента на языке Go. Помимо имеющейся функциональности планируется реализовать прямое взаимодействие по сети между агентами, автоматическое обновление кода агента, а также обеспечить универсальность агента для его использования с другими системами распределенных вычислений.&lt;br /&gt;
&lt;br /&gt;
==== Исследование и реализация методов прямой передачи данных по сети между узлами за NAT и межсетевыми экранами ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:oleg.sukhoroslov@gmail.com Олег Викторович Сухорослов]&lt;br /&gt;
&lt;br /&gt;
При реализации распределенных вычислений в глобальной сети часто возникает задача передачи данных между двумя машинами или ресурсами, находящимися в различных географических точках. При этом зачастую между данными машинами в сети находятся  устройства, выполняющие трансляцию адресов (NAT) и межсетевые экраны, что затрудняет установление прямого соединения. Подход, использующий промежуточный сервер для обмена данными, обладает низкой эффективностью в случае передачи больших объемов данных или частых обменов. В данной работе предлагается изучить существующие методы прямой передачи данных между хостами в глобальной сети, реализовать некоторые из этих методов и экспериментально сравнить их эффективность.&lt;br /&gt;
&lt;br /&gt;
==== Исследование и экспериментальная оценка методов обеспечения отказоустойчивости MPI-приложений ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:oleg.sukhoroslov@gmail.com Олег Викторович Сухорослов]&lt;br /&gt;
&lt;br /&gt;
Одной из основных проблем, связанных с использованием в будущем мощных вычислительных систем уровня [https://en.wikipedia.org/wiki/Exascale_computing exascale], является обеспечение устойчивости параллельных программ к отказам. Поскольку данные системы могут включать миллионы процессоров, выполняющих до миллиарда потоков, то ожидается что в них с высокой частотой (до нескольких раз в час) будут возникать всевозможные сбои на аппаратном и программном уровнях, приводящие к падению процессов или потере данных. Традиционные методы, такие как checkpointing, становятся неэффективными в условиях, когда сохранение состояния требует времени сопоставимого с частотой отказов. В настоящее время активно ведется разработка новых методов, нацеленных на решение данной проблемы, в частности применительно к выполнению MPI-программ. В данной работе предлагается изучить данные методы, провести их экспериментальную оценку и, возможно, улучшить.&lt;/div&gt;</summary>
		<author><name>Sandello</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=%D0%A2%D0%B5%D0%BC%D1%8B_%D0%B4%D0%BB%D1%8F_%D0%BA%D1%83%D1%80%D1%81%D0%BE%D0%B2%D1%8B%D1%85_%D1%80%D0%B0%D0%B1%D0%BE%D1%82_2017_(%D0%A0%D0%A1)&amp;diff=25572</id>
		<title>Темы для курсовых работ 2017 (РС)</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=%D0%A2%D0%B5%D0%BC%D1%8B_%D0%B4%D0%BB%D1%8F_%D0%BA%D1%83%D1%80%D1%81%D0%BE%D0%B2%D1%8B%D1%85_%D1%80%D0%B0%D0%B1%D0%BE%D1%82_2017_(%D0%A0%D0%A1)&amp;diff=25572"/>
		<updated>2017-10-30T09:00:44Z</updated>

		<summary type="html">&lt;p&gt;Sandello: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Курсовые работы ==&lt;br /&gt;
&lt;br /&gt;
Ниже приведены описания возможных проектов курсовой работы (напоминаю, что на третьем курсе в качестве курсовой работы засчитывается и [http://wiki.cs.hse.ru/Проектная_работа проектная работа]).&lt;br /&gt;
&lt;br /&gt;
Если вас заинтересовала какая-либо из предложенных тем и вы хотите над ней поработать в рамках вашей курсовой работы, то ваша последовательность действий такая:&lt;br /&gt;
# напишите письмо руководителю темы, в копию письма добавьте Пузыревского Ивана (ipuzyrevskiy@hse.ru); укажите, над какой задачей вы хотите поработать; укажите релевантную информацию про вас (публичный github, опыт по теме, что вы сочтете нужным);&lt;br /&gt;
# далее, вам нужно с руководителем обсудить задачу и возможность работы над ней; обычно руководитель вам чуть более подробно вам расскажет, что от вас будет требоваться, вы обсудите, насколько реально вам выполнить предлагаемую работу;&lt;br /&gt;
# в конечном итоге, вы вместе с руководителем приходите или к положительному решению (вы работаете над оговоренной задачей), или к отрицательному (вам необходимо выбрать другую тему курсовой работы).&lt;br /&gt;
&lt;br /&gt;
=== Рекомендуемые темы проектной работы ===&lt;br /&gt;
&lt;br /&gt;
==== Безопасность ====&lt;br /&gt;
По поводу тем курсовых работ на тему информационной безопасности можно обращаться напрямую к [[mailto:gamajun@gmail.com Денису Гамаюнову]]. В рамках командной проектной работы предлагается два проекта:&lt;br /&gt;
http://wiki.cs.hse.ru/Децентрализованный_крипточат_(командный_проект)&lt;br /&gt;
http://wiki.cs.hse.ru/Веб-краулер_для_поиска_уязвимостей_авторизации_(командный_проект)&lt;br /&gt;
&lt;br /&gt;
==== Криптовалюты, блокчейн ====&lt;br /&gt;
По поводу курсовых работ на тему криптовалют, блокчейна можно обращаться напрямую к [[Участник:Ryavorsky|Ярославу Яворскому]] для непосредственного обсуждения. Ниже приведены примеры тем, предлагаемых в рамках проектной работы на 2-м курсе.&lt;br /&gt;
http://wiki.cs.hse.ru/Анализ_данных,_хранимых_в_реестрах_криптовалют_(проект)&lt;br /&gt;
http://wiki.cs.hse.ru/Аналитический_сервис_по_новостям_в_сфере_блокчейн_технологий_(проект)&lt;br /&gt;
http://wiki.cs.hse.ru/Тестирование_и_верификация_смарт-контрактов_(проект)&lt;br /&gt;
http://wiki.cs.hse.ru/Разработка_веб_интерфейсов_для_криптовалют_и_смарт-контрактов_(проект)&lt;br /&gt;
&lt;br /&gt;
=== Темы возможных курсовых работ ===&lt;br /&gt;
&lt;br /&gt;
==== ClickHouse (9 тем) ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:milovidov@yandex-team.ru Миловидов Алексей]&lt;br /&gt;
&lt;br /&gt;
[https://clickhouse.yandex/ ClickHouse] -- открытая колоночная СУБД, позволяющая выполнять аналитические запросы в интерактивном режиме по данным, обновляемым в реальном времени. ClickHouse разработан в Яндексе для задач Яндекс.Метрики -- второй по величине системы веб-аналитики в мире. &lt;br /&gt;
&lt;br /&gt;
В качестве тем для курсовых работ предлагается следующий набор проектов:&lt;br /&gt;
* Использование первичного ключа при ORDER BY monotonic(PK), GROUP BY injective(subset(PK)).&lt;br /&gt;
* Поддержка форматов ввода-вывода Parquet и Protobuf.&lt;br /&gt;
* Модификаторы WITH ROLLUP и WITH CUBE для GROUP BY.&lt;br /&gt;
* Поддержка вычисляемых DEFAULT выражений для полуструктурированных форматов JSONEachRow, TSKV.&lt;br /&gt;
* Short-curcuit вычисление некоторых функций.&lt;br /&gt;
* Оптимизация простых выражений с помощью генерации LLVM кода.&lt;br /&gt;
* Кэширование промежуточных данных конвейера выполнения запроса.&lt;br /&gt;
* Оптимизация алгоритма слияний.&lt;br /&gt;
* Генератор тестовых данных.&lt;br /&gt;
&lt;br /&gt;
==== Postgres Pro: Автоматизация смены мастера в кластере PostgreSQL, использующем логическую  репликацию ====&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:marat.abubekerov@gmail.com Абубекеров Марат]&lt;br /&gt;
&lt;br /&gt;
Есть кластер  PostgreSQL  с  мастером  и  несколькими  репликами.  Используется логическая  репликация.  Требуется  разработать  приложение, которое  в  случае  выхода мастера  из  строя  автоматически  выбирает  нового  мастера  и  переключает  на  него остальные  реплики.  Допускается зависимость  от  сторонних  приложений,  в  частности etcd  или  Consul.&lt;br /&gt;
&lt;br /&gt;
==== Postgres Pro: Приоритезация запросов  в  РСУБД  PostgreSQL ====&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:marat.abubekerov@gmail.com Абубекеров Марат]&lt;br /&gt;
&lt;br /&gt;
Исследовать  различные  механизмы  приоритезации запросов  в  реляционных  базах данных.  Реализовать  механизм  приоритезации з апросов  для  РСУБД  PostgreSQL. Запросы  с  большим  приоритетом  выполняются  раньше запросов  с  низким приоритетом.  Кроме того,  время,  выделяемое  на  выполнение запросов, пропорционально  их  приоритетам.  Например,  при  одновременном  выполнении  OLTP  и OLAP запросов  становится  возможно  присвоить  первым  более  высокий  приоритет, чем  вторым.  В  результате  OLTP запросы  будут  выполняться как  можно  быстрее,  а OLAP запросы  будут  выполняться  в  фоне  с  меньшим  приоритетом.&lt;br /&gt;
&lt;br /&gt;
==== Postgres Pro: Разработка  механизма  ограничения  используемых  ресурсов  в  PostgreSQL ====&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:marat.abubekerov@gmail.com Абубекеров Марат]&lt;br /&gt;
&lt;br /&gt;
Исследование  механизмов  ограничения  использования  системных  ресурсов -   времени CPU,  оперативной  памяти,  места  на  диске,  сетевого трафика,  и так  далее.  Реализация механизма  ограничения  используемых  ресурсов  по  пользователям  и  сессиям  для РСУБД  PostgreSQL.  Допускается  использование  сторонних  механизмов,  в  частности cgroups.&lt;br /&gt;
&lt;br /&gt;
==== Postgres Pro: Реализация  в  модуле  pg_trgm  поиска  по  N-граммам  с  N  &amp;gt;  3 ====&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:marat.abubekerov@gmail.com Абубекеров Марат]&lt;br /&gt;
&lt;br /&gt;
Модуль  pg_trgm  для  PostgreSQL  позволяет  делать  индексы  по триграммам  для нечеткого  поиска.  К  примеру,  слово &#039;молоко&#039;  будет  разложено  на  массив триграмм [ мол,  оло,  лок,  око]  и  если  поисковый  слово  содержит  опечатку, то большинство триграмм  останется  неизменным.  Это  свойство  используется  для поиска:  можно  разложить  искомые  слова/фразы  на триграммы,  построить  по ним  обратный ( инвертированный)  индекс  и  при  поиске  искать  документы  с максимальным  числом  одинаковых триграмм.  Такой  подход  хорошо  и  быстро работает  на  словах  и  небольших  фразах.&lt;br /&gt;
Однако  данный  подход  не  эффективен,  если  поиск  ведется  по  предложениям. Так как  предложение  большое, то  разных триграмм  от каждого  документа получается  много  и  поисковый запрос  будет  пересекаться  с  очень  большим количеством  строк  в таблице.  Чтобы  избежать  этого,  предлагается реализовать  поддержку  не триграмм,  а  на  N-грамм  с  N=4,5  и так  далее.  Тогда разных  N-грам  ставится  экспоненциально  больше  с  ростом  N  и  соответственно вероятность  встретить  данную  N-грамму -   меньше,  следовательно  при  поиске требуется  проверять  на  соответствие  меньше  строк  и  поиск  становится эффективнее.&lt;br /&gt;
&lt;br /&gt;
==== Улучшение симулятора планировщика ресурсов кластера ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:ignat@yandex-team.ru Игнатий Игоревич Колесниченко]&lt;br /&gt;
&lt;br /&gt;
В системе [https://habrahabr.ru/company/yandex/blog/311104/ YT] одна из наиболее значимых компонент -- это планировщик вычислений. Именно он отвечает за распределение ресурсов кластера между пользователями с учетом их требований и желаемых гарантий (зачастую, противоречивых). От эффективности работы планировщика зависит общая эффективность работы кластера и удовлетворенность пользователей. Для проведения оффлайн-экспериментов над алгоритмами планировщика был разработан симулятор, использующий &amp;quot;трейс&amp;quot; событий, снятый с реального кластера (запуск вычислений, освобождение вычислительных ресурсов, потеря вычислений в результате сбоя, и др.). Ниже представлены возможные направления для последующих исследований и улучшений данной функциональности.&lt;br /&gt;
&lt;br /&gt;
В текущей версии симулятора известен ряд недоработок, существенно влияющих на качество симуляции. Например, текущий симулятор не учитывает зависимость вычислений между собой (когда выход одного вычисления используется как вход для другого). За счет использования метаинформации (имя пользователя, время начала/окончания вычислений, именование входных/выходных данных) можно было бы восстановить данные зависимости, что позволит существенно улучшить качество симуляции и, соответственно, качество вычисляемых метрик для цепочек вычислений.&lt;br /&gt;
&lt;br /&gt;
==== Формальная спецификация HDFS с использованием TLA+ ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:sandello@yandex-team.ru Иван Витальевич Пузыревский]&lt;br /&gt;
&lt;br /&gt;
HDFS (Hadoop Distributed File System) -- распределенная отказоустойчивая файловая система. В данной работе предлагается разработать и проверить формальную спецификацию системы с помощью [http://research.microsoft.com/en-us/um/people/lamport/tla/tla.html TLA+].&lt;br /&gt;
&lt;br /&gt;
==== Фреймворк для изучения, разработки и тестирования распределенных алгоритмов при наличии отказов ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:sandello@yandex-team.ru Иван Витальевич Пузыревский]&lt;br /&gt;
&lt;br /&gt;
При анализе и реализации распределенных алгоритмов наиболее сложной частью является обработка отказов, сетевых или процессных. В большинстве языков программирования и в большинстве прикладных библиотек существуют только базовые возможности для тестирования и проверки распределенного алгоритма в условиях сетевых сбоев. В рамках данной работы предлагается минимально интрузивным образом подменить сетевые взаимодействия в сетевых приложениях с целью последующего изучения и изменения характера коммуникации. В первом приближении можно считать, что вся сетевая коммуникация проходит через некоторого &amp;quot;оракула&amp;quot;, который определяет факт и порядок доставки сообщений, величину сетевых задержек, корректность данных. &lt;br /&gt;
&lt;br /&gt;
==== Исследование применимости фонтанирующих кодов в сетевых протоколах как альтернатива обратной связи, основанной на потере пакетов ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:sandello@yandex-team.ru Иван Витальевич Пузыревский]&lt;br /&gt;
&lt;br /&gt;
Современные сетевые протоколы для оценки эффективной пропускной способности сети опираются на &#039;&#039;сетевые потери&#039;&#039;: при переполнении буферов, очереди, или каких-либо других ресурсов во время доставки пакета, последний просто отбрасывается; на оценке доли отброшенных пакетов строится управление трафиком, например, в протоколе TCP. Определение факта потери пакета использует часы (таймауты), что в случае приложений, чувствительных к сетевым задержкам, приводит к всплескам латентности. В рамках данной работы предлагается исследовать возможность применения фонтанирующих кодов ([https://en.wikipedia.org/wiki/Fountain_code wiki]) для обеспечения гарантированной доставки данных в случае сетевых потерь.&lt;br /&gt;
&lt;br /&gt;
==== Имитационное моделирование вычислительных ресурсов и распределенных вычислительных инфраструктур ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:oleg.sukhoroslov@gmail.com Олег Викторович Сухорослов]&lt;br /&gt;
&lt;br /&gt;
Имитационное моделирование активно используется в исследованиях распределенных систем, заменяя натурные эксперименты и позволяя воспроизводимым образом сравнивать между собой различные методы (например, алгоритмы планирования задач). В данной работе объектом моделирования являются распределенные вычислительные инфраструктуры, состоящие из нескольких автономных ресурсов различного типа (кластеров, гридов, облаков, персональных компьютеров). Для реалистичного моделирования таких инфраструктур требуется хорошо моделировать отдельные ресурсы, их планировщики, нагрузку и доступность, а также передачу данных по сети. Для данных целей предлагается использовать [http://simgrid.gforge.inria.fr/ SimGrid], фреймворк для создания симуляторов распределенных систем. Требуется улучшить имеющиеся или реализовать новые модели ресурсов (например, кластер с планировщиком и внутренним потоком заданий), а также интегрировать их в единую модель. Возможны отдельные подтемы и работа в команде.&lt;br /&gt;
&lt;br /&gt;
==== Симуляция и сравнительный анализ алгоритмов планирования задач в распределенных вычислительных системах ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:oleg.sukhoroslov@gmail.com Олег Викторович Сухорослов]&lt;br /&gt;
&lt;br /&gt;
Планирование выполнения задач в распределенных системах в постановках, представляющих практический интерес, является NP-полной задачей. За последнее десятилетие было предложено множество алгоритмов планирования, основанных на различного рода (мета)эвристиках и ориентированных на различные классы приложений (bag of tasks, parallel job, workflow) и систем. При этом недостаточно хорошо изучен вопрос об области применимости и сравнительной эффективности данных алгоритмов в различных ситуациях. В данной работе предлагается реализовать на базе существующего симулятора наиболее известные алгоритмы и сравнить их друг с другом путем проведения имитационных экспериментов для различных типов приложений и систем. Возможны отдельные подтемы и работа в команде.&lt;br /&gt;
&lt;br /&gt;
==== Исследование и экспериментальная оценка технологий распределенных вычислений на основе pilot jobs ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:oleg.sukhoroslov@gmail.com Олег Викторович Сухорослов]&lt;br /&gt;
&lt;br /&gt;
При реализации крупномасштабных вычислений на базе распределенных ресурсов с собственными планировщиками часто используется стратегия pilot jobs. Данная стратегия, заключающаяся в запуске на ресурсах заданий-агентов с последующим динамическим распределением по ним задач, позволяет уменьшить влияние задержек в очередях ресурсов и накладные расходы на запуск задач. В настоящее время существует несколько технологий (pilot job frameworks), реализующих данный подход, например HTCondor, DIANE, BigJob, Swift, DIRAC. В данной работе предлагается изучить и сравнить между собой несколько данных технологий путем их развертывания и проведения экспериментов на тестовой инфраструктуре. Особое внимание планируется уделить сравнению производительности различных решений, оценке их масштабируемости, выявлению узких мест и поиску способов их устранения.&lt;br /&gt;
&lt;br /&gt;
==== Использование простаивающих вычислительных ресурсов для распределенных вычислений на базе платформы Everest ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:oleg.sukhoroslov@gmail.com Олег Викторович Сухорослов]&lt;br /&gt;
&lt;br /&gt;
Платформа [http://everest.distcomp.org/ Everest], разрабатываемая в ИППИ РАН, позволяет публиковать в виде веб-сервисов вычислительные приложения и запускать через веб-интерфейс расчеты на произвольных комбинациях внешних ресурсов, подключенных пользователями к платформе. Интеграция ресурсов с платформой реализована на основе специально разработанного агента, который выполняется на стороне ресурса. В настоящее время агент поддерживает запуск задач на одиночной машине (в монопольном режиме) и кластере (с приоритетом обычного пользователя), не учитывая внешнюю нагрузку на ресурс. В данной работе предлагается реализовать поддержку использования ресурса только в моменты его простоя, что требует мониторинга текущей загрузки ресурса и динамического управления задачами. При этом планируется использовать опыт и наработки систем, ориентированных на использование простаивающих персональных компьютеров (BOINC, Condor).&lt;br /&gt;
&lt;br /&gt;
==== Реализация универсального вычислительного агента для систем распределенных вычислений ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:oleg.sukhoroslov@gmail.com Олег Викторович Сухорослов]&lt;br /&gt;
&lt;br /&gt;
Платформа [http://everest.distcomp.org/ Everest], разрабатываемая в ИППИ РАН, позволяет публиковать в виде веб-сервисов вычислительные приложения и запускать через веб-интерфейс расчеты на произвольных комбинациях внешних ресурсов, подключенных пользователями к платформе. Интеграция ресурсов с платформой реализована на основе специально разработанного агента, который выполняется на стороне ресурса. Агент написан на языке Python с использованием фреймворка Tornado и реализует асинхронную обработку, запуск и мониторинг поступающих задач, загрузку данных и обмен сообщениями с платформой. В данной работе предлагается реализовать принципиально новую версию агента на языке Go. Помимо имеющейся функциональности планируется реализовать прямое взаимодействие по сети между агентами, автоматическое обновление кода агента, а также обеспечить универсальность агента для его использования с другими системами распределенных вычислений.&lt;br /&gt;
&lt;br /&gt;
==== Исследование и реализация методов прямой передачи данных по сети между узлами за NAT и межсетевыми экранами ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:oleg.sukhoroslov@gmail.com Олег Викторович Сухорослов]&lt;br /&gt;
&lt;br /&gt;
При реализации распределенных вычислений в глобальной сети часто возникает задача передачи данных между двумя машинами или ресурсами, находящимися в различных географических точках. При этом зачастую между данными машинами в сети находятся  устройства, выполняющие трансляцию адресов (NAT) и межсетевые экраны, что затрудняет установление прямого соединения. Подход, использующий промежуточный сервер для обмена данными, обладает низкой эффективностью в случае передачи больших объемов данных или частых обменов. В данной работе предлагается изучить существующие методы прямой передачи данных между хостами в глобальной сети, реализовать некоторые из этих методов и экспериментально сравнить их эффективность.&lt;br /&gt;
&lt;br /&gt;
==== Исследование и экспериментальная оценка методов обеспечения отказоустойчивости MPI-приложений ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:oleg.sukhoroslov@gmail.com Олег Викторович Сухорослов]&lt;br /&gt;
&lt;br /&gt;
Одной из основных проблем, связанных с использованием в будущем мощных вычислительных систем уровня [https://en.wikipedia.org/wiki/Exascale_computing exascale], является обеспечение устойчивости параллельных программ к отказам. Поскольку данные системы могут включать миллионы процессоров, выполняющих до миллиарда потоков, то ожидается что в них с высокой частотой (до нескольких раз в час) будут возникать всевозможные сбои на аппаратном и программном уровнях, приводящие к падению процессов или потере данных. Традиционные методы, такие как checkpointing, становятся неэффективными в условиях, когда сохранение состояния требует времени сопоставимого с частотой отказов. В настоящее время активно ведется разработка новых методов, нацеленных на решение данной проблемы, в частности применительно к выполнению MPI-программ. В данной работе предлагается изучить данные методы, провести их экспериментальную оценку и, возможно, улучшить.&lt;/div&gt;</summary>
		<author><name>Sandello</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=%D0%A2%D0%B5%D0%BC%D1%8B_%D0%B4%D0%BB%D1%8F_%D0%BA%D1%83%D1%80%D1%81%D0%BE%D0%B2%D1%8B%D1%85_%D1%80%D0%B0%D0%B1%D0%BE%D1%82_2017_(%D0%A0%D0%A1)&amp;diff=25571</id>
		<title>Темы для курсовых работ 2017 (РС)</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=%D0%A2%D0%B5%D0%BC%D1%8B_%D0%B4%D0%BB%D1%8F_%D0%BA%D1%83%D1%80%D1%81%D0%BE%D0%B2%D1%8B%D1%85_%D1%80%D0%B0%D0%B1%D0%BE%D1%82_2017_(%D0%A0%D0%A1)&amp;diff=25571"/>
		<updated>2017-10-30T08:49:25Z</updated>

		<summary type="html">&lt;p&gt;Sandello: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Курсовые работы ==&lt;br /&gt;
&lt;br /&gt;
Ниже приведены описания возможных проектов курсовой работы (напоминаю, что на третьем курсе в качестве курсовой работы засчитывается и [http://wiki.cs.hse.ru/Проектная_работа проектная работа]).&lt;br /&gt;
&lt;br /&gt;
Если вас заинтересовала какая-либо из предложенных тем и вы хотите над ней поработать в рамках вашей курсовой работы, то ваша последовательность действий такая:&lt;br /&gt;
# напишите письмо руководителю темы, в копию письма добавьте Пузыревского Ивана (ipuzyrevskiy@hse.ru); укажите, над какой задачей вы хотите поработать; укажите релевантную информацию про вас (публичный github, опыт по теме, что вы сочтете нужным);&lt;br /&gt;
# далее, вам нужно с руководителем обсудить задачу и возможность работы над ней; обычно руководитель вам чуть более подробно вам расскажет, что от вас будет требоваться, вы обсудите, насколько реально вам выполнить предлагаемую работу;&lt;br /&gt;
# в конечном итоге, вы вместе с руководителем приходите или к положительному решению (вы работаете над оговоренной задачей), или к отрицательному (вам необходимо выбрать другую тему курсовой работы).&lt;br /&gt;
&lt;br /&gt;
=== Рекомендуемые темы проектной работы ===&lt;br /&gt;
&lt;br /&gt;
==== Безопасность ====&lt;br /&gt;
По поводу тем курсовых работ на тему информационной безопасности можно обращаться напрямую к [[mailto:gamajun@gmail.com|Денису Гамаюнову]]. В рамках командной проектной работы предлагается два проекта:&lt;br /&gt;
http://wiki.cs.hse.ru/Децентрализованный_крипточат_(командный_проект)&lt;br /&gt;
http://wiki.cs.hse.ru/Веб-краулер_для_поиска_уязвимостей_авторизации_(командный_проект)&lt;br /&gt;
&lt;br /&gt;
==== Криптовалюты, блокчейн ====&lt;br /&gt;
По поводу курсовых работ на тему криптовалют, блокчейна можно обращаться напрямую к [[Участник:Ryavorsky|Ярославу Яворскому]] для непосредственного обсуждения. Ниже приведены примеры тем, предлагаемых в рамках проектной работы на 2-м курсе.&lt;br /&gt;
http://wiki.cs.hse.ru/Анализ_данных,_хранимых_в_реестрах_криптовалют_(проект)&lt;br /&gt;
http://wiki.cs.hse.ru/Аналитический_сервис_по_новостям_в_сфере_блокчейн_технологий_(проект)&lt;br /&gt;
http://wiki.cs.hse.ru/Тестирование_и_верификация_смарт-контрактов_(проект)&lt;br /&gt;
http://wiki.cs.hse.ru/Разработка_веб_интерфейсов_для_криптовалют_и_смарт-контрактов_(проект)&lt;br /&gt;
&lt;br /&gt;
=== Темы возможных курсовых работ ===&lt;br /&gt;
&lt;br /&gt;
==== ClickHouse (9 тем) ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:milovidov@yandex-team.ru Миловидов Алексей]&lt;br /&gt;
&lt;br /&gt;
[https://clickhouse.yandex/ ClickHouse] -- открытая колоночная СУБД, позволяющая выполнять аналитические запросы в интерактивном режиме по данным, обновляемым в реальном времени. ClickHouse разработан в Яндексе для задач Яндекс.Метрики -- второй по величине системы веб-аналитики в мире. &lt;br /&gt;
&lt;br /&gt;
В качестве тем для курсовых работ предлагается следующий набор проектов:&lt;br /&gt;
* Использование первичного ключа при ORDER BY monotonic(PK), GROUP BY injective(subset(PK)).&lt;br /&gt;
* Поддержка форматов ввода-вывода Parquet и Protobuf.&lt;br /&gt;
* Модификаторы WITH ROLLUP и WITH CUBE для GROUP BY.&lt;br /&gt;
* Поддержка вычисляемых DEFAULT выражений для полуструктурированных форматов JSONEachRow, TSKV.&lt;br /&gt;
* Short-curcuit вычисление некоторых функций.&lt;br /&gt;
* Оптимизация простых выражений с помощью генерации LLVM кода.&lt;br /&gt;
* Кэширование промежуточных данных конвейера выполнения запроса.&lt;br /&gt;
* Оптимизация алгоритма слияний.&lt;br /&gt;
* Генератор тестовых данных.&lt;br /&gt;
&lt;br /&gt;
==== Postgres Pro: Автоматизация смены мастера в кластере PostgreSQL, использующем логическую  репликацию ====&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:marat.abubekerov@gmail.com Абубекеров Марат]&lt;br /&gt;
&lt;br /&gt;
Есть кластер  PostgreSQL  с  мастером  и  несколькими  репликами.  Используется логическая  репликация.  Требуется  разработать  приложение, которое  в  случае  выхода мастера  из  строя  автоматически  выбирает  нового  мастера  и  переключает  на  него остальные  реплики.  Допускается зависимость  от  сторонних  приложений,  в  частности etcd  или  Consul.&lt;br /&gt;
&lt;br /&gt;
==== Postgres Pro: Приоритезация запросов  в  РСУБД  PostgreSQL ====&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:marat.abubekerov@gmail.com Абубекеров Марат]&lt;br /&gt;
&lt;br /&gt;
Исследовать  различные  механизмы  приоритезации запросов  в  реляционных  базах данных.  Реализовать  механизм  приоритезации з апросов  для  РСУБД  PostgreSQL. Запросы  с  большим  приоритетом  выполняются  раньше запросов  с  низким приоритетом.  Кроме того,  время,  выделяемое  на  выполнение запросов, пропорционально  их  приоритетам.  Например,  при  одновременном  выполнении  OLTP  и OLAP запросов  становится  возможно  присвоить  первым  более  высокий  приоритет, чем  вторым.  В  результате  OLTP запросы  будут  выполняться как  можно  быстрее,  а OLAP запросы  будут  выполняться  в  фоне  с  меньшим  приоритетом.&lt;br /&gt;
&lt;br /&gt;
==== Postgres Pro: Разработка  механизма  ограничения  используемых  ресурсов  в  PostgreSQL ====&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:marat.abubekerov@gmail.com Абубекеров Марат]&lt;br /&gt;
&lt;br /&gt;
Исследование  механизмов  ограничения  использования  системных  ресурсов -   времени CPU,  оперативной  памяти,  места  на  диске,  сетевого трафика,  и так  далее.  Реализация механизма  ограничения  используемых  ресурсов  по  пользователям  и  сессиям  для РСУБД  PostgreSQL.  Допускается  использование  сторонних  механизмов,  в  частности cgroups.&lt;br /&gt;
&lt;br /&gt;
==== Postgres Pro: Реализация  в  модуле  pg_trgm  поиска  по  N-граммам  с  N  &amp;gt;  3 ====&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:marat.abubekerov@gmail.com Абубекеров Марат]&lt;br /&gt;
&lt;br /&gt;
Модуль  pg_trgm  для  PostgreSQL  позволяет  делать  индексы  по триграммам  для нечеткого  поиска.  К  примеру,  слово &#039;молоко&#039;  будет  разложено  на  массив триграмм [ мол,  оло,  лок,  око]  и  если  поисковый  слово  содержит  опечатку, то большинство триграмм  останется  неизменным.  Это  свойство  используется  для поиска:  можно  разложить  искомые  слова/фразы  на триграммы,  построить  по ним  обратный ( инвертированный)  индекс  и  при  поиске  искать  документы  с максимальным  числом  одинаковых триграмм.  Такой  подход  хорошо  и  быстро работает  на  словах  и  небольших  фразах.&lt;br /&gt;
Однако  данный  подход  не  эффективен,  если  поиск  ведется  по  предложениям. Так как  предложение  большое, то  разных триграмм  от каждого  документа получается  много  и  поисковый запрос  будет  пересекаться  с  очень  большим количеством  строк  в таблице.  Чтобы  избежать  этого,  предлагается реализовать  поддержку  не триграмм,  а  на  N-грамм  с  N=4,5  и так  далее.  Тогда разных  N-грам  ставится  экспоненциально  больше  с  ростом  N  и  соответственно вероятность  встретить  данную  N-грамму -   меньше,  следовательно  при  поиске требуется  проверять  на  соответствие  меньше  строк  и  поиск  становится эффективнее.&lt;br /&gt;
&lt;br /&gt;
==== Улучшение симулятора планировщика ресурсов кластера ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:ignat@yandex-team.ru Игнатий Игоревич Колесниченко]&lt;br /&gt;
&lt;br /&gt;
В системе [https://habrahabr.ru/company/yandex/blog/311104/ YT] одна из наиболее значимых компонент -- это планировщик вычислений. Именно он отвечает за распределение ресурсов кластера между пользователями с учетом их требований и желаемых гарантий (зачастую, противоречивых). От эффективности работы планировщика зависит общая эффективность работы кластера и удовлетворенность пользователей. Для проведения оффлайн-экспериментов над алгоритмами планировщика был разработан симулятор, использующий &amp;quot;трейс&amp;quot; событий, снятый с реального кластера (запуск вычислений, освобождение вычислительных ресурсов, потеря вычислений в результате сбоя, и др.). Ниже представлены возможные направления для последующих исследований и улучшений данной функциональности.&lt;br /&gt;
&lt;br /&gt;
В текущей версии симулятора известен ряд недоработок, существенно влияющих на качество симуляции. Например, текущий симулятор не учитывает зависимость вычислений между собой (когда выход одного вычисления используется как вход для другого). За счет использования метаинформации (имя пользователя, время начала/окончания вычислений, именование входных/выходных данных) можно было бы восстановить данные зависимости, что позволит существенно улучшить качество симуляции и, соответственно, качество вычисляемых метрик для цепочек вычислений.&lt;br /&gt;
&lt;br /&gt;
==== Формальная спецификация HDFS с использованием TLA+ ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:sandello@yandex-team.ru Иван Витальевич Пузыревский]&lt;br /&gt;
&lt;br /&gt;
HDFS (Hadoop Distributed File System) -- распределенная отказоустойчивая файловая система. В данной работе предлагается разработать и проверить формальную спецификацию системы с помощью [http://research.microsoft.com/en-us/um/people/lamport/tla/tla.html TLA+].&lt;br /&gt;
&lt;br /&gt;
==== Фреймворк для изучения, разработки и тестирования распределенных алгоритмов при наличии отказов ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:sandello@yandex-team.ru Иван Витальевич Пузыревский]&lt;br /&gt;
&lt;br /&gt;
При анализе и реализации распределенных алгоритмов наиболее сложной частью является обработка отказов, сетевых или процессных. В большинстве языков программирования и в большинстве прикладных библиотек существуют только базовые возможности для тестирования и проверки распределенного алгоритма в условиях сетевых сбоев. В рамках данной работы предлагается минимально интрузивным образом подменить сетевые взаимодействия в сетевых приложениях с целью последующего изучения и изменения характера коммуникации. В первом приближении можно считать, что вся сетевая коммуникация проходит через некоторого &amp;quot;оракула&amp;quot;, который определяет факт и порядок доставки сообщений, величину сетевых задержек, корректность данных. &lt;br /&gt;
&lt;br /&gt;
==== Исследование применимости фонтанирующих кодов в сетевых протоколах как альтернатива обратной связи, основанной на потере пакетов ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:sandello@yandex-team.ru Иван Витальевич Пузыревский]&lt;br /&gt;
&lt;br /&gt;
Современные сетевые протоколы для оценки эффективной пропускной способности сети опираются на &#039;&#039;сетевые потери&#039;&#039;: при переполнении буферов, очереди, или каких-либо других ресурсов во время доставки пакета, последний просто отбрасывается; на оценке доли отброшенных пакетов строится управление трафиком, например, в протоколе TCP. Определение факта потери пакета использует часы (таймауты), что в случае приложений, чувствительных к сетевым задержкам, приводит к всплескам латентности. В рамках данной работы предлагается исследовать возможность применения фонтанирующих кодов ([https://en.wikipedia.org/wiki/Fountain_code wiki]) для обеспечения гарантированной доставки данных в случае сетевых потерь.&lt;br /&gt;
&lt;br /&gt;
==== Имитационное моделирование вычислительных ресурсов и распределенных вычислительных инфраструктур ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:oleg.sukhoroslov@gmail.com Олег Викторович Сухорослов]&lt;br /&gt;
&lt;br /&gt;
Имитационное моделирование активно используется в исследованиях распределенных систем, заменяя натурные эксперименты и позволяя воспроизводимым образом сравнивать между собой различные методы (например, алгоритмы планирования задач). В данной работе объектом моделирования являются распределенные вычислительные инфраструктуры, состоящие из нескольких автономных ресурсов различного типа (кластеров, гридов, облаков, персональных компьютеров). Для реалистичного моделирования таких инфраструктур требуется хорошо моделировать отдельные ресурсы, их планировщики, нагрузку и доступность, а также передачу данных по сети. Для данных целей предлагается использовать [http://simgrid.gforge.inria.fr/ SimGrid], фреймворк для создания симуляторов распределенных систем. Требуется улучшить имеющиеся или реализовать новые модели ресурсов (например, кластер с планировщиком и внутренним потоком заданий), а также интегрировать их в единую модель. Возможны отдельные подтемы и работа в команде.&lt;br /&gt;
&lt;br /&gt;
==== Симуляция и сравнительный анализ алгоритмов планирования задач в распределенных вычислительных системах ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:oleg.sukhoroslov@gmail.com Олег Викторович Сухорослов]&lt;br /&gt;
&lt;br /&gt;
Планирование выполнения задач в распределенных системах в постановках, представляющих практический интерес, является NP-полной задачей. За последнее десятилетие было предложено множество алгоритмов планирования, основанных на различного рода (мета)эвристиках и ориентированных на различные классы приложений (bag of tasks, parallel job, workflow) и систем. При этом недостаточно хорошо изучен вопрос об области применимости и сравнительной эффективности данных алгоритмов в различных ситуациях. В данной работе предлагается реализовать на базе существующего симулятора наиболее известные алгоритмы и сравнить их друг с другом путем проведения имитационных экспериментов для различных типов приложений и систем. Возможны отдельные подтемы и работа в команде.&lt;br /&gt;
&lt;br /&gt;
==== Исследование и экспериментальная оценка технологий распределенных вычислений на основе pilot jobs ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:oleg.sukhoroslov@gmail.com Олег Викторович Сухорослов]&lt;br /&gt;
&lt;br /&gt;
При реализации крупномасштабных вычислений на базе распределенных ресурсов с собственными планировщиками часто используется стратегия pilot jobs. Данная стратегия, заключающаяся в запуске на ресурсах заданий-агентов с последующим динамическим распределением по ним задач, позволяет уменьшить влияние задержек в очередях ресурсов и накладные расходы на запуск задач. В настоящее время существует несколько технологий (pilot job frameworks), реализующих данный подход, например HTCondor, DIANE, BigJob, Swift, DIRAC. В данной работе предлагается изучить и сравнить между собой несколько данных технологий путем их развертывания и проведения экспериментов на тестовой инфраструктуре. Особое внимание планируется уделить сравнению производительности различных решений, оценке их масштабируемости, выявлению узких мест и поиску способов их устранения.&lt;br /&gt;
&lt;br /&gt;
==== Использование простаивающих вычислительных ресурсов для распределенных вычислений на базе платформы Everest ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:oleg.sukhoroslov@gmail.com Олег Викторович Сухорослов]&lt;br /&gt;
&lt;br /&gt;
Платформа [http://everest.distcomp.org/ Everest], разрабатываемая в ИППИ РАН, позволяет публиковать в виде веб-сервисов вычислительные приложения и запускать через веб-интерфейс расчеты на произвольных комбинациях внешних ресурсов, подключенных пользователями к платформе. Интеграция ресурсов с платформой реализована на основе специально разработанного агента, который выполняется на стороне ресурса. В настоящее время агент поддерживает запуск задач на одиночной машине (в монопольном режиме) и кластере (с приоритетом обычного пользователя), не учитывая внешнюю нагрузку на ресурс. В данной работе предлагается реализовать поддержку использования ресурса только в моменты его простоя, что требует мониторинга текущей загрузки ресурса и динамического управления задачами. При этом планируется использовать опыт и наработки систем, ориентированных на использование простаивающих персональных компьютеров (BOINC, Condor).&lt;br /&gt;
&lt;br /&gt;
==== Реализация универсального вычислительного агента для систем распределенных вычислений ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:oleg.sukhoroslov@gmail.com Олег Викторович Сухорослов]&lt;br /&gt;
&lt;br /&gt;
Платформа [http://everest.distcomp.org/ Everest], разрабатываемая в ИППИ РАН, позволяет публиковать в виде веб-сервисов вычислительные приложения и запускать через веб-интерфейс расчеты на произвольных комбинациях внешних ресурсов, подключенных пользователями к платформе. Интеграция ресурсов с платформой реализована на основе специально разработанного агента, который выполняется на стороне ресурса. Агент написан на языке Python с использованием фреймворка Tornado и реализует асинхронную обработку, запуск и мониторинг поступающих задач, загрузку данных и обмен сообщениями с платформой. В данной работе предлагается реализовать принципиально новую версию агента на языке Go. Помимо имеющейся функциональности планируется реализовать прямое взаимодействие по сети между агентами, автоматическое обновление кода агента, а также обеспечить универсальность агента для его использования с другими системами распределенных вычислений.&lt;br /&gt;
&lt;br /&gt;
==== Исследование и реализация методов прямой передачи данных по сети между узлами за NAT и межсетевыми экранами ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:oleg.sukhoroslov@gmail.com Олег Викторович Сухорослов]&lt;br /&gt;
&lt;br /&gt;
При реализации распределенных вычислений в глобальной сети часто возникает задача передачи данных между двумя машинами или ресурсами, находящимися в различных географических точках. При этом зачастую между данными машинами в сети находятся  устройства, выполняющие трансляцию адресов (NAT) и межсетевые экраны, что затрудняет установление прямого соединения. Подход, использующий промежуточный сервер для обмена данными, обладает низкой эффективностью в случае передачи больших объемов данных или частых обменов. В данной работе предлагается изучить существующие методы прямой передачи данных между хостами в глобальной сети, реализовать некоторые из этих методов и экспериментально сравнить их эффективность.&lt;br /&gt;
&lt;br /&gt;
==== Исследование и экспериментальная оценка методов обеспечения отказоустойчивости MPI-приложений ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:oleg.sukhoroslov@gmail.com Олег Викторович Сухорослов]&lt;br /&gt;
&lt;br /&gt;
Одной из основных проблем, связанных с использованием в будущем мощных вычислительных систем уровня [https://en.wikipedia.org/wiki/Exascale_computing exascale], является обеспечение устойчивости параллельных программ к отказам. Поскольку данные системы могут включать миллионы процессоров, выполняющих до миллиарда потоков, то ожидается что в них с высокой частотой (до нескольких раз в час) будут возникать всевозможные сбои на аппаратном и программном уровнях, приводящие к падению процессов или потере данных. Традиционные методы, такие как checkpointing, становятся неэффективными в условиях, когда сохранение состояния требует времени сопоставимого с частотой отказов. В настоящее время активно ведется разработка новых методов, нацеленных на решение данной проблемы, в частности применительно к выполнению MPI-программ. В данной работе предлагается изучить данные методы, провести их экспериментальную оценку и, возможно, улучшить.&lt;/div&gt;</summary>
		<author><name>Sandello</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=%D0%A2%D0%B5%D0%BC%D1%8B_%D0%B4%D0%BB%D1%8F_%D0%BA%D1%83%D1%80%D1%81%D0%BE%D0%B2%D1%8B%D1%85_%D1%80%D0%B0%D0%B1%D0%BE%D1%82_2017_(%D0%A0%D0%A1)&amp;diff=25570</id>
		<title>Темы для курсовых работ 2017 (РС)</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=%D0%A2%D0%B5%D0%BC%D1%8B_%D0%B4%D0%BB%D1%8F_%D0%BA%D1%83%D1%80%D1%81%D0%BE%D0%B2%D1%8B%D1%85_%D1%80%D0%B0%D0%B1%D0%BE%D1%82_2017_(%D0%A0%D0%A1)&amp;diff=25570"/>
		<updated>2017-10-30T08:46:53Z</updated>

		<summary type="html">&lt;p&gt;Sandello: /* Темы возможных курсовых работ */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Курсовые работы ==&lt;br /&gt;
&lt;br /&gt;
Ниже приведены описания возможных проектов курсовой работы (напоминаю, что на третьем курсе в качестве курсовой работы засчитывается и [http://wiki.cs.hse.ru/Проектная_работа проектная работа]).&lt;br /&gt;
&lt;br /&gt;
Если вас заинтересовала какая-либо из предложенных тем и вы хотите над ней поработать в рамках вашей курсовой работы, то ваша последовательность действий такая:&lt;br /&gt;
# напишите письмо руководителю темы, в копию письма добавьте Пузыревского Ивана (ipuzyrevskiy@hse.ru); укажите, над какой задачей вы хотите поработать; укажите релевантную информацию про вас (публичный github, опыт по теме, что вы сочтете нужным);&lt;br /&gt;
# далее, вам нужно с руководителем обсудить задачу и возможность работы над ней; обычно руководитель вам чуть более подробно вам расскажет, что от вас будет требоваться, вы обсудите, насколько реально вам выполнить предлагаемую работу;&lt;br /&gt;
# в конечном итоге, вы вместе с руководителем приходите или к положительному решению (вы работаете над оговоренной задачей), или к отрицательному (вам необходимо выбрать другую тему курсовой работы).&lt;br /&gt;
&lt;br /&gt;
=== Рекомендуемые темы проектной работы ===&lt;br /&gt;
&lt;br /&gt;
==== Безопасность ====&lt;br /&gt;
По поводу тем курсовых работ на тему информационной безопасности можно обращаться напрямую к [[mailto:gamajun@gmail.com|Денису Гамаюнову]]. В рамках командной проектной работы предлагается два проекта:&lt;br /&gt;
http://wiki.cs.hse.ru/Децентрализованный_крипточат_(командный_проект)&lt;br /&gt;
http://wiki.cs.hse.ru/Веб-краулер_для_поиска_уязвимостей_авторизации_(командный_проект)&lt;br /&gt;
&lt;br /&gt;
==== Криптовалюты, блокчейн ====&lt;br /&gt;
По поводу курсовых работ на тему криптовалют, блокчейна можно обращаться напрямую к [[Участник:Ryavorsky|Ярославу Яворскому]] для непосредственного обсуждения. Ниже приведены примеры тем, предлагаемых в рамках проектной работы на 2-м курсе.&lt;br /&gt;
http://wiki.cs.hse.ru/Анализ_данных,_хранимых_в_реестрах_криптовалют_(проект)&lt;br /&gt;
http://wiki.cs.hse.ru/Аналитический_сервис_по_новостям_в_сфере_блокчейн_технологий_(проект)&lt;br /&gt;
http://wiki.cs.hse.ru/Тестирование_и_верификация_смарт-контрактов_(проект)&lt;br /&gt;
http://wiki.cs.hse.ru/Разработка_веб_интерфейсов_для_криптовалют_и_смарт-контрактов_(проект)&lt;br /&gt;
&lt;br /&gt;
=== Темы возможных курсовых работ ===&lt;br /&gt;
&lt;br /&gt;
==== ClickHouse (9 тем) ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:milovidov@yandex-team.ru Миловидов Алексей]&lt;br /&gt;
&lt;br /&gt;
[https://clickhouse.yandex/ ClickHouse] -- открытая колоночная СУБД, позволяющая выполнять аналитические запросы в интерактивном режиме по данным, обновляемым в реальном времени. ClickHouse разработан в Яндексе для задач Яндекс.Метрики -- второй по величине системы веб-аналитики в мире. &lt;br /&gt;
&lt;br /&gt;
В качестве тем для курсовых работ предлагается следующий набор проектов:&lt;br /&gt;
* Использование первичного ключа при ORDER BY monotonic(PK), GROUP BY injective(subset(PK)).&lt;br /&gt;
* Поддержка форматов ввода-вывода Parquet и Protobuf.&lt;br /&gt;
* Модификаторы WITH ROLLUP и WITH CUBE для GROUP BY.&lt;br /&gt;
* Поддержка вычисляемых DEFAULT выражений для полуструктурированных форматов JSONEachRow, TSKV.&lt;br /&gt;
* Short-curcuit вычисление некоторых функций.&lt;br /&gt;
* Оптимизация простых выражений с помощью генерации LLVM кода.&lt;br /&gt;
* Кэширование промежуточных данных конвейера выполнения запроса.&lt;br /&gt;
* Оптимизация алгоритма слияний.&lt;br /&gt;
* Генератор тестовых данных.&lt;br /&gt;
&lt;br /&gt;
==== Postgres Pro: Автоматизация смены мастера в кластере PostgreSQL, использующем логическую  репликацию ====&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:marat.abubekerov@gmail.com Абубекеров Марат]&lt;br /&gt;
&lt;br /&gt;
Есть кластер  PostgreSQL  с  мастером  и  несколькими  репликами.  Используется логическая  репликация.  Требуется  разработать  приложение, к оторое  в  случае  выхода мастера  из  строя  автоматически  выбирает  нового  мастера  и  переключает  на  него остальные  реплики.  Допускается з ависимость  от  сторонних  приложений,  в  частности etcd  или  Consul.&lt;br /&gt;
&lt;br /&gt;
==== Postgres Pro: Приоритезация запросов  в  РСУБД  PostgreSQL ====&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:marat.abubekerov@gmail.com Абубекеров Марат]&lt;br /&gt;
&lt;br /&gt;
Исследовать  различные  механизмы  приоритезации з апросов  в  реляционных  базах данных.  Реализовать  механизм  приоритезации з апросов  для  РСУБД  PostgreSQL. Запросы  с  большим  приоритетом  выполняются  раньше з апросов  с  низким приоритетом.  Кроме т ого,  время,  выделяемое  на  выполнение з апросов, пропорционально  их  приоритетам.  Например,  при  одновременном  выполнении  OLTP  и OLAP з апросов  становится  возможно  присвоить  первым  более  высокий  приоритет, чем  вторым.  В  результате  OLTP з апросы  будут  выполняться к ак  можно  быстрее,  а OLAP з апросы  будут  выполняться  в  фоне  с  меньшим  приоритетом.&lt;br /&gt;
&lt;br /&gt;
==== Postgres Pro: Разработка  механизма  ограничения  используемых  ресурсов  в  PostgreSQL ====&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:marat.abubekerov@gmail.com Абубекеров Марат]&lt;br /&gt;
&lt;br /&gt;
Исследование  механизмов  ограничения  использования  системных  ресурсов -   времени CPU,  оперативной  памяти,  места  на  диске,  сетевого т рафика,  и т ак  далее.  Реализация механизма  ограничения  используемых  ресурсов  по  пользователям  и  сессиям  для РСУБД  PostgreSQL.  Допускается  использование  сторонних  механизмов,  в  частности cgroups.&lt;br /&gt;
&lt;br /&gt;
==== Postgres Pro: Реализация  в  модуле  pg_trgm  поиска  по  N-граммам  с  N  &amp;gt;  3 ====&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:marat.abubekerov@gmail.com Абубекеров Марат]&lt;br /&gt;
&lt;br /&gt;
Модуль  pg_trgm  для  PostgreSQL  позволяет  делать  индексы  по т риграммам  для нечеткого  поиска.  К  примеру,  слово &#039; молоко&#039;  будет  разложено  на  массив триграмм [ мол,  оло,  лок,  око]  и  если  поисковый  слово  содержит  опечатку, т о большинство т риграмм  останется  неизменным.  Это  свойство  используется  для поиска:  можно  разложить  искомые  слова/фразы  на т риграммы,  построить  по ним  обратный ( инвертированный)  индекс  и  при  поиске  искать  документы  с максимальным  числом  одинаковых т риграмм.  Такой  подход  хорошо  и  быстро работает  на  словах  и  небольших  фразах.&lt;br /&gt;
Однако  данный  подход  не  эффективен,  если  поиск  ведется  по  предложениям. Так к ак  предложение  большое, т о  разных т риграмм  от к аждого  документа получается  много  и  поисковый з апрос  будет  пересекаться  с  очень  большим количеством  строк  в т аблице.  Чтобы  избежать  этого,  предлагается реализовать  поддержку  не т риграмм,  а  на  N-грамм  с  N=  4,  5  и т ак  далее.  Тогда разных  N-грам  ставится  экспоненциально  больше  с  ростом  N  и  соответственно вероятность  встретить  данную  N-грамму -   меньше,  следовательно  при  поиске требуется  проверять  на  соответствие  меньше  строк  и  поиск  становится эффективнее.&lt;br /&gt;
&lt;br /&gt;
==== Улучшение симулятора планировщика ресурсов кластера ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:ignat@yandex-team.ru Игнатий Игоревич Колесниченко]&lt;br /&gt;
&lt;br /&gt;
В системе [https://habrahabr.ru/company/yandex/blog/311104/ YT] одна из наиболее значимых компонент -- это планировщик вычислений. Именно он отвечает за распределение ресурсов кластера между пользователями с учетом их требований и желаемых гарантий (зачастую, противоречивых). От эффективности работы планировщика зависит общая эффективность работы кластера и удовлетворенность пользователей. Для проведения оффлайн-экспериментов над алгоритмами планировщика был разработан симулятор, использующий &amp;quot;трейс&amp;quot; событий, снятый с реального кластера (запуск вычислений, освобождение вычислительных ресурсов, потеря вычислений в результате сбоя, и др.). Ниже представлены возможные направления для последующих исследований и улучшений данной функциональности.&lt;br /&gt;
&lt;br /&gt;
В текущей версии симулятора известен ряд недоработок, существенно влияющих на качество симуляции. Например, текущий симулятор не учитывает зависимость вычислений между собой (когда выход одного вычисления используется как вход для другого). За счет использования метаинформации (имя пользователя, время начала/окончания вычислений, именование входных/выходных данных) можно было бы восстановить данные зависимости, что позволит существенно улучшить качество симуляции и, соответственно, качество вычисляемых метрик для цепочек вычислений.&lt;br /&gt;
&lt;br /&gt;
==== Формальная спецификация HDFS с использованием TLA+ ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:sandello@yandex-team.ru Иван Витальевич Пузыревский]&lt;br /&gt;
&lt;br /&gt;
HDFS (Hadoop Distributed File System) -- распределенная отказоустойчивая файловая система. В данной работе предлагается разработать и проверить формальную спецификацию системы с помощью [http://research.microsoft.com/en-us/um/people/lamport/tla/tla.html TLA+].&lt;br /&gt;
&lt;br /&gt;
==== Фреймворк для изучения, разработки и тестирования распределенных алгоритмов при наличии отказов ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:sandello@yandex-team.ru Иван Витальевич Пузыревский]&lt;br /&gt;
&lt;br /&gt;
При анализе и реализации распределенных алгоритмов наиболее сложной частью является обработка отказов, сетевых или процессных. В большинстве языков программирования и в большинстве прикладных библиотек существуют только базовые возможности для тестирования и проверки распределенного алгоритма в условиях сетевых сбоев. В рамках данной работы предлагается минимально интрузивным образом подменить сетевые взаимодействия в сетевых приложениях с целью последующего изучения и изменения характера коммуникации. В первом приближении можно считать, что вся сетевая коммуникация проходит через некоторого &amp;quot;оракула&amp;quot;, который определяет факт и порядок доставки сообщений, величину сетевых задержек, корректность данных. &lt;br /&gt;
&lt;br /&gt;
==== Исследование применимости фонтанирующих кодов в сетевых протоколах как альтернатива обратной связи, основанной на потере пакетов ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:sandello@yandex-team.ru Иван Витальевич Пузыревский]&lt;br /&gt;
&lt;br /&gt;
Современные сетевые протоколы для оценки эффективной пропускной способности сети опираются на &#039;&#039;сетевые потери&#039;&#039;: при переполнении буферов, очереди, или каких-либо других ресурсов во время доставки пакета, последний просто отбрасывается; на оценке доли отброшенных пакетов строится управление трафиком, например, в протоколе TCP. Определение факта потери пакета использует часы (таймауты), что в случае приложений, чувствительных к сетевым задержкам, приводит к всплескам латентности. В рамках данной работы предлагается исследовать возможность применения фонтанирующих кодов ([https://en.wikipedia.org/wiki/Fountain_code wiki]) для обеспечения гарантированной доставки данных в случае сетевых потерь.&lt;br /&gt;
&lt;br /&gt;
==== Имитационное моделирование вычислительных ресурсов и распределенных вычислительных инфраструктур ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:oleg.sukhoroslov@gmail.com Олег Викторович Сухорослов]&lt;br /&gt;
&lt;br /&gt;
Имитационное моделирование активно используется в исследованиях распределенных систем, заменяя натурные эксперименты и позволяя воспроизводимым образом сравнивать между собой различные методы (например, алгоритмы планирования задач). В данной работе объектом моделирования являются распределенные вычислительные инфраструктуры, состоящие из нескольких автономных ресурсов различного типа (кластеров, гридов, облаков, персональных компьютеров). Для реалистичного моделирования таких инфраструктур требуется хорошо моделировать отдельные ресурсы, их планировщики, нагрузку и доступность, а также передачу данных по сети. Для данных целей предлагается использовать [http://simgrid.gforge.inria.fr/ SimGrid], фреймворк для создания симуляторов распределенных систем. Требуется улучшить имеющиеся или реализовать новые модели ресурсов (например, кластер с планировщиком и внутренним потоком заданий), а также интегрировать их в единую модель. Возможны отдельные подтемы и работа в команде.&lt;br /&gt;
&lt;br /&gt;
==== Симуляция и сравнительный анализ алгоритмов планирования задач в распределенных вычислительных системах ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:oleg.sukhoroslov@gmail.com Олег Викторович Сухорослов]&lt;br /&gt;
&lt;br /&gt;
Планирование выполнения задач в распределенных системах в постановках, представляющих практический интерес, является NP-полной задачей. За последнее десятилетие было предложено множество алгоритмов планирования, основанных на различного рода (мета)эвристиках и ориентированных на различные классы приложений (bag of tasks, parallel job, workflow) и систем. При этом недостаточно хорошо изучен вопрос об области применимости и сравнительной эффективности данных алгоритмов в различных ситуациях. В данной работе предлагается реализовать на базе существующего симулятора наиболее известные алгоритмы и сравнить их друг с другом путем проведения имитационных экспериментов для различных типов приложений и систем. Возможны отдельные подтемы и работа в команде.&lt;br /&gt;
&lt;br /&gt;
==== Исследование и экспериментальная оценка технологий распределенных вычислений на основе pilot jobs ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:oleg.sukhoroslov@gmail.com Олег Викторович Сухорослов]&lt;br /&gt;
&lt;br /&gt;
При реализации крупномасштабных вычислений на базе распределенных ресурсов с собственными планировщиками часто используется стратегия pilot jobs. Данная стратегия, заключающаяся в запуске на ресурсах заданий-агентов с последующим динамическим распределением по ним задач, позволяет уменьшить влияние задержек в очередях ресурсов и накладные расходы на запуск задач. В настоящее время существует несколько технологий (pilot job frameworks), реализующих данный подход, например HTCondor, DIANE, BigJob, Swift, DIRAC. В данной работе предлагается изучить и сравнить между собой несколько данных технологий путем их развертывания и проведения экспериментов на тестовой инфраструктуре. Особое внимание планируется уделить сравнению производительности различных решений, оценке их масштабируемости, выявлению узких мест и поиску способов их устранения.&lt;br /&gt;
&lt;br /&gt;
==== Использование простаивающих вычислительных ресурсов для распределенных вычислений на базе платформы Everest ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:oleg.sukhoroslov@gmail.com Олег Викторович Сухорослов]&lt;br /&gt;
&lt;br /&gt;
Платформа [http://everest.distcomp.org/ Everest], разрабатываемая в ИППИ РАН, позволяет публиковать в виде веб-сервисов вычислительные приложения и запускать через веб-интерфейс расчеты на произвольных комбинациях внешних ресурсов, подключенных пользователями к платформе. Интеграция ресурсов с платформой реализована на основе специально разработанного агента, который выполняется на стороне ресурса. В настоящее время агент поддерживает запуск задач на одиночной машине (в монопольном режиме) и кластере (с приоритетом обычного пользователя), не учитывая внешнюю нагрузку на ресурс. В данной работе предлагается реализовать поддержку использования ресурса только в моменты его простоя, что требует мониторинга текущей загрузки ресурса и динамического управления задачами. При этом планируется использовать опыт и наработки систем, ориентированных на использование простаивающих персональных компьютеров (BOINC, Condor).&lt;br /&gt;
&lt;br /&gt;
==== Реализация универсального вычислительного агента для систем распределенных вычислений ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:oleg.sukhoroslov@gmail.com Олег Викторович Сухорослов]&lt;br /&gt;
&lt;br /&gt;
Платформа [http://everest.distcomp.org/ Everest], разрабатываемая в ИППИ РАН, позволяет публиковать в виде веб-сервисов вычислительные приложения и запускать через веб-интерфейс расчеты на произвольных комбинациях внешних ресурсов, подключенных пользователями к платформе. Интеграция ресурсов с платформой реализована на основе специально разработанного агента, который выполняется на стороне ресурса. Агент написан на языке Python с использованием фреймворка Tornado и реализует асинхронную обработку, запуск и мониторинг поступающих задач, загрузку данных и обмен сообщениями с платформой. В данной работе предлагается реализовать принципиально новую версию агента на языке Go. Помимо имеющейся функциональности планируется реализовать прямое взаимодействие по сети между агентами, автоматическое обновление кода агента, а также обеспечить универсальность агента для его использования с другими системами распределенных вычислений.&lt;br /&gt;
&lt;br /&gt;
==== Исследование и реализация методов прямой передачи данных по сети между узлами за NAT и межсетевыми экранами ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:oleg.sukhoroslov@gmail.com Олег Викторович Сухорослов]&lt;br /&gt;
&lt;br /&gt;
При реализации распределенных вычислений в глобальной сети часто возникает задача передачи данных между двумя машинами или ресурсами, находящимися в различных географических точках. При этом зачастую между данными машинами в сети находятся  устройства, выполняющие трансляцию адресов (NAT) и межсетевые экраны, что затрудняет установление прямого соединения. Подход, использующий промежуточный сервер для обмена данными, обладает низкой эффективностью в случае передачи больших объемов данных или частых обменов. В данной работе предлагается изучить существующие методы прямой передачи данных между хостами в глобальной сети, реализовать некоторые из этих методов и экспериментально сравнить их эффективность.&lt;br /&gt;
&lt;br /&gt;
==== Исследование и экспериментальная оценка методов обеспечения отказоустойчивости MPI-приложений ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:oleg.sukhoroslov@gmail.com Олег Викторович Сухорослов]&lt;br /&gt;
&lt;br /&gt;
Одной из основных проблем, связанных с использованием в будущем мощных вычислительных систем уровня [https://en.wikipedia.org/wiki/Exascale_computing exascale], является обеспечение устойчивости параллельных программ к отказам. Поскольку данные системы могут включать миллионы процессоров, выполняющих до миллиарда потоков, то ожидается что в них с высокой частотой (до нескольких раз в час) будут возникать всевозможные сбои на аппаратном и программном уровнях, приводящие к падению процессов или потере данных. Традиционные методы, такие как checkpointing, становятся неэффективными в условиях, когда сохранение состояния требует времени сопоставимого с частотой отказов. В настоящее время активно ведется разработка новых методов, нацеленных на решение данной проблемы, в частности применительно к выполнению MPI-программ. В данной работе предлагается изучить данные методы, провести их экспериментальную оценку и, возможно, улучшить.&lt;/div&gt;</summary>
		<author><name>Sandello</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=%D0%A1%D0%BF%D0%B8%D1%81%D0%BE%D0%BA_%D0%BA%D1%83%D1%80%D1%81%D0%BE%D0%B2%D1%8B%D1%85_%D1%80%D0%B0%D0%B1%D0%BE%D1%82._%D0%A0%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B&amp;diff=25569</id>
		<title>Список курсовых работ. Распределенные системы</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=%D0%A1%D0%BF%D0%B8%D1%81%D0%BE%D0%BA_%D0%BA%D1%83%D1%80%D1%81%D0%BE%D0%B2%D1%8B%D1%85_%D1%80%D0%B0%D0%B1%D0%BE%D1%82._%D0%A0%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B&amp;diff=25569"/>
		<updated>2017-10-30T08:39:08Z</updated>

		<summary type="html">&lt;p&gt;Sandello: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;По годам:&lt;br /&gt;
* 2017-2018 учебный год (текущий): [[Темы для курсовых работ 2017 (РС)]]&lt;br /&gt;
* 2016-2017 учебный год (архив): [[Темы для курсовых работ 2016 (РС)]]&lt;/div&gt;</summary>
		<author><name>Sandello</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=%D0%9D%D0%98%D0%A1_%D0%A0%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_(4_%D0%BA%D1%83%D1%80%D1%81,_2017)&amp;diff=25568</id>
		<title>НИС Распределенные системы (4 курс, 2017)</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=%D0%9D%D0%98%D0%A1_%D0%A0%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_(4_%D0%BA%D1%83%D1%80%D1%81,_2017)&amp;diff=25568"/>
		<updated>2017-10-30T08:36:51Z</updated>

		<summary type="html">&lt;p&gt;Sandello: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Информация про семинар ==&lt;br /&gt;
В рамках научно-исследовательского семинара по распределенным системам изучаются основные понятия, принципы и результаты предметной области. &lt;br /&gt;
&lt;br /&gt;
Контакты: [mailto:sandello@gmail.com Пузыревский Иван Витальевич]&lt;br /&gt;
&lt;br /&gt;
Список тем курсовых работ: http://wiki.cs.hse.ru/Темы_для_курсовых_работ_2017_(РС)&lt;br /&gt;
&lt;br /&gt;
=== Оценка ===&lt;br /&gt;
&lt;br /&gt;
[TBD]&lt;br /&gt;
&lt;br /&gt;
Текущая таблица с оценками, ведомостью и заданиями: https://docs.google.com/spreadsheets/d/1YnHTdQ3RvAfMdMk2PMUYac1jM71-ApJBoWvB4w_Qkrc/edit?usp=sharing&lt;br /&gt;
&lt;br /&gt;
== Занятия ==&lt;br /&gt;
&lt;br /&gt;
=== 1 модуль ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;7 сентября&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Вводное занятие.&lt;br /&gt;
&lt;br /&gt;
== Домашние Задания ==&lt;br /&gt;
&lt;br /&gt;
=== ДЗ1. Игра на blockchain ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Сроки: конец 2 модуля&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Полезные ссылки: ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Solidity online IDE&#039;&#039; - http://remix.ethereum.org/&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Private testnet&#039;&#039; - https://souptacular.gitbooks.io/ethereum-tutorials-and-tips-by-hudson/content/private-chain.html&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Solidity from Python&#039;&#039; - http://ecomunsing.com/tutorial-controlling-ethereum-with-python&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Код с семинара&#039;&#039; - http://bit.ly/2wzqu0q&lt;/div&gt;</summary>
		<author><name>Sandello</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=%D0%A2%D0%B5%D0%BC%D1%8B_%D0%B4%D0%BB%D1%8F_%D0%BA%D1%83%D1%80%D1%81%D0%BE%D0%B2%D1%8B%D1%85_%D1%80%D0%B0%D0%B1%D0%BE%D1%82_2017_(%D0%A0%D0%A1)&amp;diff=25567</id>
		<title>Темы для курсовых работ 2017 (РС)</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=%D0%A2%D0%B5%D0%BC%D1%8B_%D0%B4%D0%BB%D1%8F_%D0%BA%D1%83%D1%80%D1%81%D0%BE%D0%B2%D1%8B%D1%85_%D1%80%D0%B0%D0%B1%D0%BE%D1%82_2017_(%D0%A0%D0%A1)&amp;diff=25567"/>
		<updated>2017-10-30T08:36:29Z</updated>

		<summary type="html">&lt;p&gt;Sandello: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Курсовые работы ==&lt;br /&gt;
&lt;br /&gt;
Ниже приведены описания возможных проектов курсовой работы (напоминаю, что на третьем курсе в качестве курсовой работы засчитывается и [http://wiki.cs.hse.ru/Проектная_работа проектная работа]).&lt;br /&gt;
&lt;br /&gt;
Если вас заинтересовала какая-либо из предложенных тем и вы хотите над ней поработать в рамках вашей курсовой работы, то ваша последовательность действий такая:&lt;br /&gt;
# напишите письмо руководителю темы, в копию письма добавьте Пузыревского Ивана (ipuzyrevskiy@hse.ru); укажите, над какой задачей вы хотите поработать; укажите релевантную информацию про вас (публичный github, опыт по теме, что вы сочтете нужным);&lt;br /&gt;
# далее, вам нужно с руководителем обсудить задачу и возможность работы над ней; обычно руководитель вам чуть более подробно вам расскажет, что от вас будет требоваться, вы обсудите, насколько реально вам выполнить предлагаемую работу;&lt;br /&gt;
# в конечном итоге, вы вместе с руководителем приходите или к положительному решению (вы работаете над оговоренной задачей), или к отрицательному (вам необходимо выбрать другую тему курсовой работы).&lt;br /&gt;
&lt;br /&gt;
=== Рекомендуемые темы проектной работы ===&lt;br /&gt;
&lt;br /&gt;
==== Безопасность ====&lt;br /&gt;
По поводу тем курсовых работ на тему информационной безопасности можно обращаться напрямую к [[mailto:gamajun@gmail.com|Денису Гамаюнову]]. В рамках командной проектной работы предлагается два проекта:&lt;br /&gt;
http://wiki.cs.hse.ru/Децентрализованный_крипточат_(командный_проект)&lt;br /&gt;
http://wiki.cs.hse.ru/Веб-краулер_для_поиска_уязвимостей_авторизации_(командный_проект)&lt;br /&gt;
&lt;br /&gt;
==== Криптовалюты, блокчейн ====&lt;br /&gt;
По поводу курсовых работ на тему криптовалют, блокчейна можно обращаться напрямую к [[Участник:Ryavorsky|Ярославу Яворскому]] для непосредственного обсуждения. Ниже приведены примеры тем, предлагаемых в рамках проектной работы на 2-м курсе.&lt;br /&gt;
http://wiki.cs.hse.ru/Анализ_данных,_хранимых_в_реестрах_криптовалют_(проект)&lt;br /&gt;
http://wiki.cs.hse.ru/Аналитический_сервис_по_новостям_в_сфере_блокчейн_технологий_(проект)&lt;br /&gt;
http://wiki.cs.hse.ru/Тестирование_и_верификация_смарт-контрактов_(проект)&lt;br /&gt;
http://wiki.cs.hse.ru/Разработка_веб_интерфейсов_для_криптовалют_и_смарт-контрактов_(проект)&lt;br /&gt;
&lt;br /&gt;
=== Темы возможных курсовых работ ===&lt;br /&gt;
&lt;br /&gt;
!! &#039;&#039;&#039;Список тем еще дополняется / расширяется.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== ClickHouse (9 тем) ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:milovidov@yandex-team.ru Миловидов Алексей]&lt;br /&gt;
&lt;br /&gt;
[https://clickhouse.yandex/ ClickHouse] -- открытая колоночная СУБД, позволяющая выполнять аналитические запросы в интерактивном режиме по данным, обновляемым в реальном времени. ClickHouse разработан в Яндексе для задач Яндекс.Метрики -- второй по величине системы веб-аналитики в мире. &lt;br /&gt;
&lt;br /&gt;
В качестве тем для курсовых работ предлагается следующий набор проектов:&lt;br /&gt;
* Использование первичного ключа при ORDER BY monotonic(PK), GROUP BY injective(subset(PK)).&lt;br /&gt;
* Поддержка форматов ввода-вывода Parquet и Protobuf.&lt;br /&gt;
* Модификаторы WITH ROLLUP и WITH CUBE для GROUP BY.&lt;br /&gt;
* Поддержка вычисляемых DEFAULT выражений для полуструктурированных форматов JSONEachRow, TSKV.&lt;br /&gt;
* Short-curcuit вычисление некоторых функций.&lt;br /&gt;
* Оптимизация простых выражений с помощью генерации LLVM кода.&lt;br /&gt;
* Кэширование промежуточных данных конвейера выполнения запроса.&lt;br /&gt;
* Оптимизация алгоритма слияний.&lt;br /&gt;
* Генератор тестовых данных.&lt;br /&gt;
&lt;br /&gt;
==== Postgres Pro: Автоматизация смены мастера в кластере PostgreSQL, использующем логическую  репликацию ====&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:marat.abubekerov@gmail.com Абубекеров Марат]&lt;br /&gt;
&lt;br /&gt;
Есть кластер  PostgreSQL  с  мастером  и  несколькими  репликами.  Используется логическая  репликация.  Требуется  разработать  приложение, к оторое  в  случае  выхода мастера  из  строя  автоматически  выбирает  нового  мастера  и  переключает  на  него остальные  реплики.  Допускается з ависимость  от  сторонних  приложений,  в  частности etcd  или  Consul.&lt;br /&gt;
&lt;br /&gt;
==== Postgres Pro: Приоритезация запросов  в  РСУБД  PostgreSQL ====&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:marat.abubekerov@gmail.com Абубекеров Марат]&lt;br /&gt;
&lt;br /&gt;
Исследовать  различные  механизмы  приоритезации з апросов  в  реляционных  базах данных.  Реализовать  механизм  приоритезации з апросов  для  РСУБД  PostgreSQL. Запросы  с  большим  приоритетом  выполняются  раньше з апросов  с  низким приоритетом.  Кроме т ого,  время,  выделяемое  на  выполнение з апросов, пропорционально  их  приоритетам.  Например,  при  одновременном  выполнении  OLTP  и OLAP з апросов  становится  возможно  присвоить  первым  более  высокий  приоритет, чем  вторым.  В  результате  OLTP з апросы  будут  выполняться к ак  можно  быстрее,  а OLAP з апросы  будут  выполняться  в  фоне  с  меньшим  приоритетом.&lt;br /&gt;
&lt;br /&gt;
==== Postgres Pro: Разработка  механизма  ограничения  используемых  ресурсов  в  PostgreSQL ====&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:marat.abubekerov@gmail.com Абубекеров Марат]&lt;br /&gt;
&lt;br /&gt;
Исследование  механизмов  ограничения  использования  системных  ресурсов -   времени CPU,  оперативной  памяти,  места  на  диске,  сетевого т рафика,  и т ак  далее.  Реализация механизма  ограничения  используемых  ресурсов  по  пользователям  и  сессиям  для РСУБД  PostgreSQL.  Допускается  использование  сторонних  механизмов,  в  частности cgroups.&lt;br /&gt;
&lt;br /&gt;
==== Postgres Pro: Реализация  в  модуле  pg_trgm  поиска  по  N-граммам  с  N  &amp;gt;  3 ====&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:marat.abubekerov@gmail.com Абубекеров Марат]&lt;br /&gt;
&lt;br /&gt;
Модуль  pg_trgm  для  PostgreSQL  позволяет  делать  индексы  по т риграммам  для нечеткого  поиска.  К  примеру,  слово &#039; молоко&#039;  будет  разложено  на  массив триграмм [ мол,  оло,  лок,  око]  и  если  поисковый  слово  содержит  опечатку, т о большинство т риграмм  останется  неизменным.  Это  свойство  используется  для поиска:  можно  разложить  искомые  слова/фразы  на т риграммы,  построить  по ним  обратный ( инвертированный)  индекс  и  при  поиске  искать  документы  с максимальным  числом  одинаковых т риграмм.  Такой  подход  хорошо  и  быстро работает  на  словах  и  небольших  фразах.&lt;br /&gt;
Однако  данный  подход  не  эффективен,  если  поиск  ведется  по  предложениям. Так к ак  предложение  большое, т о  разных т риграмм  от к аждого  документа получается  много  и  поисковый з апрос  будет  пересекаться  с  очень  большим количеством  строк  в т аблице.  Чтобы  избежать  этого,  предлагается реализовать  поддержку  не т риграмм,  а  на  N-грамм  с  N=  4,  5  и т ак  далее.  Тогда разных  N-грам  ставится  экспоненциально  больше  с  ростом  N  и  соответственно вероятность  встретить  данную  N-грамму -   меньше,  следовательно  при  поиске требуется  проверять  на  соответствие  меньше  строк  и  поиск  становится эффективнее.&lt;br /&gt;
&lt;br /&gt;
==== Улучшение симулятора планировщика ресурсов кластера ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:ignat@yandex-team.ru Игнатий Игоревич Колесниченко]&lt;br /&gt;
&lt;br /&gt;
В системе [https://habrahabr.ru/company/yandex/blog/311104/ YT] одна из наиболее значимых компонент -- это планировщик вычислений. Именно он отвечает за распределение ресурсов кластера между пользователями с учетом их требований и желаемых гарантий (зачастую, противоречивых). От эффективности работы планировщика зависит общая эффективность работы кластера и удовлетворенность пользователей. Для проведения оффлайн-экспериментов над алгоритмами планировщика был разработан симулятор, использующий &amp;quot;трейс&amp;quot; событий, снятый с реального кластера (запуск вычислений, освобождение вычислительных ресурсов, потеря вычислений в результате сбоя, и др.). Ниже представлены возможные направления для последующих исследований и улучшений данной функциональности.&lt;br /&gt;
&lt;br /&gt;
В текущей версии симулятора известен ряд недоработок, существенно влияющих на качество симуляции. Например, текущий симулятор не учитывает зависимость вычислений между собой (когда выход одного вычисления используется как вход для другого). За счет использования метаинформации (имя пользователя, время начала/окончания вычислений, именование входных/выходных данных) можно было бы восстановить данные зависимости, что позволит существенно улучшить качество симуляции и, соответственно, качество вычисляемых метрик для цепочек вычислений.&lt;br /&gt;
&lt;br /&gt;
==== Формальная спецификация HDFS с использованием TLA+ ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:sandello@yandex-team.ru Иван Витальевич Пузыревский]&lt;br /&gt;
&lt;br /&gt;
HDFS (Hadoop Distributed File System) -- распределенная отказоустойчивая файловая система. В данной работе предлагается разработать и проверить формальную спецификацию системы с помощью [http://research.microsoft.com/en-us/um/people/lamport/tla/tla.html TLA+].&lt;br /&gt;
&lt;br /&gt;
==== Фреймворк для изучения, разработки и тестирования распределенных алгоритмов при наличии отказов ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:sandello@yandex-team.ru Иван Витальевич Пузыревский]&lt;br /&gt;
&lt;br /&gt;
При анализе и реализации распределенных алгоритмов наиболее сложной частью является обработка отказов, сетевых или процессных. В большинстве языков программирования и в большинстве прикладных библиотек существуют только базовые возможности для тестирования и проверки распределенного алгоритма в условиях сетевых сбоев. В рамках данной работы предлагается минимально интрузивным образом подменить сетевые взаимодействия в сетевых приложениях с целью последующего изучения и изменения характера коммуникации. В первом приближении можно считать, что вся сетевая коммуникация проходит через некоторого &amp;quot;оракула&amp;quot;, который определяет факт и порядок доставки сообщений, величину сетевых задержек, корректность данных. &lt;br /&gt;
&lt;br /&gt;
==== Исследование применимости фонтанирующих кодов в сетевых протоколах как альтернатива обратной связи, основанной на потере пакетов ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:sandello@yandex-team.ru Иван Витальевич Пузыревский]&lt;br /&gt;
&lt;br /&gt;
Современные сетевые протоколы для оценки эффективной пропускной способности сети опираются на &#039;&#039;сетевые потери&#039;&#039;: при переполнении буферов, очереди, или каких-либо других ресурсов во время доставки пакета, последний просто отбрасывается; на оценке доли отброшенных пакетов строится управление трафиком, например, в протоколе TCP. Определение факта потери пакета использует часы (таймауты), что в случае приложений, чувствительных к сетевым задержкам, приводит к всплескам латентности. В рамках данной работы предлагается исследовать возможность применения фонтанирующих кодов ([https://en.wikipedia.org/wiki/Fountain_code wiki]) для обеспечения гарантированной доставки данных в случае сетевых потерь.&lt;br /&gt;
&lt;br /&gt;
==== Имитационное моделирование вычислительных ресурсов и распределенных вычислительных инфраструктур ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:oleg.sukhoroslov@gmail.com Олег Викторович Сухорослов]&lt;br /&gt;
&lt;br /&gt;
Имитационное моделирование активно используется в исследованиях распределенных систем, заменяя натурные эксперименты и позволяя воспроизводимым образом сравнивать между собой различные методы (например, алгоритмы планирования задач). В данной работе объектом моделирования являются распределенные вычислительные инфраструктуры, состоящие из нескольких автономных ресурсов различного типа (кластеров, гридов, облаков, персональных компьютеров). Для реалистичного моделирования таких инфраструктур требуется хорошо моделировать отдельные ресурсы, их планировщики, нагрузку и доступность, а также передачу данных по сети. Для данных целей предлагается использовать [http://simgrid.gforge.inria.fr/ SimGrid], фреймворк для создания симуляторов распределенных систем. Требуется улучшить имеющиеся или реализовать новые модели ресурсов (например, кластер с планировщиком и внутренним потоком заданий), а также интегрировать их в единую модель. Возможны отдельные подтемы и работа в команде.&lt;br /&gt;
&lt;br /&gt;
==== Симуляция и сравнительный анализ алгоритмов планирования задач в распределенных вычислительных системах ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:oleg.sukhoroslov@gmail.com Олег Викторович Сухорослов]&lt;br /&gt;
&lt;br /&gt;
Планирование выполнения задач в распределенных системах в постановках, представляющих практический интерес, является NP-полной задачей. За последнее десятилетие было предложено множество алгоритмов планирования, основанных на различного рода (мета)эвристиках и ориентированных на различные классы приложений (bag of tasks, parallel job, workflow) и систем. При этом недостаточно хорошо изучен вопрос об области применимости и сравнительной эффективности данных алгоритмов в различных ситуациях. В данной работе предлагается реализовать на базе существующего симулятора наиболее известные алгоритмы и сравнить их друг с другом путем проведения имитационных экспериментов для различных типов приложений и систем. Возможны отдельные подтемы и работа в команде.&lt;br /&gt;
&lt;br /&gt;
==== Исследование и экспериментальная оценка технологий распределенных вычислений на основе pilot jobs ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:oleg.sukhoroslov@gmail.com Олег Викторович Сухорослов]&lt;br /&gt;
&lt;br /&gt;
При реализации крупномасштабных вычислений на базе распределенных ресурсов с собственными планировщиками часто используется стратегия pilot jobs. Данная стратегия, заключающаяся в запуске на ресурсах заданий-агентов с последующим динамическим распределением по ним задач, позволяет уменьшить влияние задержек в очередях ресурсов и накладные расходы на запуск задач. В настоящее время существует несколько технологий (pilot job frameworks), реализующих данный подход, например HTCondor, DIANE, BigJob, Swift, DIRAC. В данной работе предлагается изучить и сравнить между собой несколько данных технологий путем их развертывания и проведения экспериментов на тестовой инфраструктуре. Особое внимание планируется уделить сравнению производительности различных решений, оценке их масштабируемости, выявлению узких мест и поиску способов их устранения.&lt;br /&gt;
&lt;br /&gt;
==== Использование простаивающих вычислительных ресурсов для распределенных вычислений на базе платформы Everest ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:oleg.sukhoroslov@gmail.com Олег Викторович Сухорослов]&lt;br /&gt;
&lt;br /&gt;
Платформа [http://everest.distcomp.org/ Everest], разрабатываемая в ИППИ РАН, позволяет публиковать в виде веб-сервисов вычислительные приложения и запускать через веб-интерфейс расчеты на произвольных комбинациях внешних ресурсов, подключенных пользователями к платформе. Интеграция ресурсов с платформой реализована на основе специально разработанного агента, который выполняется на стороне ресурса. В настоящее время агент поддерживает запуск задач на одиночной машине (в монопольном режиме) и кластере (с приоритетом обычного пользователя), не учитывая внешнюю нагрузку на ресурс. В данной работе предлагается реализовать поддержку использования ресурса только в моменты его простоя, что требует мониторинга текущей загрузки ресурса и динамического управления задачами. При этом планируется использовать опыт и наработки систем, ориентированных на использование простаивающих персональных компьютеров (BOINC, Condor).&lt;br /&gt;
&lt;br /&gt;
==== Реализация универсального вычислительного агента для систем распределенных вычислений ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:oleg.sukhoroslov@gmail.com Олег Викторович Сухорослов]&lt;br /&gt;
&lt;br /&gt;
Платформа [http://everest.distcomp.org/ Everest], разрабатываемая в ИППИ РАН, позволяет публиковать в виде веб-сервисов вычислительные приложения и запускать через веб-интерфейс расчеты на произвольных комбинациях внешних ресурсов, подключенных пользователями к платформе. Интеграция ресурсов с платформой реализована на основе специально разработанного агента, который выполняется на стороне ресурса. Агент написан на языке Python с использованием фреймворка Tornado и реализует асинхронную обработку, запуск и мониторинг поступающих задач, загрузку данных и обмен сообщениями с платформой. В данной работе предлагается реализовать принципиально новую версию агента на языке Go. Помимо имеющейся функциональности планируется реализовать прямое взаимодействие по сети между агентами, автоматическое обновление кода агента, а также обеспечить универсальность агента для его использования с другими системами распределенных вычислений.&lt;br /&gt;
&lt;br /&gt;
==== Исследование и реализация методов прямой передачи данных по сети между узлами за NAT и межсетевыми экранами ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:oleg.sukhoroslov@gmail.com Олег Викторович Сухорослов]&lt;br /&gt;
&lt;br /&gt;
При реализации распределенных вычислений в глобальной сети часто возникает задача передачи данных между двумя машинами или ресурсами, находящимися в различных географических точках. При этом зачастую между данными машинами в сети находятся  устройства, выполняющие трансляцию адресов (NAT) и межсетевые экраны, что затрудняет установление прямого соединения. Подход, использующий промежуточный сервер для обмена данными, обладает низкой эффективностью в случае передачи больших объемов данных или частых обменов. В данной работе предлагается изучить существующие методы прямой передачи данных между хостами в глобальной сети, реализовать некоторые из этих методов и экспериментально сравнить их эффективность.&lt;br /&gt;
&lt;br /&gt;
==== Исследование и экспериментальная оценка методов обеспечения отказоустойчивости MPI-приложений ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:oleg.sukhoroslov@gmail.com Олег Викторович Сухорослов]&lt;br /&gt;
&lt;br /&gt;
Одной из основных проблем, связанных с использованием в будущем мощных вычислительных систем уровня [https://en.wikipedia.org/wiki/Exascale_computing exascale], является обеспечение устойчивости параллельных программ к отказам. Поскольку данные системы могут включать миллионы процессоров, выполняющих до миллиарда потоков, то ожидается что в них с высокой частотой (до нескольких раз в час) будут возникать всевозможные сбои на аппаратном и программном уровнях, приводящие к падению процессов или потере данных. Традиционные методы, такие как checkpointing, становятся неэффективными в условиях, когда сохранение состояния требует времени сопоставимого с частотой отказов. В настоящее время активно ведется разработка новых методов, нацеленных на решение данной проблемы, в частности применительно к выполнению MPI-программ. В данной работе предлагается изучить данные методы, провести их экспериментальную оценку и, возможно, улучшить.&lt;/div&gt;</summary>
		<author><name>Sandello</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=%D0%A2%D0%B5%D0%BC%D1%8B_%D0%B4%D0%BB%D1%8F_%D0%BA%D1%83%D1%80%D1%81%D0%BE%D0%B2%D1%8B%D1%85_%D1%80%D0%B0%D0%B1%D0%BE%D1%82_2017_(%D0%A0%D0%A1)&amp;diff=25566</id>
		<title>Темы для курсовых работ 2017 (РС)</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=%D0%A2%D0%B5%D0%BC%D1%8B_%D0%B4%D0%BB%D1%8F_%D0%BA%D1%83%D1%80%D1%81%D0%BE%D0%B2%D1%8B%D1%85_%D1%80%D0%B0%D0%B1%D0%BE%D1%82_2017_(%D0%A0%D0%A1)&amp;diff=25566"/>
		<updated>2017-10-30T08:36:03Z</updated>

		<summary type="html">&lt;p&gt;Sandello: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Курсовые работы ==&lt;br /&gt;
&lt;br /&gt;
Ниже приведены описания возможных проектов курсовой работы (напоминаю, что на третьем курсе в качестве курсовой работы засчитывается и [http://wiki.cs.hse.ru/Проектная_работа проектная работа]).&lt;br /&gt;
&lt;br /&gt;
Если вас заинтересовала какая-либо из предложенных тем и вы хотите над ней поработать в рамках вашей курсовой работы, то ваша последовательность действий такая:&lt;br /&gt;
# напишите письмо руководителю темы, в копию письма добавьте Пузыревского Ивана (ipuzyrevskiy@hse.ru); укажите, над какой задачей вы хотите поработать; укажите релевантную информацию про вас (публичный github, опыт по теме, что вы сочтете нужным);&lt;br /&gt;
# далее, вам нужно с руководителем обсудить задачу и возможность работы над ней; обычно руководитель вам чуть более подробно вам расскажет, что от вас будет требоваться, вы обсудите, насколько реально вам выполнить предлагаемую работу;&lt;br /&gt;
# в конечном итоге, вы вместе с руководителем приходите или к положительному решению (вы работаете над оговоренной задачей), или к отрицательному (вам необходимо выбрать другую тему курсовой работы).&lt;br /&gt;
&lt;br /&gt;
=== Рекомендуемые темы проектной работы ===&lt;br /&gt;
&lt;br /&gt;
==== Безопасность ====&lt;br /&gt;
По поводу тем курсовых работ на тему информационной безопасности можно обращаться напрямую к [[mailto:gamajun@gmail.com|Денису Гамаюнову]]. В рамках командной проектной работы предлагается два проекта:&lt;br /&gt;
http://wiki.cs.hse.ru/Децентрализованный_крипточат_(командный_проект)&lt;br /&gt;
http://wiki.cs.hse.ru/Веб-краулер_для_поиска_уязвимостей_авторизации_(командный_проект)&lt;br /&gt;
&lt;br /&gt;
==== Криптовалюты, блокчейн ====&lt;br /&gt;
По поводу курсовых работ на тему криптовалют, блокчейна можно обращаться напрямую к [[Участник:Ryavorsky|Ярославу Яворскому]] для непосредственного обсуждения. Ниже приведены примеры тем, предлагаемых в рамках проектной работы на 2-м курсе.&lt;br /&gt;
http://wiki.cs.hse.ru/Анализ_данных,_хранимых_в_реестрах_криптовалют_(проект)&lt;br /&gt;
http://wiki.cs.hse.ru/Аналитический_сервис_по_новостям_в_сфере_блокчейн_технологий_(проект)&lt;br /&gt;
http://wiki.cs.hse.ru/Тестирование_и_верификация_смарт-контрактов_(проект)&lt;br /&gt;
http://wiki.cs.hse.ru/Разработка_веб_интерфейсов_для_криптовалют_и_смарт-контрактов_(проект)&lt;br /&gt;
&lt;br /&gt;
=== Темы возможных курсовых работ ===&lt;br /&gt;
&lt;br /&gt;
!! &#039;&#039;&#039;Список тем еще дополняется / расширяется.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== ClickHouse (9 тем) ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:milovidov@yandex-team.ru Миловидов Алексей]&lt;br /&gt;
&lt;br /&gt;
[https://clickhouse.yandex/ ClickHouse] -- открытая колоночная СУБД, позволяющая выполнять аналитические запросы в интерактивном режиме по данным, обновляемым в реальном времени. ClickHouse разработан в Яндексе для задач Яндекс.Метрики -- второй по величине системы веб-аналитики в мире. &lt;br /&gt;
&lt;br /&gt;
В качестве тем для курсовых работ предлагается следующий набор проектов:&lt;br /&gt;
* Использование первичного ключа при ORDER BY monotonic(PK), GROUP BY injective(subset(PK)).&lt;br /&gt;
* Поддержка форматов ввода-вывода Parquet и Protobuf.&lt;br /&gt;
* Модификаторы WITH ROLLUP и WITH CUBE для GROUP BY.&lt;br /&gt;
* Поддержка вычисляемых DEFAULT выражений для полуструктурированных форматов JSONEachRow, TSKV.&lt;br /&gt;
* Short-curcuit вычисление некоторых функций.&lt;br /&gt;
* Оптимизация простых выражений с помощью генерации LLVM кода.&lt;br /&gt;
* Кэширование промежуточных данных конвейера выполнения запроса.&lt;br /&gt;
* Оптимизация алгоритма слияний.&lt;br /&gt;
* Генератор тестовых данных.&lt;br /&gt;
&lt;br /&gt;
==== Postgres Pro: Автоматизация смены мастера в кластере PostgreSQL, использующем логическую  репликацию ====&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:marat.abubekerov@gmail.com Абубекеров Марат]&lt;br /&gt;
&lt;br /&gt;
Есть кластер  PostgreSQL  с  мастером  и  несколькими  репликами.  Используется логическая  репликация.  Требуется  разработать  приложение, к оторое  в  случае  выхода мастера  из  строя  автоматически  выбирает  нового  мастера  и  переключает  на  него остальные  реплики.  Допускается з ависимость  от  сторонних  приложений,  в  частности etcd  или  Consul.&lt;br /&gt;
&lt;br /&gt;
==== Postgres Pro: Приоритезация запросов  в  РСУБД  PostgreSQL ====&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:marat.abubekerov@gmail.com Абубекеров Марат]&lt;br /&gt;
&lt;br /&gt;
Исследовать  различные  механизмы  приоритезации з апросов  в  реляционных  базах данных.  Реализовать  механизм  приоритезации з апросов  для  РСУБД  PostgreSQL. Запросы  с  большим  приоритетом  выполняются  раньше з апросов  с  низким приоритетом.  Кроме т ого,  время,  выделяемое  на  выполнение з апросов, пропорционально  их  приоритетам.  Например,  при  одновременном  выполнении  OLTP  и OLAP з апросов  становится  возможно  присвоить  первым  более  высокий  приоритет, чем  вторым.  В  результате  OLTP з апросы  будут  выполняться к ак  можно  быстрее,  а OLAP з апросы  будут  выполняться  в  фоне  с  меньшим  приоритетом.&lt;br /&gt;
&lt;br /&gt;
==== Postgres Pro: Разработка  механизма  ограничения  используемых  ресурсов  в  PostgreSQL ====&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:marat.abubekerov@gmail.com Абубекеров Марат]&lt;br /&gt;
&lt;br /&gt;
Исследование  механизмов  ограничения  использования  системных  ресурсов -   времени CPU,  оперативной  памяти,  места  на  диске,  сетевого т рафика,  и т ак  далее.  Реализация механизма  ограничения  используемых  ресурсов  по  пользователям  и  сессиям  для РСУБД  PostgreSQL.  Допускается  использование  сторонних  механизмов,  в  частности cgroups.&lt;br /&gt;
&lt;br /&gt;
==== Postgres Pro: Реализация  в  модуле  pg_trgm  поиска  по  N-граммам  с  N  &amp;gt;  3 ====&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:marat.abubekerov@gmail.com Абубекеров Марат]&lt;br /&gt;
&lt;br /&gt;
Модуль  pg_trgm  для  PostgreSQL  позволяет  делать  индексы  по т риграммам  для нечеткого  поиска.  К  примеру,  слово &#039; молоко&#039;  будет  разложено  на  массив триграмм [ мол,  оло,  лок,  око]  и  если  поисковый  слово  содержит  опечатку, т о большинство т риграмм  останется  неизменным.  Это  свойство  используется  для поиска:  можно  разложить  искомые  слова/фразы  на т риграммы,  построить  по ним  обратный ( инвертированный)  индекс  и  при  поиске  искать  документы  с максимальным  числом  одинаковых т риграмм.  Такой  подход  хорошо  и  быстро работает  на  словах  и  небольших  фразах.&lt;br /&gt;
Однако  данный  подход  не  эффективен,  если  поиск  ведется  по  предложениям. Так к ак  предложение  большое, т о  разных т риграмм  от к аждого  документа получается  много  и  поисковый з апрос  будет  пересекаться  с  очень  большим количеством  строк  в т аблице.  Чтобы  избежать  этого,  предлагается реализовать  поддержку  не т риграмм,  а  на  N-грамм  с  N=  4,  5  и т ак  далее.  Тогда разных  N-грам  ставится  экспоненциально  больше  с  ростом  N  и  соответственно вероятность  встретить  данную  N-грамму -   меньше,  следовательно  при  поиске требуется  проверять  на  соответствие  меньше  строк  и  поиск  становится эффективнее.&lt;br /&gt;
&lt;br /&gt;
==== Улучшение симулятора планировщика ресурсов кластера ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:ignat@yandex-team.ru Игнатий Игоревич Колесниченко]&lt;br /&gt;
&lt;br /&gt;
В системе [https://habrahabr.ru/company/yandex/blog/311104/ YT] одна из наиболее значимых компонент -- это планировщик вычислений. Именно он отвечает за распределение ресурсов кластера между пользователями с учетом их требований и желаемых гарантий (зачастую, противоречивых). От эффективности работы планировщика зависит общая эффективность работы кластера и удовлетворенность пользователей. Для проведения оффлайн-экспериментов над алгоритмами планировщика был разработан симулятор, использующий &amp;quot;трейс&amp;quot; событий, снятый с реального кластера (запуск вычислений, освобождение вычислительных ресурсов, потеря вычислений в результате сбоя, и др.). Ниже представлены возможные направления для последующих исследований и улучшений данной функциональности.&lt;br /&gt;
&lt;br /&gt;
В текущей версии симулятора известен ряд недоработок, существенно влияющих на качество симуляции. Например, текущий симулятор не учитывает зависимость вычислений между собой (когда выход одного вычисления используется как вход для другого). За счет использования метаинформации (имя пользователя, время начала/окончания вычислений, именование входных/выходных данных) можно было бы восстановить данные зависимости, что позволит существенно улучшить качество симуляции и, соответственно, качество вычисляемых метрик для цепочек вычислений.&lt;br /&gt;
&lt;br /&gt;
==== Формальная спецификация HDFS ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:sandello@yandex-team.ru Иван Витальевич Пузыревский]&lt;br /&gt;
&lt;br /&gt;
HDFS (Hadoop Distributed File System) -- распределенная отказоустойчивая файловая система. В данной работе предлагается разработать и проверить формальную спецификацию системы с помощью [http://research.microsoft.com/en-us/um/people/lamport/tla/tla.html TLA+].&lt;br /&gt;
&lt;br /&gt;
==== Фреймворк для изучения, разработки и тестирования распределенных алгоритмов при наличии отказов ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:sandello@yandex-team.ru Иван Витальевич Пузыревский]&lt;br /&gt;
&lt;br /&gt;
При анализе и реализации распределенных алгоритмов наиболее сложной частью является обработка отказов, сетевых или процессных. В большинстве языков программирования и в большинстве прикладных библиотек существуют только базовые возможности для тестирования и проверки распределенного алгоритма в условиях сетевых сбоев. В рамках данной работы предлагается минимально интрузивным образом подменить сетевые взаимодействия в сетевых приложениях с целью последующего изучения и изменения характера коммуникации. В первом приближении можно считать, что вся сетевая коммуникация проходит через некоторого &amp;quot;оракула&amp;quot;, который определяет факт и порядок доставки сообщений, величину сетевых задержек, корректность данных. &lt;br /&gt;
&lt;br /&gt;
==== Исследование применимости фонтанирующих кодов в сетевых протоколах как альтернатива обратной связи, основанной на потере пакетов ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:sandello@yandex-team.ru Иван Витальевич Пузыревский]&lt;br /&gt;
&lt;br /&gt;
Современные сетевые протоколы для оценки эффективной пропускной способности сети опираются на &#039;&#039;сетевые потери&#039;&#039;: при переполнении буферов, очереди, или каких-либо других ресурсов во время доставки пакета, последний просто отбрасывается; на оценке доли отброшенных пакетов строится управление трафиком, например, в протоколе TCP. Определение факта потери пакета использует часы (таймауты), что в случае приложений, чувствительных к сетевым задержкам, приводит к всплескам латентности. В рамках данной работы предлагается исследовать возможность применения фонтанирующих кодов ([https://en.wikipedia.org/wiki/Fountain_code wiki]) для обеспечения гарантированной доставки данных в случае сетевых потерь.&lt;br /&gt;
&lt;br /&gt;
==== Имитационное моделирование вычислительных ресурсов и распределенных вычислительных инфраструктур ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:oleg.sukhoroslov@gmail.com Олег Викторович Сухорослов]&lt;br /&gt;
&lt;br /&gt;
Имитационное моделирование активно используется в исследованиях распределенных систем, заменяя натурные эксперименты и позволяя воспроизводимым образом сравнивать между собой различные методы (например, алгоритмы планирования задач). В данной работе объектом моделирования являются распределенные вычислительные инфраструктуры, состоящие из нескольких автономных ресурсов различного типа (кластеров, гридов, облаков, персональных компьютеров). Для реалистичного моделирования таких инфраструктур требуется хорошо моделировать отдельные ресурсы, их планировщики, нагрузку и доступность, а также передачу данных по сети. Для данных целей предлагается использовать [http://simgrid.gforge.inria.fr/ SimGrid], фреймворк для создания симуляторов распределенных систем. Требуется улучшить имеющиеся или реализовать новые модели ресурсов (например, кластер с планировщиком и внутренним потоком заданий), а также интегрировать их в единую модель. Возможны отдельные подтемы и работа в команде.&lt;br /&gt;
&lt;br /&gt;
==== Симуляция и сравнительный анализ алгоритмов планирования задач в распределенных вычислительных системах ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:oleg.sukhoroslov@gmail.com Олег Викторович Сухорослов]&lt;br /&gt;
&lt;br /&gt;
Планирование выполнения задач в распределенных системах в постановках, представляющих практический интерес, является NP-полной задачей. За последнее десятилетие было предложено множество алгоритмов планирования, основанных на различного рода (мета)эвристиках и ориентированных на различные классы приложений (bag of tasks, parallel job, workflow) и систем. При этом недостаточно хорошо изучен вопрос об области применимости и сравнительной эффективности данных алгоритмов в различных ситуациях. В данной работе предлагается реализовать на базе существующего симулятора наиболее известные алгоритмы и сравнить их друг с другом путем проведения имитационных экспериментов для различных типов приложений и систем. Возможны отдельные подтемы и работа в команде.&lt;br /&gt;
&lt;br /&gt;
==== Исследование и экспериментальная оценка технологий распределенных вычислений на основе pilot jobs ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:oleg.sukhoroslov@gmail.com Олег Викторович Сухорослов]&lt;br /&gt;
&lt;br /&gt;
При реализации крупномасштабных вычислений на базе распределенных ресурсов с собственными планировщиками часто используется стратегия pilot jobs. Данная стратегия, заключающаяся в запуске на ресурсах заданий-агентов с последующим динамическим распределением по ним задач, позволяет уменьшить влияние задержек в очередях ресурсов и накладные расходы на запуск задач. В настоящее время существует несколько технологий (pilot job frameworks), реализующих данный подход, например HTCondor, DIANE, BigJob, Swift, DIRAC. В данной работе предлагается изучить и сравнить между собой несколько данных технологий путем их развертывания и проведения экспериментов на тестовой инфраструктуре. Особое внимание планируется уделить сравнению производительности различных решений, оценке их масштабируемости, выявлению узких мест и поиску способов их устранения.&lt;br /&gt;
&lt;br /&gt;
==== Использование простаивающих вычислительных ресурсов для распределенных вычислений на базе платформы Everest ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:oleg.sukhoroslov@gmail.com Олег Викторович Сухорослов]&lt;br /&gt;
&lt;br /&gt;
Платформа [http://everest.distcomp.org/ Everest], разрабатываемая в ИППИ РАН, позволяет публиковать в виде веб-сервисов вычислительные приложения и запускать через веб-интерфейс расчеты на произвольных комбинациях внешних ресурсов, подключенных пользователями к платформе. Интеграция ресурсов с платформой реализована на основе специально разработанного агента, который выполняется на стороне ресурса. В настоящее время агент поддерживает запуск задач на одиночной машине (в монопольном режиме) и кластере (с приоритетом обычного пользователя), не учитывая внешнюю нагрузку на ресурс. В данной работе предлагается реализовать поддержку использования ресурса только в моменты его простоя, что требует мониторинга текущей загрузки ресурса и динамического управления задачами. При этом планируется использовать опыт и наработки систем, ориентированных на использование простаивающих персональных компьютеров (BOINC, Condor).&lt;br /&gt;
&lt;br /&gt;
==== Реализация универсального вычислительного агента для систем распределенных вычислений ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:oleg.sukhoroslov@gmail.com Олег Викторович Сухорослов]&lt;br /&gt;
&lt;br /&gt;
Платформа [http://everest.distcomp.org/ Everest], разрабатываемая в ИППИ РАН, позволяет публиковать в виде веб-сервисов вычислительные приложения и запускать через веб-интерфейс расчеты на произвольных комбинациях внешних ресурсов, подключенных пользователями к платформе. Интеграция ресурсов с платформой реализована на основе специально разработанного агента, который выполняется на стороне ресурса. Агент написан на языке Python с использованием фреймворка Tornado и реализует асинхронную обработку, запуск и мониторинг поступающих задач, загрузку данных и обмен сообщениями с платформой. В данной работе предлагается реализовать принципиально новую версию агента на языке Go. Помимо имеющейся функциональности планируется реализовать прямое взаимодействие по сети между агентами, автоматическое обновление кода агента, а также обеспечить универсальность агента для его использования с другими системами распределенных вычислений.&lt;br /&gt;
&lt;br /&gt;
==== Исследование и реализация методов прямой передачи данных по сети между узлами за NAT и межсетевыми экранами ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:oleg.sukhoroslov@gmail.com Олег Викторович Сухорослов]&lt;br /&gt;
&lt;br /&gt;
При реализации распределенных вычислений в глобальной сети часто возникает задача передачи данных между двумя машинами или ресурсами, находящимися в различных географических точках. При этом зачастую между данными машинами в сети находятся  устройства, выполняющие трансляцию адресов (NAT) и межсетевые экраны, что затрудняет установление прямого соединения. Подход, использующий промежуточный сервер для обмена данными, обладает низкой эффективностью в случае передачи больших объемов данных или частых обменов. В данной работе предлагается изучить существующие методы прямой передачи данных между хостами в глобальной сети, реализовать некоторые из этих методов и экспериментально сравнить их эффективность.&lt;br /&gt;
&lt;br /&gt;
==== Исследование и экспериментальная оценка методов обеспечения отказоустойчивости MPI-приложений ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:oleg.sukhoroslov@gmail.com Олег Викторович Сухорослов]&lt;br /&gt;
&lt;br /&gt;
Одной из основных проблем, связанных с использованием в будущем мощных вычислительных систем уровня [https://en.wikipedia.org/wiki/Exascale_computing exascale], является обеспечение устойчивости параллельных программ к отказам. Поскольку данные системы могут включать миллионы процессоров, выполняющих до миллиарда потоков, то ожидается что в них с высокой частотой (до нескольких раз в час) будут возникать всевозможные сбои на аппаратном и программном уровнях, приводящие к падению процессов или потере данных. Традиционные методы, такие как checkpointing, становятся неэффективными в условиях, когда сохранение состояния требует времени сопоставимого с частотой отказов. В настоящее время активно ведется разработка новых методов, нацеленных на решение данной проблемы, в частности применительно к выполнению MPI-программ. В данной работе предлагается изучить данные методы, провести их экспериментальную оценку и, возможно, улучшить.&lt;/div&gt;</summary>
		<author><name>Sandello</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=%D0%A2%D0%B5%D0%BC%D1%8B_%D0%B4%D0%BB%D1%8F_%D0%BA%D1%83%D1%80%D1%81%D0%BE%D0%B2%D1%8B%D1%85_%D1%80%D0%B0%D0%B1%D0%BE%D1%82_2017_(%D0%A0%D0%A1)&amp;diff=25565</id>
		<title>Темы для курсовых работ 2017 (РС)</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=%D0%A2%D0%B5%D0%BC%D1%8B_%D0%B4%D0%BB%D1%8F_%D0%BA%D1%83%D1%80%D1%81%D0%BE%D0%B2%D1%8B%D1%85_%D1%80%D0%B0%D0%B1%D0%BE%D1%82_2017_(%D0%A0%D0%A1)&amp;diff=25565"/>
		<updated>2017-10-30T07:02:41Z</updated>

		<summary type="html">&lt;p&gt;Sandello: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Курсовые работы ==&lt;br /&gt;
&lt;br /&gt;
Ниже приведены описания возможных проектов курсовой работы (напоминаю, что на третьем курсе в качестве курсовой работы засчитывается и [http://wiki.cs.hse.ru/Проектная_работа проектная работа]).&lt;br /&gt;
&lt;br /&gt;
Если вас заинтересовала какая-либо из предложенных тем и вы хотите над ней поработать в рамках вашей курсовой работы, то ваша последовательность действий такая:&lt;br /&gt;
# напишите письмо руководителю темы, в копию письма добавьте Пузыревского Ивана (ipuzyrevskiy@hse.ru); укажите, над какой задачей вы хотите поработать; укажите релевантную информацию про вас (публичный github, опыт по теме, что вы сочтете нужным);&lt;br /&gt;
# далее, вам нужно с руководителем обсудить задачу и возможность работы над ней; обычно руководитель вам чуть более подробно вам расскажет, что от вас будет требоваться, вы обсудите, насколько реально вам выполнить предлагаемую работу;&lt;br /&gt;
# в конечном итоге, вы вместе с руководителем приходите или к положительному решению (вы работаете над оговоренной задачей), или к отрицательному (вам необходимо выбрать другую тему курсовой работы).&lt;br /&gt;
&lt;br /&gt;
=== Рекомендуемые темы проектной работы ===&lt;br /&gt;
&lt;br /&gt;
==== Безопасность ====&lt;br /&gt;
По поводу тем курсовых работ на тему информационной безопасности можно обращаться напрямую к [[mailto:gamajun@gmail.com|Денису Гамаюнову]]. В рамках командной проектной работы предлагается два проекта:&lt;br /&gt;
http://wiki.cs.hse.ru/Децентрализованный_крипточат_(командный_проект)&lt;br /&gt;
http://wiki.cs.hse.ru/Веб-краулер_для_поиска_уязвимостей_авторизации_(командный_проект)&lt;br /&gt;
&lt;br /&gt;
==== Криптовалюты, блокчейн ====&lt;br /&gt;
По поводу курсовых работ на тему криптовалют, блокчейна можно обращаться напрямую к [[Участник:Ryavorsky|Ярославу Яворскому]] для непосредственного обсуждения. Ниже приведены примеры тем, предлагаемых в рамках проектной работы на 2-м курсе.&lt;br /&gt;
http://wiki.cs.hse.ru/Анализ_данных,_хранимых_в_реестрах_криптовалют_(проект)&lt;br /&gt;
http://wiki.cs.hse.ru/Аналитический_сервис_по_новостям_в_сфере_блокчейн_технологий_(проект)&lt;br /&gt;
http://wiki.cs.hse.ru/Тестирование_и_верификация_смарт-контрактов_(проект)&lt;br /&gt;
http://wiki.cs.hse.ru/Разработка_веб_интерфейсов_для_криптовалют_и_смарт-контрактов_(проект)&lt;br /&gt;
&lt;br /&gt;
=== Темы возможных курсовых работ ===&lt;br /&gt;
&lt;br /&gt;
!! &#039;&#039;&#039;Список тем еще дополняется / расширяется.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== ClickHouse  ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:milovidov@yandex-team.ru Миловидов Алексей]&lt;br /&gt;
&lt;br /&gt;
[https://clickhouse.yandex/ ClickHouse] -- открытая колоночная СУБД, позволяющая выполнять аналитические запросы в интерактивном режиме по данным, обновляемым в реальном времени. ClickHouse разработан в Яндексе для задач Яндекс.Метрики -- второй по величине системы веб-аналитики в мире. &lt;br /&gt;
&lt;br /&gt;
В качестве тем для курсовых работ предлагается следующий набор проектов:&lt;br /&gt;
* Использование первичного ключа при ORDER BY monotonic(PK), GROUP BY injective(subset(PK)).&lt;br /&gt;
* Поддержка форматов ввода-вывода Parquet и Protobuf.&lt;br /&gt;
* Модификаторы WITH ROLLUP и WITH CUBE для GROUP BY.&lt;br /&gt;
* Поддержка вычисляемых DEFAULT выражений для полуструктурированных форматов JSONEachRow, TSKV.&lt;br /&gt;
* Short-curcuit вычисление некоторых функций.&lt;br /&gt;
* Оптимизация простых выражений с помощью генерации LLVM кода.&lt;br /&gt;
* Кэширование промежуточных данных конвейера выполнения запроса.&lt;br /&gt;
* Оптимизация алгоритма слияний.&lt;br /&gt;
* Генератор тестовых данных.&lt;br /&gt;
&lt;br /&gt;
==== Postgres Pro: Автоматизация смены мастера в кластере PostgreSQL, использующем логическую  репликацию ====&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:marat.abubekerov@gmail.com Абубекеров Марат]&lt;br /&gt;
&lt;br /&gt;
Есть кластер  PostgreSQL  с  мастером  и  несколькими  репликами.  Используется логическая  репликация.  Требуется  разработать  приложение, к оторое  в  случае  выхода мастера  из  строя  автоматически  выбирает  нового  мастера  и  переключает  на  него остальные  реплики.  Допускается з ависимость  от  сторонних  приложений,  в  частности etcd  или  Consul.&lt;br /&gt;
&lt;br /&gt;
==== Postgres Pro: Приоритезация запросов  в  РСУБД  PostgreSQL ====&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:marat.abubekerov@gmail.com Абубекеров Марат]&lt;br /&gt;
&lt;br /&gt;
Исследовать  различные  механизмы  приоритезации з апросов  в  реляционных  базах данных.  Реализовать  механизм  приоритезации з апросов  для  РСУБД  PostgreSQL. Запросы  с  большим  приоритетом  выполняются  раньше з апросов  с  низким приоритетом.  Кроме т ого,  время,  выделяемое  на  выполнение з апросов, пропорционально  их  приоритетам.  Например,  при  одновременном  выполнении  OLTP  и OLAP з апросов  становится  возможно  присвоить  первым  более  высокий  приоритет, чем  вторым.  В  результате  OLTP з апросы  будут  выполняться к ак  можно  быстрее,  а OLAP з апросы  будут  выполняться  в  фоне  с  меньшим  приоритетом.&lt;br /&gt;
&lt;br /&gt;
==== Postgres Pro: Разработка  механизма  ограничения  используемых  ресурсов  в  PostgreSQL ====&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:marat.abubekerov@gmail.com Абубекеров Марат]&lt;br /&gt;
&lt;br /&gt;
Исследование  механизмов  ограничения  использования  системных  ресурсов -   времени CPU,  оперативной  памяти,  места  на  диске,  сетевого т рафика,  и т ак  далее.  Реализация механизма  ограничения  используемых  ресурсов  по  пользователям  и  сессиям  для РСУБД  PostgreSQL.  Допускается  использование  сторонних  механизмов,  в  частности cgroups.&lt;br /&gt;
&lt;br /&gt;
==== Postgres Pro: Реализация  в  модуле  pg_trgm  поиска  по  N-граммам  с  N  &amp;gt;  3 ====&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:marat.abubekerov@gmail.com Абубекеров Марат]&lt;br /&gt;
&lt;br /&gt;
Модуль  pg_trgm  для  PostgreSQL  позволяет  делать  индексы  по т риграммам  для нечеткого  поиска.  К  примеру,  слово &#039; молоко&#039;  будет  разложено  на  массив триграмм [ мол,  оло,  лок,  око]  и  если  поисковый  слово  содержит  опечатку, т о большинство т риграмм  останется  неизменным.  Это  свойство  используется  для поиска:  можно  разложить  искомые  слова/фразы  на т риграммы,  построить  по ним  обратный ( инвертированный)  индекс  и  при  поиске  искать  документы  с максимальным  числом  одинаковых т риграмм.  Такой  подход  хорошо  и  быстро работает  на  словах  и  небольших  фразах.&lt;br /&gt;
Однако  данный  подход  не  эффективен,  если  поиск  ведется  по  предложениям. Так к ак  предложение  большое, т о  разных т риграмм  от к аждого  документа получается  много  и  поисковый з апрос  будет  пересекаться  с  очень  большим количеством  строк  в т аблице.  Чтобы  избежать  этого,  предлагается реализовать  поддержку  не т риграмм,  а  на  N-грамм  с  N=  4,  5  и т ак  далее.  Тогда разных  N-грам  ставится  экспоненциально  больше  с  ростом  N  и  соответственно вероятность  встретить  данную  N-грамму -   меньше,  следовательно  при  поиске требуется  проверять  на  соответствие  меньше  строк  и  поиск  становится эффективнее.&lt;br /&gt;
&lt;br /&gt;
==== Улучшение симулятора планировщика ресурсов кластера ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:ignat@yandex-team.ru Игнатий Игоревич Колесниченко]&lt;br /&gt;
&lt;br /&gt;
В системе [https://habrahabr.ru/company/yandex/blog/311104/ YT] одна из наиболее значимых компонент -- это планировщик вычислений. Именно он отвечает за распределение ресурсов кластера между пользователями с учетом их требований и желаемых гарантий (зачастую, противоречивых). От эффективности работы планировщика зависит общая эффективность работы кластера и удовлетворенность пользователей. Для проведения оффлайн-экспериментов над алгоритмами планировщика был разработан симулятор, использующий &amp;quot;трейс&amp;quot; событий, снятый с реального кластера (запуск вычислений, освобождение вычислительных ресурсов, потеря вычислений в результате сбоя, и др.). Ниже представлены возможные направления для последующих исследований и улучшений данной функциональности.&lt;br /&gt;
&lt;br /&gt;
В текущей версии симулятора известен ряд недоработок, существенно влияющих на качество симуляции. Например, текущий симулятор не учитывает зависимость вычислений между собой (когда выход одного вычисления используется как вход для другого). За счет использования метаинформации (имя пользователя, время начала/окончания вычислений, именование входных/выходных данных) можно было бы восстановить данные зависимости, что позволит существенно улучшить качество симуляции и, соответственно, качество вычисляемых метрик для цепочек вычислений.&lt;br /&gt;
&lt;br /&gt;
==== Формальная спецификация HDFS ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:sandello@yandex-team.ru Иван Витальевич Пузыревский]&lt;br /&gt;
&lt;br /&gt;
HDFS (Hadoop Distributed File System) -- распределенная отказоустойчивая файловая система. В данной работе предлагается разработать и проверить формальную спецификацию системы с помощью [http://research.microsoft.com/en-us/um/people/lamport/tla/tla.html TLA+].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Имитационное моделирование вычислительных ресурсов и распределенных вычислительных инфраструктур ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:oleg.sukhoroslov@gmail.com Олег Викторович Сухорослов]&lt;br /&gt;
&lt;br /&gt;
Имитационное моделирование активно используется в исследованиях распределенных систем, заменяя натурные эксперименты и позволяя воспроизводимым образом сравнивать между собой различные методы (например, алгоритмы планирования задач). В данной работе объектом моделирования являются распределенные вычислительные инфраструктуры, состоящие из нескольких автономных ресурсов различного типа (кластеров, гридов, облаков, персональных компьютеров). Для реалистичного моделирования таких инфраструктур требуется хорошо моделировать отдельные ресурсы, их планировщики, нагрузку и доступность, а также передачу данных по сети. Для данных целей предлагается использовать [http://simgrid.gforge.inria.fr/ SimGrid], фреймворк для создания симуляторов распределенных систем. Требуется улучшить имеющиеся или реализовать новые модели ресурсов (например, кластер с планировщиком и внутренним потоком заданий), а также интегрировать их в единую модель. Возможны отдельные подтемы и работа в команде.&lt;br /&gt;
&lt;br /&gt;
==== Симуляция и сравнительный анализ алгоритмов планирования задач в распределенных вычислительных системах ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:oleg.sukhoroslov@gmail.com Олег Викторович Сухорослов]&lt;br /&gt;
&lt;br /&gt;
Планирование выполнения задач в распределенных системах в постановках, представляющих практический интерес, является NP-полной задачей. За последнее десятилетие было предложено множество алгоритмов планирования, основанных на различного рода (мета)эвристиках и ориентированных на различные классы приложений (bag of tasks, parallel job, workflow) и систем. При этом недостаточно хорошо изучен вопрос об области применимости и сравнительной эффективности данных алгоритмов в различных ситуациях. В данной работе предлагается реализовать на базе существующего симулятора наиболее известные алгоритмы и сравнить их друг с другом путем проведения имитационных экспериментов для различных типов приложений и систем. Возможны отдельные подтемы и работа в команде.&lt;br /&gt;
&lt;br /&gt;
==== Исследование и экспериментальная оценка технологий распределенных вычислений на основе pilot jobs ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:oleg.sukhoroslov@gmail.com Олег Викторович Сухорослов]&lt;br /&gt;
&lt;br /&gt;
При реализации крупномасштабных вычислений на базе распределенных ресурсов с собственными планировщиками часто используется стратегия pilot jobs. Данная стратегия, заключающаяся в запуске на ресурсах заданий-агентов с последующим динамическим распределением по ним задач, позволяет уменьшить влияние задержек в очередях ресурсов и накладные расходы на запуск задач. В настоящее время существует несколько технологий (pilot job frameworks), реализующих данный подход, например HTCondor, DIANE, BigJob, Swift, DIRAC. В данной работе предлагается изучить и сравнить между собой несколько данных технологий путем их развертывания и проведения экспериментов на тестовой инфраструктуре. Особое внимание планируется уделить сравнению производительности различных решений, оценке их масштабируемости, выявлению узких мест и поиску способов их устранения.&lt;br /&gt;
&lt;br /&gt;
==== Использование простаивающих вычислительных ресурсов для распределенных вычислений на базе платформы Everest ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:oleg.sukhoroslov@gmail.com Олег Викторович Сухорослов]&lt;br /&gt;
&lt;br /&gt;
Платформа [http://everest.distcomp.org/ Everest], разрабатываемая в ИППИ РАН, позволяет публиковать в виде веб-сервисов вычислительные приложения и запускать через веб-интерфейс расчеты на произвольных комбинациях внешних ресурсов, подключенных пользователями к платформе. Интеграция ресурсов с платформой реализована на основе специально разработанного агента, который выполняется на стороне ресурса. В настоящее время агент поддерживает запуск задач на одиночной машине (в монопольном режиме) и кластере (с приоритетом обычного пользователя), не учитывая внешнюю нагрузку на ресурс. В данной работе предлагается реализовать поддержку использования ресурса только в моменты его простоя, что требует мониторинга текущей загрузки ресурса и динамического управления задачами. При этом планируется использовать опыт и наработки систем, ориентированных на использование простаивающих персональных компьютеров (BOINC, Condor).&lt;br /&gt;
&lt;br /&gt;
==== Реализация универсального вычислительного агента для систем распределенных вычислений ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:oleg.sukhoroslov@gmail.com Олег Викторович Сухорослов]&lt;br /&gt;
&lt;br /&gt;
Платформа [http://everest.distcomp.org/ Everest], разрабатываемая в ИППИ РАН, позволяет публиковать в виде веб-сервисов вычислительные приложения и запускать через веб-интерфейс расчеты на произвольных комбинациях внешних ресурсов, подключенных пользователями к платформе. Интеграция ресурсов с платформой реализована на основе специально разработанного агента, который выполняется на стороне ресурса. Агент написан на языке Python с использованием фреймворка Tornado и реализует асинхронную обработку, запуск и мониторинг поступающих задач, загрузку данных и обмен сообщениями с платформой. В данной работе предлагается реализовать принципиально новую версию агента на языке Go. Помимо имеющейся функциональности планируется реализовать прямое взаимодействие по сети между агентами, автоматическое обновление кода агента, а также обеспечить универсальность агента для его использования с другими системами распределенных вычислений.&lt;br /&gt;
&lt;br /&gt;
==== Исследование и реализация методов прямой передачи данных по сети между узлами за NAT и межсетевыми экранами ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:oleg.sukhoroslov@gmail.com Олег Викторович Сухорослов]&lt;br /&gt;
&lt;br /&gt;
При реализации распределенных вычислений в глобальной сети часто возникает задача передачи данных между двумя машинами или ресурсами, находящимися в различных географических точках. При этом зачастую между данными машинами в сети находятся  устройства, выполняющие трансляцию адресов (NAT) и межсетевые экраны, что затрудняет установление прямого соединения. Подход, использующий промежуточный сервер для обмена данными, обладает низкой эффективностью в случае передачи больших объемов данных или частых обменов. В данной работе предлагается изучить существующие методы прямой передачи данных между хостами в глобальной сети, реализовать некоторые из этих методов и экспериментально сравнить их эффективность.&lt;br /&gt;
&lt;br /&gt;
==== Исследование и экспериментальная оценка методов обеспечения отказоустойчивости MPI-приложений ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:oleg.sukhoroslov@gmail.com Олег Викторович Сухорослов]&lt;br /&gt;
&lt;br /&gt;
Одной из основных проблем, связанных с использованием в будущем мощных вычислительных систем уровня [https://en.wikipedia.org/wiki/Exascale_computing exascale], является обеспечение устойчивости параллельных программ к отказам. Поскольку данные системы могут включать миллионы процессоров, выполняющих до миллиарда потоков, то ожидается что в них с высокой частотой (до нескольких раз в час) будут возникать всевозможные сбои на аппаратном и программном уровнях, приводящие к падению процессов или потере данных. Традиционные методы, такие как checkpointing, становятся неэффективными в условиях, когда сохранение состояния требует времени сопоставимого с частотой отказов. В настоящее время активно ведется разработка новых методов, нацеленных на решение данной проблемы, в частности применительно к выполнению MPI-программ. В данной работе предлагается изучить данные методы, провести их экспериментальную оценку и, возможно, улучшить.&lt;/div&gt;</summary>
		<author><name>Sandello</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=%D0%9D%D0%98%D0%A1_%D0%A0%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_(3_%D0%BA%D1%83%D1%80%D1%81,_2017)&amp;diff=25564</id>
		<title>НИС Распределенные системы (3 курс, 2017)</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=%D0%9D%D0%98%D0%A1_%D0%A0%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_(3_%D0%BA%D1%83%D1%80%D1%81,_2017)&amp;diff=25564"/>
		<updated>2017-10-30T07:01:36Z</updated>

		<summary type="html">&lt;p&gt;Sandello: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Информация про семинар ==&lt;br /&gt;
В рамках научно-исследовательского семинара по распределенным системам изучаются основные понятия, принципы и результаты предметной области. &lt;br /&gt;
&lt;br /&gt;
Контакты: [mailto:sandello@gmail.com Пузыревский Иван Витальевич]&lt;br /&gt;
&lt;br /&gt;
Список тем курсовых работ: http://wiki.cs.hse.ru/Темы_для_курсовых_работ_2017_(РС)&lt;br /&gt;
&lt;br /&gt;
=== Оценка ===&lt;br /&gt;
&lt;br /&gt;
[TBD]&lt;br /&gt;
&lt;br /&gt;
Текущая таблица с оценками и ведомостью: https://docs.google.com/spreadsheets/d/16Z74fhT_TnNscsVviU9KU2mVlaMrmX3weQ6ku5jGGbk/edit?usp=sharing&lt;br /&gt;
&lt;br /&gt;
== Занятия ==&lt;br /&gt;
&lt;br /&gt;
=== 1 модуль ===&lt;br /&gt;
&lt;br /&gt;
* Модель распределенных вычислений.&lt;br /&gt;
* Объекты-регистры, типы регистров (bool/int; safe/regular/atomic; single/multi-reader; single/multi-writer).&lt;br /&gt;
* Эквивалентность вычислительной силы SRSW Bool Safe &amp;amp; MRMW Int Atomic.&lt;br /&gt;
* Блокировки (locks). Понятия живости (liveness) и безопасности (safety). Мьютекс Лампорта.&lt;br /&gt;
&lt;br /&gt;
Литература: Herlihy, Shavit -- The Art of Multiprocessor Programming (https://www.dropbox.com/s/s8sssgp95hq5f6q/aompp.pdf?dl=0). Главы 2-4.&lt;br /&gt;
&lt;br /&gt;
=== 2 модуль ===&lt;/div&gt;</summary>
		<author><name>Sandello</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=%D0%9D%D0%98%D0%A1_%D0%A0%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_(3_%D0%BA%D1%83%D1%80%D1%81,_2017)&amp;diff=25563</id>
		<title>НИС Распределенные системы (3 курс, 2017)</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=%D0%9D%D0%98%D0%A1_%D0%A0%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_(3_%D0%BA%D1%83%D1%80%D1%81,_2017)&amp;diff=25563"/>
		<updated>2017-10-30T07:00:33Z</updated>

		<summary type="html">&lt;p&gt;Sandello: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Информация про семинар ==&lt;br /&gt;
В рамках научно-исследовательского семинара по распределенным системам изучаются основные понятия, принципы и результаты предметной области. &lt;br /&gt;
&lt;br /&gt;
Контакты: [mailto:sandello@gmail.com Пузыревский Иван Витальевич]&lt;br /&gt;
&lt;br /&gt;
Список тем курсовых работ: http://wiki.cs.hse.ru/Список_курсовых_работ._Распределенные_системы&lt;br /&gt;
&lt;br /&gt;
=== Оценка ===&lt;br /&gt;
&lt;br /&gt;
[TBD]&lt;br /&gt;
&lt;br /&gt;
Текущая таблица с оценками и ведомостью: https://docs.google.com/spreadsheets/d/16Z74fhT_TnNscsVviU9KU2mVlaMrmX3weQ6ku5jGGbk/edit?usp=sharing&lt;br /&gt;
&lt;br /&gt;
== Занятия ==&lt;br /&gt;
&lt;br /&gt;
=== 1 модуль ===&lt;br /&gt;
&lt;br /&gt;
* Модель распределенных вычислений.&lt;br /&gt;
* Объекты-регистры, типы регистров (bool/int; safe/regular/atomic; single/multi-reader; single/multi-writer).&lt;br /&gt;
* Эквивалентность вычислительной силы SRSW Bool Safe &amp;amp; MRMW Int Atomic.&lt;br /&gt;
* Блокировки (locks). Понятия живости (liveness) и безопасности (safety). Мьютекс Лампорта.&lt;br /&gt;
&lt;br /&gt;
Литература: Herlihy, Shavit -- The Art of Multiprocessor Programming (https://www.dropbox.com/s/s8sssgp95hq5f6q/aompp.pdf?dl=0). Главы 2-4.&lt;br /&gt;
&lt;br /&gt;
=== 2 модуль ===&lt;/div&gt;</summary>
		<author><name>Sandello</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=%D0%A2%D0%B5%D0%BC%D1%8B_%D0%B4%D0%BB%D1%8F_%D0%BA%D1%83%D1%80%D1%81%D0%BE%D0%B2%D1%8B%D1%85_%D1%80%D0%B0%D0%B1%D0%BE%D1%82_2017_(%D0%A0%D0%A1)&amp;diff=25474</id>
		<title>Темы для курсовых работ 2017 (РС)</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=%D0%A2%D0%B5%D0%BC%D1%8B_%D0%B4%D0%BB%D1%8F_%D0%BA%D1%83%D1%80%D1%81%D0%BE%D0%B2%D1%8B%D1%85_%D1%80%D0%B0%D0%B1%D0%BE%D1%82_2017_(%D0%A0%D0%A1)&amp;diff=25474"/>
		<updated>2017-10-23T14:38:43Z</updated>

		<summary type="html">&lt;p&gt;Sandello: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Курсовые работы ==&lt;br /&gt;
&lt;br /&gt;
Ниже приведены описания возможных проектов курсовой работы (напоминаю, что на третьем курсе в качестве курсовой работы засчитывается и [http://wiki.cs.hse.ru/Проектная_работа проектная работа]).&lt;br /&gt;
&lt;br /&gt;
Если вас заинтересовала какая-либо из предложенных тем и вы хотите над ней поработать в рамках вашей курсовой работы, то ваша последовательность действий такая:&lt;br /&gt;
# напишите письмо руководителю темы, в копию письма добавьте Пузыревского Ивана (ipuzyrevskiy@hse.ru); укажите, над какой задачей вы хотите поработать; укажите релевантную информацию про вас (публичный github, опыт по теме, что вы сочтете нужным);&lt;br /&gt;
# далее, вам нужно с руководителем обсудить задачу и возможность работы над ней; обычно руководитель вам чуть более подробно вам расскажет, что от вас будет требоваться, вы обсудите, насколько реально вам выполнить предлагаемую работу;&lt;br /&gt;
# в конечном итоге, вы вместе с руководителем приходите или к положительному решению (вы работаете над оговоренной задачей), или к отрицательному (вам необходимо выбрать другую тему курсовой работы).&lt;br /&gt;
&lt;br /&gt;
=== Рекомендуемые темы проектной работы ===&lt;br /&gt;
&lt;br /&gt;
==== Безопасность ====&lt;br /&gt;
По поводу тем курсовых работ на тему информационной безопасности можно обращаться напрямую к [[mailto:gamajun@gmail.com|Денису Гамаюнову]]. В рамках командной проектной работы предлагается два проекта:&lt;br /&gt;
http://wiki.cs.hse.ru/Децентрализованный_крипточат_(командный_проект)&lt;br /&gt;
http://wiki.cs.hse.ru/Веб-краулер_для_поиска_уязвимостей_авторизации_(командный_проект)&lt;br /&gt;
&lt;br /&gt;
==== Криптовалюты, блокчейн ====&lt;br /&gt;
По поводу курсовых работ на тему криптовалют, блокчейна можно обращаться напрямую к [[Участник:Ryavorsky|Ярославу Яворскому]] для непосредственного обсуждения. Ниже приведены примеры тем, предлагаемых в рамках проектной работы на 2-м курсе.&lt;br /&gt;
http://wiki.cs.hse.ru/Анализ_данных,_хранимых_в_реестрах_криптовалют_(проект)&lt;br /&gt;
http://wiki.cs.hse.ru/Аналитический_сервис_по_новостям_в_сфере_блокчейн_технологий_(проект)&lt;br /&gt;
http://wiki.cs.hse.ru/Тестирование_и_верификация_смарт-контрактов_(проект)&lt;br /&gt;
http://wiki.cs.hse.ru/Разработка_веб_интерфейсов_для_криптовалют_и_смарт-контрактов_(проект)&lt;br /&gt;
&lt;br /&gt;
=== Темы возможных курсовых работ ===&lt;br /&gt;
&lt;br /&gt;
!! &#039;&#039;&#039;Список тем еще дополняется / расширяется.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== ClickHouse  ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:milovidov@yandex-team.ru Миловидов Алексей]&lt;br /&gt;
&lt;br /&gt;
[https://clickhouse.yandex/ ClickHouse] -- открытая колоночная СУБД, позволяющая выполнять аналитические запросы в интерактивном режиме по данным, обновляемым в реальном времени. ClickHouse разработан в Яндексе для задач Яндекс.Метрики -- второй по величине системы веб-аналитики в мире. &lt;br /&gt;
&lt;br /&gt;
В качестве тем для курсовых работ предлагается следующий набор проектов:&lt;br /&gt;
* Использование первичного ключа при ORDER BY monotonic(PK), GROUP BY injective(subset(PK)).&lt;br /&gt;
* Поддержка форматов ввода-вывода Parquet и Protobuf.&lt;br /&gt;
* Модификаторы WITH ROLLUP и WITH CUBE для GROUP BY.&lt;br /&gt;
* Поддержка вычисляемых DEFAULT выражений для полуструктурированных форматов JSONEachRow, TSKV.&lt;br /&gt;
* Short-curcuit вычисление некоторых функций.&lt;br /&gt;
* Оптимизация простых выражений с помощью генерации LLVM кода.&lt;br /&gt;
* Кэширование промежуточных данных конвейера выполнения запроса.&lt;br /&gt;
* Оптимизация алгоритма слияний.&lt;br /&gt;
* Генератор тестовых данных.&lt;br /&gt;
&lt;br /&gt;
==== Postgres Pro: Автоматизация смены мастера в кластере PostgreSQL, использующем логическую  репликацию ====&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:marat.abubekerov@gmail.com Абубекеров Марат]&lt;br /&gt;
&lt;br /&gt;
Есть кластер  PostgreSQL  с  мастером  и  несколькими  репликами.  Используется логическая  репликация.  Требуется  разработать  приложение, к оторое  в  случае  выхода мастера  из  строя  автоматически  выбирает  нового  мастера  и  переключает  на  него остальные  реплики.  Допускается з ависимость  от  сторонних  приложений,  в  частности etcd  или  Consul.&lt;br /&gt;
&lt;br /&gt;
==== Postgres Pro: Приоритезация з апросов  в  РСУБД  PostgreSQL ====&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:marat.abubekerov@gmail.com Абубекеров Марат]&lt;br /&gt;
&lt;br /&gt;
Исследовать  различные  механизмы  приоритезации з апросов  в  реляционных  базах данных.  Реализовать  механизм  приоритезации з апросов  для  РСУБД  PostgreSQL. Запросы  с  большим  приоритетом  выполняются  раньше з апросов  с  низким приоритетом.  Кроме т ого,  время,  выделяемое  на  выполнение з апросов, пропорционально  их  приоритетам.  Например,  при  одновременном  выполнении  OLTP  и OLAP з апросов  становится  возможно  присвоить  первым  более  высокий  приоритет, чем  вторым.  В  результате  OLTP з апросы  будут  выполняться к ак  можно  быстрее,  а OLAP з апросы  будут  выполняться  в  фоне  с  меньшим  приоритетом.&lt;br /&gt;
&lt;br /&gt;
==== Postgres Pro: Разработка  механизма  ограничения  используемых  ресурсов  в  PostgreSQL ====&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:marat.abubekerov@gmail.com Абубекеров Марат]&lt;br /&gt;
&lt;br /&gt;
Исследование  механизмов  ограничения  использования  системных  ресурсов -   времени CPU,  оперативной  памяти,  места  на  диске,  сетевого т рафика,  и т ак  далее.  Реализация механизма  ограничения  используемых  ресурсов  по  пользователям  и  сессиям  для РСУБД  PostgreSQL.  Допускается  использование  сторонних  механизмов,  в  частности cgroups.&lt;br /&gt;
&lt;br /&gt;
==== Postgres Pro: Реализация  в  модуле  pg_trgm  поиска  по  N-граммам  с  N  &amp;gt;  3 ====&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:marat.abubekerov@gmail.com Абубекеров Марат]&lt;br /&gt;
&lt;br /&gt;
Модуль  pg_trgm  для  PostgreSQL  позволяет  делать  индексы  по т риграммам  для нечеткого  поиска.  К  примеру,  слово &#039; молоко&#039;  будет  разложено  на  массив триграмм [ мол,  оло,  лок,  око]  и  если  поисковый  слово  содержит  опечатку, т о большинство т риграмм  останется  неизменным.  Это  свойство  используется  для поиска:  можно  разложить  искомые  слова/фразы  на т риграммы,  построить  по ним  обратный ( инвертированный)  индекс  и  при  поиске  искать  документы  с максимальным  числом  одинаковых т риграмм.  Такой  подход  хорошо  и  быстро работает  на  словах  и  небольших  фразах.&lt;br /&gt;
Однако  данный  подход  не  эффективен,  если  поиск  ведется  по  предложениям. Так к ак  предложение  большое, т о  разных т риграмм  от к аждого  документа получается  много  и  поисковый з апрос  будет  пересекаться  с  очень  большим количеством  строк  в т аблице.  Чтобы  избежать  этого,  предлагается реализовать  поддержку  не т риграмм,  а  на  N-грамм  с  N=  4,  5  и т ак  далее.  Тогда разных  N-грам  ставится  экспоненциально  больше  с  ростом  N  и  соответственно вероятность  встретить  данную  N-грамму -   меньше,  следовательно  при  поиске требуется  проверять  на  соответствие  меньше  строк  и  поиск  становится эффективнее.&lt;br /&gt;
&lt;br /&gt;
==== Улучшение симулятора планировщика ресурсов кластера ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:ignat@yandex-team.ru Игнатий Игоревич Колесниченко]&lt;br /&gt;
&lt;br /&gt;
В системе [https://habrahabr.ru/company/yandex/blog/311104/ YT] одна из наиболее значимых компонент -- это планировщик вычислений. Именно он отвечает за распределение ресурсов кластера между пользователями с учетом их требований и желаемых гарантий (зачастую, противоречивых). От эффективности работы планировщика зависит общая эффективность работы кластера и удовлетворенность пользователей. Для проведения оффлайн-экспериментов над алгоритмами планировщика был разработан симулятор, использующий &amp;quot;трейс&amp;quot; событий, снятый с реального кластера (запуск вычислений, освобождение вычислительных ресурсов, потеря вычислений в результате сбоя, и др.). Ниже представлены возможные направления для последующих исследований и улучшений данной функциональности.&lt;br /&gt;
&lt;br /&gt;
В текущей версии симулятора известен ряд недоработок, существенно влияющих на качество симуляции. Например, текущий симулятор не учитывает зависимость вычислений между собой (когда выход одного вычисления используется как вход для другого). За счет использования метаинформации (имя пользователя, время начала/окончания вычислений, именование входных/выходных данных) можно было бы восстановить данные зависимости, что позволит существенно улучшить качество симуляции и, соответственно, качество вычисляемых метрик для цепочек вычислений.&lt;br /&gt;
&lt;br /&gt;
==== Формальная спецификация HDFS ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:sandello@yandex-team.ru Иван Витальевич Пузыревский]&lt;br /&gt;
&lt;br /&gt;
HDFS (Hadoop Distributed File System) -- распределенная отказоустойчивая файловая система. В данной работе предлагается разработать и проверить формальную спецификацию системы с помощью [http://research.microsoft.com/en-us/um/people/lamport/tla/tla.html TLA+].&lt;br /&gt;
&lt;br /&gt;
==== Имитационное моделирование вычислительных ресурсов и распределенных вычислительных инфраструктур ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:oleg.sukhoroslov@gmail.com Олег Викторович Сухорослов]&lt;br /&gt;
&lt;br /&gt;
Имитационное моделирование активно используется в исследованиях распределенных систем, заменяя натурные эксперименты и позволяя воспроизводимым образом сравнивать между собой различные методы (например, алгоритмы планирования задач). В данной работе объектом моделирования являются распределенные вычислительные инфраструктуры, состоящие из нескольких автономных ресурсов различного типа (кластеров, гридов, облаков, персональных компьютеров). Для реалистичного моделирования таких инфраструктур требуется хорошо моделировать отдельные ресурсы, их планировщики, нагрузку и доступность, а также передачу данных по сети. Для данных целей предлагается использовать [http://simgrid.gforge.inria.fr/ SimGrid], фреймворк для создания симуляторов распределенных систем. Требуется улучшить имеющиеся или реализовать новые модели ресурсов (например, кластер с планировщиком и внутренним потоком заданий), а также интегрировать их в единую модель. Возможны отдельные подтемы и работа в команде.&lt;br /&gt;
&lt;br /&gt;
==== Симуляция и сравнительный анализ алгоритмов планирования задач в распределенных вычислительных системах ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:oleg.sukhoroslov@gmail.com Олег Викторович Сухорослов]&lt;br /&gt;
&lt;br /&gt;
Планирование выполнения задач в распределенных системах в постановках, представляющих практический интерес, является NP-полной задачей. За последнее десятилетие было предложено множество алгоритмов планирования, основанных на различного рода (мета)эвристиках и ориентированных на различные классы приложений (bag of tasks, parallel job, workflow) и систем. При этом недостаточно хорошо изучен вопрос об области применимости и сравнительной эффективности данных алгоритмов в различных ситуациях. В данной работе предлагается реализовать на базе существующего симулятора наиболее известные алгоритмы и сравнить их друг с другом путем проведения имитационных экспериментов для различных типов приложений и систем. Возможны отдельные подтемы и работа в команде.&lt;br /&gt;
&lt;br /&gt;
==== Исследование и экспериментальная оценка технологий распределенных вычислений на основе pilot jobs ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:oleg.sukhoroslov@gmail.com Олег Викторович Сухорослов]&lt;br /&gt;
&lt;br /&gt;
При реализации крупномасштабных вычислений на базе распределенных ресурсов с собственными планировщиками часто используется стратегия pilot jobs. Данная стратегия, заключающаяся в запуске на ресурсах заданий-агентов с последующим динамическим распределением по ним задач, позволяет уменьшить влияние задержек в очередях ресурсов и накладные расходы на запуск задач. В настоящее время существует несколько технологий (pilot job frameworks), реализующих данный подход, например HTCondor, DIANE, BigJob, Swift, DIRAC. В данной работе предлагается изучить и сравнить между собой несколько данных технологий путем их развертывания и проведения экспериментов на тестовой инфраструктуре. Особое внимание планируется уделить сравнению производительности различных решений, оценке их масштабируемости, выявлению узких мест и поиску способов их устранения.&lt;br /&gt;
&lt;br /&gt;
==== Использование простаивающих вычислительных ресурсов для распределенных вычислений на базе платформы Everest ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:oleg.sukhoroslov@gmail.com Олег Викторович Сухорослов]&lt;br /&gt;
&lt;br /&gt;
Платформа [http://everest.distcomp.org/ Everest], разрабатываемая в ИППИ РАН, позволяет публиковать в виде веб-сервисов вычислительные приложения и запускать через веб-интерфейс расчеты на произвольных комбинациях внешних ресурсов, подключенных пользователями к платформе. Интеграция ресурсов с платформой реализована на основе специально разработанного агента, который выполняется на стороне ресурса. В настоящее время агент поддерживает запуск задач на одиночной машине (в монопольном режиме) и кластере (с приоритетом обычного пользователя), не учитывая внешнюю нагрузку на ресурс. В данной работе предлагается реализовать поддержку использования ресурса только в моменты его простоя, что требует мониторинга текущей загрузки ресурса и динамического управления задачами. При этом планируется использовать опыт и наработки систем, ориентированных на использование простаивающих персональных компьютеров (BOINC, Condor).&lt;br /&gt;
&lt;br /&gt;
==== Реализация универсального вычислительного агента для систем распределенных вычислений ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:oleg.sukhoroslov@gmail.com Олег Викторович Сухорослов]&lt;br /&gt;
&lt;br /&gt;
Платформа [http://everest.distcomp.org/ Everest], разрабатываемая в ИППИ РАН, позволяет публиковать в виде веб-сервисов вычислительные приложения и запускать через веб-интерфейс расчеты на произвольных комбинациях внешних ресурсов, подключенных пользователями к платформе. Интеграция ресурсов с платформой реализована на основе специально разработанного агента, который выполняется на стороне ресурса. Агент написан на языке Python с использованием фреймворка Tornado и реализует асинхронную обработку, запуск и мониторинг поступающих задач, загрузку данных и обмен сообщениями с платформой. В данной работе предлагается реализовать принципиально новую версию агента на языке Go. Помимо имеющейся функциональности планируется реализовать прямое взаимодействие по сети между агентами, автоматическое обновление кода агента, а также обеспечить универсальность агента для его использования с другими системами распределенных вычислений.&lt;br /&gt;
&lt;br /&gt;
==== Исследование и реализация методов прямой передачи данных по сети между узлами за NAT и межсетевыми экранами ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:oleg.sukhoroslov@gmail.com Олег Викторович Сухорослов]&lt;br /&gt;
&lt;br /&gt;
При реализации распределенных вычислений в глобальной сети часто возникает задача передачи данных между двумя машинами или ресурсами, находящимися в различных географических точках. При этом зачастую между данными машинами в сети находятся  устройства, выполняющие трансляцию адресов (NAT) и межсетевые экраны, что затрудняет установление прямого соединения. Подход, использующий промежуточный сервер для обмена данными, обладает низкой эффективностью в случае передачи больших объемов данных или частых обменов. В данной работе предлагается изучить существующие методы прямой передачи данных между хостами в глобальной сети, реализовать некоторые из этих методов и экспериментально сравнить их эффективность.&lt;br /&gt;
&lt;br /&gt;
==== Исследование и экспериментальная оценка методов обеспечения отказоустойчивости MPI-приложений ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:oleg.sukhoroslov@gmail.com Олег Викторович Сухорослов]&lt;br /&gt;
&lt;br /&gt;
Одной из основных проблем, связанных с использованием в будущем мощных вычислительных систем уровня [https://en.wikipedia.org/wiki/Exascale_computing exascale], является обеспечение устойчивости параллельных программ к отказам. Поскольку данные системы могут включать миллионы процессоров, выполняющих до миллиарда потоков, то ожидается что в них с высокой частотой (до нескольких раз в час) будут возникать всевозможные сбои на аппаратном и программном уровнях, приводящие к падению процессов или потере данных. Традиционные методы, такие как checkpointing, становятся неэффективными в условиях, когда сохранение состояния требует времени сопоставимого с частотой отказов. В настоящее время активно ведется разработка новых методов, нацеленных на решение данной проблемы, в частности применительно к выполнению MPI-программ. В данной работе предлагается изучить данные методы, провести их экспериментальную оценку и, возможно, улучшить.&lt;/div&gt;</summary>
		<author><name>Sandello</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=%D0%A2%D0%B5%D0%BC%D1%8B_%D0%B4%D0%BB%D1%8F_%D0%BA%D1%83%D1%80%D1%81%D0%BE%D0%B2%D1%8B%D1%85_%D1%80%D0%B0%D0%B1%D0%BE%D1%82_2017_(%D0%A0%D0%A1)&amp;diff=24824</id>
		<title>Темы для курсовых работ 2017 (РС)</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=%D0%A2%D0%B5%D0%BC%D1%8B_%D0%B4%D0%BB%D1%8F_%D0%BA%D1%83%D1%80%D1%81%D0%BE%D0%B2%D1%8B%D1%85_%D1%80%D0%B0%D0%B1%D0%BE%D1%82_2017_(%D0%A0%D0%A1)&amp;diff=24824"/>
		<updated>2017-10-02T14:56:30Z</updated>

		<summary type="html">&lt;p&gt;Sandello: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Курсовые работы ==&lt;br /&gt;
&lt;br /&gt;
Ниже приведены описания возможных проектов курсовой работы (напоминаю, что на третьем курсе в качестве курсовой работы засчитывается и [http://wiki.cs.hse.ru/Проектная_работа проектная работа]).&lt;br /&gt;
&lt;br /&gt;
Если вас заинтересовала какая-либо из предложенных тем и вы хотите над ней поработать в рамках вашей курсовой работы, то ваша последовательность действий такая:&lt;br /&gt;
# напишите письмо руководителю темы, в копию письма добавьте Пузыревского Ивана (ipuzyrevskiy@hse.ru); укажите, над какой задачей вы хотите поработать; укажите релевантную информацию про вас (публичный github, опыт по теме, что вы сочтете нужным);&lt;br /&gt;
# далее, вам нужно с руководителем обсудить задачу и возможность работы над ней; обычно руководитель вам чуть более подробно вам расскажет, что от вас будет требоваться, вы обсудите, насколько реально вам выполнить предлагаемую работу;&lt;br /&gt;
# в конечном итоге, вы вместе с руководителем приходите или к положительному решению (вы работаете над оговоренной задачей), или к отрицательному (вам необходимо выбрать другую тему курсовой работы).&lt;br /&gt;
&lt;br /&gt;
=== Рекомендуемые темы проектной работы ===&lt;br /&gt;
&lt;br /&gt;
==== Безопасность ====&lt;br /&gt;
По поводу тем курсовых работ на тему информационной безопасности можно обращаться напрямую к [[mailto:gamajun@gmail.com|Денису Гамаюнову]]. В рамках командной проектной работы предлагается два проекта:&lt;br /&gt;
http://wiki.cs.hse.ru/Децентрализованный_крипточат_(командный_проект)&lt;br /&gt;
http://wiki.cs.hse.ru/Веб-краулер_для_поиска_уязвимостей_авторизации_(командный_проект)&lt;br /&gt;
&lt;br /&gt;
==== Криптовалюты, блокчейн ====&lt;br /&gt;
По поводу курсовых работ на тему криптовалют, блокчейна можно обращаться напрямую к [[Участник:Ryavorsky|Ярославу Яворскому]] для непосредственного обсуждения. Ниже приведены примеры тем, предлагаемых в рамках проектной работы на 2-м курсе.&lt;br /&gt;
http://wiki.cs.hse.ru/Анализ_данных,_хранимых_в_реестрах_криптовалют_(проект)&lt;br /&gt;
http://wiki.cs.hse.ru/Аналитический_сервис_по_новостям_в_сфере_блокчейн_технологий_(проект)&lt;br /&gt;
http://wiki.cs.hse.ru/Тестирование_и_верификация_смарт-контрактов_(проект)&lt;br /&gt;
http://wiki.cs.hse.ru/Разработка_веб_интерфейсов_для_криптовалют_и_смарт-контрактов_(проект)&lt;br /&gt;
&lt;br /&gt;
=== Темы возможных курсовых работ ===&lt;br /&gt;
&lt;br /&gt;
!! &#039;&#039;&#039;Список тем еще дополняется / расширяется.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== ClickHouse: TODO ====&lt;br /&gt;
&lt;br /&gt;
[https://clickhouse.yandex/ ClickHouse] -- открытая колоночная СУБД, позволяющая выполнять аналитические запросы в интерактивном режиме по данным, обновляемым в реальном времени. ClickHouse разработан в Яндексе для задач Яндекс.Метрики -- второй по величине системы веб-аналитики в мире.&lt;br /&gt;
&lt;br /&gt;
==== Postgres Pro: Автоматизация смены мастера в кластере PostgreSQL, использующем логическую  репликацию ====&lt;br /&gt;
Есть к ластер  PostgreSQL  с  мастером  и  несколькими  репликами.  Используется логическая  репликация.  Требуется  разработать  приложение, к оторое  в  случае  выхода мастера  из  строя  автоматически  выбирает  нового  мастера  и  переключает  на  него остальные  реплики.  Допускается з ависимость  от  сторонних  приложений,  в  частности etcd  или  Consul.&lt;br /&gt;
&lt;br /&gt;
==== Postgres Pro: Приоритезация з апросов  в  РСУБД  PostgreSQL ====&lt;br /&gt;
Исследовать  различные  механизмы  приоритезации з апросов  в  реляционных  базах данных.  Реализовать  механизм  приоритезации з апросов  для  РСУБД  PostgreSQL. Запросы  с  большим  приоритетом  выполняются  раньше з апросов  с  низким приоритетом.  Кроме т ого,  время,  выделяемое  на  выполнение з апросов, пропорционально  их  приоритетам.  Например,  при  одновременном  выполнении  OLTP  и OLAP з апросов  становится  возможно  присвоить  первым  более  высокий  приоритет, чем  вторым.  В  результате  OLTP з апросы  будут  выполняться к ак  можно  быстрее,  а OLAP з апросы  будут  выполняться  в  фоне  с  меньшим  приоритетом.&lt;br /&gt;
&lt;br /&gt;
==== Postgres Pro: Разработка  механизма  ограничения  используемых  ресурсов  в  PostgreSQL ====&lt;br /&gt;
Исследование  механизмов  ограничения  использования  системных  ресурсов -   времени CPU,  оперативной  памяти,  места  на  диске,  сетевого т рафика,  и т ак  далее.  Реализация механизма  ограничения  используемых  ресурсов  по  пользователям  и  сессиям  для РСУБД  PostgreSQL.  Допускается  использование  сторонних  механизмов,  в  частности cgroups.&lt;br /&gt;
&lt;br /&gt;
==== Postgres Pro: Реализация  в  модуле  pg_trgm  поиска  по  N-граммам  с  N  &amp;gt;  3 ====&lt;br /&gt;
Модуль  pg_trgm  для  PostgreSQL  позволяет  делать  индексы  по т риграммам  для нечеткого  поиска.  К  примеру,  слово &#039; молоко&#039;  будет  разложено  на  массив триграмм [ мол,  оло,  лок,  око]  и  если  поисковый  слово  содержит  опечатку, т о большинство т риграмм  останется  неизменным.  Это  свойство  используется  для поиска:  можно  разложить  искомые  слова/фразы  на т риграммы,  построить  по ним  обратный ( инвертированный)  индекс  и  при  поиске  искать  документы  с максимальным  числом  одинаковых т риграмм.  Такой  подход  хорошо  и  быстро работает  на  словах  и  небольших  фразах.&lt;br /&gt;
Однако  данный  подход  не  эффективен,  если  поиск  ведется  по  предложениям. Так к ак  предложение  большое, т о  разных т риграмм  от к аждого  документа получается  много  и  поисковый з апрос  будет  пересекаться  с  очень  большим количеством  строк  в т аблице.  Чтобы  избежать  этого,  предлагается реализовать  поддержку  не т риграмм,  а  на  N-грамм  с  N=  4,  5  и т ак  далее.  Тогда разных  N-грам  ставится  экспоненциально  больше  с  ростом  N  и  соответственно вероятность  встретить  данную  N-грамму -   меньше,  следовательно  при  поиске требуется  проверять  на  соответствие  меньше  строк  и  поиск  становится эффективнее.&lt;br /&gt;
&lt;br /&gt;
==== Улучшение симулятора планировщика ресурсов кластера ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:ignat@yandex-team.ru Игнатий Игоревич Колесниченко]&lt;br /&gt;
&lt;br /&gt;
В системе [https://habrahabr.ru/company/yandex/blog/311104/ YT] одна из наиболее значимых компонент -- это планировщик вычислений. Именно он отвечает за распределение ресурсов кластера между пользователями с учетом их требований и желаемых гарантий (зачастую, противоречивых). От эффективности работы планировщика зависит общая эффективность работы кластера и удовлетворенность пользователей. Для проведения оффлайн-экспериментов над алгоритмами планировщика был разработан симулятор, использующий &amp;quot;трейс&amp;quot; событий, снятый с реального кластера (запуск вычислений, освобождение вычислительных ресурсов, потеря вычислений в результате сбоя, и др.). Ниже представлены возможные направления для последующих исследований и улучшений данной функциональности.&lt;br /&gt;
&lt;br /&gt;
В текущей версии симулятора известен ряд недоработок, существенно влияющих на качество симуляции. Например, текущий симулятор не учитывает зависимость вычислений между собой (когда выход одного вычисления используется как вход для другого). За счет использования метаинформации (имя пользователя, время начала/окончания вычислений, именование входных/выходных данных) можно было бы восстановить данные зависимости, что позволит существенно улучшить качество симуляции и, соответственно, качество вычисляемых метрик для цепочек вычислений.&lt;br /&gt;
&lt;br /&gt;
==== Формальная спецификация HDFS ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:sandello@yandex-team.ru Иван Витальевич Пузыревский]&lt;br /&gt;
&lt;br /&gt;
HDFS (Hadoop Distributed File System) -- распределенная отказоустойчивая файловая система. В данной работе предлагается разработать и проверить формальную спецификацию системы с помощью [http://research.microsoft.com/en-us/um/people/lamport/tla/tla.html TLA+].&lt;br /&gt;
&lt;br /&gt;
==== Имитационное моделирование вычислительных ресурсов и распределенных вычислительных инфраструктур ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:oleg.sukhoroslov@gmail.com Олег Викторович Сухорослов]&lt;br /&gt;
&lt;br /&gt;
Имитационное моделирование активно используется в исследованиях распределенных систем, заменяя натурные эксперименты и позволяя воспроизводимым образом сравнивать между собой различные методы (например, алгоритмы планирования задач). В данной работе объектом моделирования являются распределенные вычислительные инфраструктуры, состоящие из нескольких автономных ресурсов различного типа (кластеров, гридов, облаков, персональных компьютеров). Для реалистичного моделирования таких инфраструктур требуется хорошо моделировать отдельные ресурсы, их планировщики, нагрузку и доступность, а также передачу данных по сети. Для данных целей предлагается использовать [http://simgrid.gforge.inria.fr/ SimGrid], фреймворк для создания симуляторов распределенных систем. Требуется улучшить имеющиеся или реализовать новые модели ресурсов (например, кластер с планировщиком и внутренним потоком заданий), а также интегрировать их в единую модель. Возможны отдельные подтемы и работа в команде.&lt;br /&gt;
&lt;br /&gt;
==== Симуляция и сравнительный анализ алгоритмов планирования задач в распределенных вычислительных системах ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:oleg.sukhoroslov@gmail.com Олег Викторович Сухорослов]&lt;br /&gt;
&lt;br /&gt;
Планирование выполнения задач в распределенных системах в постановках, представляющих практический интерес, является NP-полной задачей. За последнее десятилетие было предложено множество алгоритмов планирования, основанных на различного рода (мета)эвристиках и ориентированных на различные классы приложений (bag of tasks, parallel job, workflow) и систем. При этом недостаточно хорошо изучен вопрос об области применимости и сравнительной эффективности данных алгоритмов в различных ситуациях. В данной работе предлагается реализовать на базе существующего симулятора наиболее известные алгоритмы и сравнить их друг с другом путем проведения имитационных экспериментов для различных типов приложений и систем. Возможны отдельные подтемы и работа в команде.&lt;br /&gt;
&lt;br /&gt;
==== Исследование и экспериментальная оценка технологий распределенных вычислений на основе pilot jobs ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:oleg.sukhoroslov@gmail.com Олег Викторович Сухорослов]&lt;br /&gt;
&lt;br /&gt;
При реализации крупномасштабных вычислений на базе распределенных ресурсов с собственными планировщиками часто используется стратегия pilot jobs. Данная стратегия, заключающаяся в запуске на ресурсах заданий-агентов с последующим динамическим распределением по ним задач, позволяет уменьшить влияние задержек в очередях ресурсов и накладные расходы на запуск задач. В настоящее время существует несколько технологий (pilot job frameworks), реализующих данный подход, например HTCondor, DIANE, BigJob, Swift, DIRAC. В данной работе предлагается изучить и сравнить между собой несколько данных технологий путем их развертывания и проведения экспериментов на тестовой инфраструктуре. Особое внимание планируется уделить сравнению производительности различных решений, оценке их масштабируемости, выявлению узких мест и поиску способов их устранения.&lt;br /&gt;
&lt;br /&gt;
==== Использование простаивающих вычислительных ресурсов для распределенных вычислений на базе платформы Everest ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:oleg.sukhoroslov@gmail.com Олег Викторович Сухорослов]&lt;br /&gt;
&lt;br /&gt;
Платформа [http://everest.distcomp.org/ Everest], разрабатываемая в ИППИ РАН, позволяет публиковать в виде веб-сервисов вычислительные приложения и запускать через веб-интерфейс расчеты на произвольных комбинациях внешних ресурсов, подключенных пользователями к платформе. Интеграция ресурсов с платформой реализована на основе специально разработанного агента, который выполняется на стороне ресурса. В настоящее время агент поддерживает запуск задач на одиночной машине (в монопольном режиме) и кластере (с приоритетом обычного пользователя), не учитывая внешнюю нагрузку на ресурс. В данной работе предлагается реализовать поддержку использования ресурса только в моменты его простоя, что требует мониторинга текущей загрузки ресурса и динамического управления задачами. При этом планируется использовать опыт и наработки систем, ориентированных на использование простаивающих персональных компьютеров (BOINC, Condor).&lt;br /&gt;
&lt;br /&gt;
==== Реализация универсального вычислительного агента для систем распределенных вычислений ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:oleg.sukhoroslov@gmail.com Олег Викторович Сухорослов]&lt;br /&gt;
&lt;br /&gt;
Платформа [http://everest.distcomp.org/ Everest], разрабатываемая в ИППИ РАН, позволяет публиковать в виде веб-сервисов вычислительные приложения и запускать через веб-интерфейс расчеты на произвольных комбинациях внешних ресурсов, подключенных пользователями к платформе. Интеграция ресурсов с платформой реализована на основе специально разработанного агента, который выполняется на стороне ресурса. Агент написан на языке Python с использованием фреймворка Tornado и реализует асинхронную обработку, запуск и мониторинг поступающих задач, загрузку данных и обмен сообщениями с платформой. В данной работе предлагается реализовать принципиально новую версию агента на языке Go. Помимо имеющейся функциональности планируется реализовать прямое взаимодействие по сети между агентами, автоматическое обновление кода агента, а также обеспечить универсальность агента для его использования с другими системами распределенных вычислений.&lt;br /&gt;
&lt;br /&gt;
==== Исследование и реализация методов прямой передачи данных по сети между узлами за NAT и межсетевыми экранами ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:oleg.sukhoroslov@gmail.com Олег Викторович Сухорослов]&lt;br /&gt;
&lt;br /&gt;
При реализации распределенных вычислений в глобальной сети часто возникает задача передачи данных между двумя машинами или ресурсами, находящимися в различных географических точках. При этом зачастую между данными машинами в сети находятся  устройства, выполняющие трансляцию адресов (NAT) и межсетевые экраны, что затрудняет установление прямого соединения. Подход, использующий промежуточный сервер для обмена данными, обладает низкой эффективностью в случае передачи больших объемов данных или частых обменов. В данной работе предлагается изучить существующие методы прямой передачи данных между хостами в глобальной сети, реализовать некоторые из этих методов и экспериментально сравнить их эффективность.&lt;br /&gt;
&lt;br /&gt;
==== Исследование и экспериментальная оценка методов обеспечения отказоустойчивости MPI-приложений ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:oleg.sukhoroslov@gmail.com Олег Викторович Сухорослов]&lt;br /&gt;
&lt;br /&gt;
Одной из основных проблем, связанных с использованием в будущем мощных вычислительных систем уровня [https://en.wikipedia.org/wiki/Exascale_computing exascale], является обеспечение устойчивости параллельных программ к отказам. Поскольку данные системы могут включать миллионы процессоров, выполняющих до миллиарда потоков, то ожидается что в них с высокой частотой (до нескольких раз в час) будут возникать всевозможные сбои на аппаратном и программном уровнях, приводящие к падению процессов или потере данных. Традиционные методы, такие как checkpointing, становятся неэффективными в условиях, когда сохранение состояния требует времени сопоставимого с частотой отказов. В настоящее время активно ведется разработка новых методов, нацеленных на решение данной проблемы, в частности применительно к выполнению MPI-программ. В данной работе предлагается изучить данные методы, провести их экспериментальную оценку и, возможно, улучшить.&lt;/div&gt;</summary>
		<author><name>Sandello</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=%D0%A2%D0%B5%D0%BC%D1%8B_%D0%B4%D0%BB%D1%8F_%D0%BA%D1%83%D1%80%D1%81%D0%BE%D0%B2%D1%8B%D1%85_%D1%80%D0%B0%D0%B1%D0%BE%D1%82_2017_(%D0%A0%D0%A1)&amp;diff=24823</id>
		<title>Темы для курсовых работ 2017 (РС)</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=%D0%A2%D0%B5%D0%BC%D1%8B_%D0%B4%D0%BB%D1%8F_%D0%BA%D1%83%D1%80%D1%81%D0%BE%D0%B2%D1%8B%D1%85_%D1%80%D0%B0%D0%B1%D0%BE%D1%82_2017_(%D0%A0%D0%A1)&amp;diff=24823"/>
		<updated>2017-10-02T14:52:36Z</updated>

		<summary type="html">&lt;p&gt;Sandello: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Курсовые работы ==&lt;br /&gt;
&lt;br /&gt;
Ниже приведены описания возможных проектов курсовой работы (напоминаю, что на третьем курсе в качестве курсовой работы засчитывается и [http://wiki.cs.hse.ru/Проектная_работа проектная работа]).&lt;br /&gt;
&lt;br /&gt;
Если вас заинтересовала какая-либо из предложенных тем и вы хотите над ней поработать в рамках вашей курсовой работы, то ваша последовательность действий такая:&lt;br /&gt;
# напишите письмо руководителю темы, в копию письма добавьте Пузыревского Ивана (ipuzyrevskiy@hse.ru); укажите, над какой задачей вы хотите поработать; укажите релевантную информацию про вас (публичный github, опыт по теме, что вы сочтете нужным);&lt;br /&gt;
# далее, вам нужно с руководителем обсудить задачу и возможность работы над ней; обычно руководитель вам чуть более подробно вам расскажет, что от вас будет требоваться, вы обсудите, насколько реально вам выполнить предлагаемую работу;&lt;br /&gt;
# в конечном итоге, вы вместе с руководителем приходите или к положительному решению (вы работаете над оговоренной задачей), или к отрицательному (вам необходимо выбрать другую тему курсовой работы).&lt;br /&gt;
&lt;br /&gt;
=== Рекомендуемые темы проектной работы ===&lt;br /&gt;
&lt;br /&gt;
==== Безопасность ====&lt;br /&gt;
По поводу тем курсовых работ на тему информационной безопасности можно обращаться напрямую к [[mailto:gamajun@gmail.com|Денису Гамаюнову]]. В рамках командной проектной работы предлагается два проекта:&lt;br /&gt;
http://wiki.cs.hse.ru/Децентрализованный_крипточат_(командный_проект)&lt;br /&gt;
http://wiki.cs.hse.ru/Веб-краулер_для_поиска_уязвимостей_авторизации_(командный_проект)&lt;br /&gt;
&lt;br /&gt;
==== Криптовалюты, блокчейн ====&lt;br /&gt;
По поводу курсовых работ на тему криптовалют, блокчейна можно обращаться напрямую к [[Участник:Ryavorsky|Ярославу Яворскому]] для непосредственного обсуждения. Ниже приведены примеры тем, предлагаемых в рамках проектной работы на 2-м курсе.&lt;br /&gt;
http://wiki.cs.hse.ru/Анализ_данных,_хранимых_в_реестрах_криптовалют_(проект)&lt;br /&gt;
http://wiki.cs.hse.ru/Аналитический_сервис_по_новостям_в_сфере_блокчейн_технологий_(проект)&lt;br /&gt;
http://wiki.cs.hse.ru/Тестирование_и_верификация_смарт-контрактов_(проект)&lt;br /&gt;
http://wiki.cs.hse.ru/Разработка_веб_интерфейсов_для_криптовалют_и_смарт-контрактов_(проект)&lt;br /&gt;
&lt;br /&gt;
=== Темы возможных курсовых работ ===&lt;br /&gt;
&lt;br /&gt;
==== ClickHouse: TODO ====&lt;br /&gt;
&lt;br /&gt;
[https://clickhouse.yandex/ ClickHouse] -- открытая колоночная СУБД, позволяющая выполнять аналитические запросы в интерактивном режиме по данным, обновляемым в реальном времени. ClickHouse разработан в Яндексе для задач Яндекс.Метрики -- второй по величине системы веб-аналитики в мире.&lt;br /&gt;
&lt;br /&gt;
==== Postgres Pro: Автоматизация смены мастера в кластере PostgreSQL, использующем логическую  репликацию ====&lt;br /&gt;
Есть к ластер  PostgreSQL  с  мастером  и  несколькими  репликами.  Используется логическая  репликация.  Требуется  разработать  приложение, к оторое  в  случае  выхода мастера  из  строя  автоматически  выбирает  нового  мастера  и  переключает  на  него остальные  реплики.  Допускается з ависимость  от  сторонних  приложений,  в  частности etcd  или  Consul.&lt;br /&gt;
&lt;br /&gt;
==== Postgres Pro: Приоритезация з апросов  в  РСУБД  PostgreSQL ====&lt;br /&gt;
Исследовать  различные  механизмы  приоритезации з апросов  в  реляционных  базах данных.  Реализовать  механизм  приоритезации з апросов  для  РСУБД  PostgreSQL. Запросы  с  большим  приоритетом  выполняются  раньше з апросов  с  низким приоритетом.  Кроме т ого,  время,  выделяемое  на  выполнение з апросов, пропорционально  их  приоритетам.  Например,  при  одновременном  выполнении  OLTP  и OLAP з апросов  становится  возможно  присвоить  первым  более  высокий  приоритет, чем  вторым.  В  результате  OLTP з апросы  будут  выполняться к ак  можно  быстрее,  а OLAP з апросы  будут  выполняться  в  фоне  с  меньшим  приоритетом.&lt;br /&gt;
&lt;br /&gt;
==== Postgres Pro: Разработка  механизма  ограничения  используемых  ресурсов  в  PostgreSQL ====&lt;br /&gt;
Исследование  механизмов  ограничения  использования  системных  ресурсов -   времени CPU,  оперативной  памяти,  места  на  диске,  сетевого т рафика,  и т ак  далее.  Реализация механизма  ограничения  используемых  ресурсов  по  пользователям  и  сессиям  для РСУБД  PostgreSQL.  Допускается  использование  сторонних  механизмов,  в  частности cgroups.&lt;br /&gt;
&lt;br /&gt;
==== Postgres Pro: Реализация  в  модуле  pg_trgm  поиска  по  N-граммам  с  N  &amp;gt;  3 ====&lt;br /&gt;
Модуль  pg_trgm  для  PostgreSQL  позволяет  делать  индексы  по т риграммам  для нечеткого  поиска.  К  примеру,  слово &#039; молоко&#039;  будет  разложено  на  массив триграмм [ мол,  оло,  лок,  око]  и  если  поисковый  слово  содержит  опечатку, т о большинство т риграмм  останется  неизменным.  Это  свойство  используется  для поиска:  можно  разложить  искомые  слова/фразы  на т риграммы,  построить  по ним  обратный ( инвертированный)  индекс  и  при  поиске  искать  документы  с максимальным  числом  одинаковых т риграмм.  Такой  подход  хорошо  и  быстро работает  на  словах  и  небольших  фразах.&lt;br /&gt;
Однако  данный  подход  не  эффективен,  если  поиск  ведется  по  предложениям. Так к ак  предложение  большое, т о  разных т риграмм  от к аждого  документа получается  много  и  поисковый з апрос  будет  пересекаться  с  очень  большим количеством  строк  в т аблице.  Чтобы  избежать  этого,  предлагается реализовать  поддержку  не т риграмм,  а  на  N-грамм  с  N=  4,  5  и т ак  далее.  Тогда разных  N-грам  ставится  экспоненциально  больше  с  ростом  N  и  соответственно вероятность  встретить  данную  N-грамму -   меньше,  следовательно  при  поиске требуется  проверять  на  соответствие  меньше  строк  и  поиск  становится эффективнее.&lt;br /&gt;
&lt;br /&gt;
==== Улучшение симулятора планировщика ресурсов кластера ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:ignat@yandex-team.ru Игнатий Игоревич Колесниченко]&lt;br /&gt;
&lt;br /&gt;
В системе [https://habrahabr.ru/company/yandex/blog/311104/ YT] одна из наиболее значимых компонент -- это планировщик вычислений. Именно он отвечает за распределение ресурсов кластера между пользователями с учетом их требований и желаемых гарантий (зачастую, противоречивых). От эффективности работы планировщика зависит общая эффективность работы кластера и удовлетворенность пользователей. Для проведения оффлайн-экспериментов над алгоритмами планировщика был разработан симулятор, использующий &amp;quot;трейс&amp;quot; событий, снятый с реального кластера (запуск вычислений, освобождение вычислительных ресурсов, потеря вычислений в результате сбоя, и др.). Ниже представлены возможные направления для последующих исследований и улучшений данной функциональности.&lt;br /&gt;
&lt;br /&gt;
В текущей версии симулятора известен ряд недоработок, существенно влияющих на качество симуляции. Например, текущий симулятор не учитывает зависимость вычислений между собой (когда выход одного вычисления используется как вход для другого). За счет использования метаинформации (имя пользователя, время начала/окончания вычислений, именование входных/выходных данных) можно было бы восстановить данные зависимости, что позволит существенно улучшить качество симуляции и, соответственно, качество вычисляемых метрик для цепочек вычислений.&lt;br /&gt;
&lt;br /&gt;
==== Формальная спецификация HDFS ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:sandello@yandex-team.ru Иван Витальевич Пузыревский]&lt;br /&gt;
&lt;br /&gt;
HDFS (Hadoop Distributed File System) -- распределенная отказоустойчивая файловая система. В данной работе предлагается разработать и проверить формальную спецификацию системы с помощью [http://research.microsoft.com/en-us/um/people/lamport/tla/tla.html TLA+].&lt;br /&gt;
&lt;br /&gt;
==== Имитационное моделирование вычислительных ресурсов и распределенных вычислительных инфраструктур ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:oleg.sukhoroslov@gmail.com Олег Викторович Сухорослов]&lt;br /&gt;
&lt;br /&gt;
Имитационное моделирование активно используется в исследованиях распределенных систем, заменяя натурные эксперименты и позволяя воспроизводимым образом сравнивать между собой различные методы (например, алгоритмы планирования задач). В данной работе объектом моделирования являются распределенные вычислительные инфраструктуры, состоящие из нескольких автономных ресурсов различного типа (кластеров, гридов, облаков, персональных компьютеров). Для реалистичного моделирования таких инфраструктур требуется хорошо моделировать отдельные ресурсы, их планировщики, нагрузку и доступность, а также передачу данных по сети. Для данных целей предлагается использовать [http://simgrid.gforge.inria.fr/ SimGrid], фреймворк для создания симуляторов распределенных систем. Требуется улучшить имеющиеся или реализовать новые модели ресурсов (например, кластер с планировщиком и внутренним потоком заданий), а также интегрировать их в единую модель. Возможны отдельные подтемы и работа в команде.&lt;br /&gt;
&lt;br /&gt;
==== Симуляция и сравнительный анализ алгоритмов планирования задач в распределенных вычислительных системах ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:oleg.sukhoroslov@gmail.com Олег Викторович Сухорослов]&lt;br /&gt;
&lt;br /&gt;
Планирование выполнения задач в распределенных системах в постановках, представляющих практический интерес, является NP-полной задачей. За последнее десятилетие было предложено множество алгоритмов планирования, основанных на различного рода (мета)эвристиках и ориентированных на различные классы приложений (bag of tasks, parallel job, workflow) и систем. При этом недостаточно хорошо изучен вопрос об области применимости и сравнительной эффективности данных алгоритмов в различных ситуациях. В данной работе предлагается реализовать на базе существующего симулятора наиболее известные алгоритмы и сравнить их друг с другом путем проведения имитационных экспериментов для различных типов приложений и систем. Возможны отдельные подтемы и работа в команде.&lt;br /&gt;
&lt;br /&gt;
==== Исследование и экспериментальная оценка технологий распределенных вычислений на основе pilot jobs ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:oleg.sukhoroslov@gmail.com Олег Викторович Сухорослов]&lt;br /&gt;
&lt;br /&gt;
При реализации крупномасштабных вычислений на базе распределенных ресурсов с собственными планировщиками часто используется стратегия pilot jobs. Данная стратегия, заключающаяся в запуске на ресурсах заданий-агентов с последующим динамическим распределением по ним задач, позволяет уменьшить влияние задержек в очередях ресурсов и накладные расходы на запуск задач. В настоящее время существует несколько технологий (pilot job frameworks), реализующих данный подход, например HTCondor, DIANE, BigJob, Swift, DIRAC. В данной работе предлагается изучить и сравнить между собой несколько данных технологий путем их развертывания и проведения экспериментов на тестовой инфраструктуре. Особое внимание планируется уделить сравнению производительности различных решений, оценке их масштабируемости, выявлению узких мест и поиску способов их устранения.&lt;br /&gt;
&lt;br /&gt;
==== Использование простаивающих вычислительных ресурсов для распределенных вычислений на базе платформы Everest ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:oleg.sukhoroslov@gmail.com Олег Викторович Сухорослов]&lt;br /&gt;
&lt;br /&gt;
Платформа [http://everest.distcomp.org/ Everest], разрабатываемая в ИППИ РАН, позволяет публиковать в виде веб-сервисов вычислительные приложения и запускать через веб-интерфейс расчеты на произвольных комбинациях внешних ресурсов, подключенных пользователями к платформе. Интеграция ресурсов с платформой реализована на основе специально разработанного агента, который выполняется на стороне ресурса. В настоящее время агент поддерживает запуск задач на одиночной машине (в монопольном режиме) и кластере (с приоритетом обычного пользователя), не учитывая внешнюю нагрузку на ресурс. В данной работе предлагается реализовать поддержку использования ресурса только в моменты его простоя, что требует мониторинга текущей загрузки ресурса и динамического управления задачами. При этом планируется использовать опыт и наработки систем, ориентированных на использование простаивающих персональных компьютеров (BOINC, Condor).&lt;br /&gt;
&lt;br /&gt;
==== Реализация универсального вычислительного агента для систем распределенных вычислений ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:oleg.sukhoroslov@gmail.com Олег Викторович Сухорослов]&lt;br /&gt;
&lt;br /&gt;
Платформа [http://everest.distcomp.org/ Everest], разрабатываемая в ИППИ РАН, позволяет публиковать в виде веб-сервисов вычислительные приложения и запускать через веб-интерфейс расчеты на произвольных комбинациях внешних ресурсов, подключенных пользователями к платформе. Интеграция ресурсов с платформой реализована на основе специально разработанного агента, который выполняется на стороне ресурса. Агент написан на языке Python с использованием фреймворка Tornado и реализует асинхронную обработку, запуск и мониторинг поступающих задач, загрузку данных и обмен сообщениями с платформой. В данной работе предлагается реализовать принципиально новую версию агента на языке Go. Помимо имеющейся функциональности планируется реализовать прямое взаимодействие по сети между агентами, автоматическое обновление кода агента, а также обеспечить универсальность агента для его использования с другими системами распределенных вычислений.&lt;br /&gt;
&lt;br /&gt;
==== Исследование и реализация методов прямой передачи данных по сети между узлами за NAT и межсетевыми экранами ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:oleg.sukhoroslov@gmail.com Олег Викторович Сухорослов]&lt;br /&gt;
&lt;br /&gt;
При реализации распределенных вычислений в глобальной сети часто возникает задача передачи данных между двумя машинами или ресурсами, находящимися в различных географических точках. При этом зачастую между данными машинами в сети находятся  устройства, выполняющие трансляцию адресов (NAT) и межсетевые экраны, что затрудняет установление прямого соединения. Подход, использующий промежуточный сервер для обмена данными, обладает низкой эффективностью в случае передачи больших объемов данных или частых обменов. В данной работе предлагается изучить существующие методы прямой передачи данных между хостами в глобальной сети, реализовать некоторые из этих методов и экспериментально сравнить их эффективность.&lt;br /&gt;
&lt;br /&gt;
==== Исследование и экспериментальная оценка методов обеспечения отказоустойчивости MPI-приложений ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:oleg.sukhoroslov@gmail.com Олег Викторович Сухорослов]&lt;br /&gt;
&lt;br /&gt;
Одной из основных проблем, связанных с использованием в будущем мощных вычислительных систем уровня [https://en.wikipedia.org/wiki/Exascale_computing exascale], является обеспечение устойчивости параллельных программ к отказам. Поскольку данные системы могут включать миллионы процессоров, выполняющих до миллиарда потоков, то ожидается что в них с высокой частотой (до нескольких раз в час) будут возникать всевозможные сбои на аппаратном и программном уровнях, приводящие к падению процессов или потере данных. Традиционные методы, такие как checkpointing, становятся неэффективными в условиях, когда сохранение состояния требует времени сопоставимого с частотой отказов. В настоящее время активно ведется разработка новых методов, нацеленных на решение данной проблемы, в частности применительно к выполнению MPI-программ. В данной работе предлагается изучить данные методы, провести их экспериментальную оценку и, возможно, улучшить.&lt;/div&gt;</summary>
		<author><name>Sandello</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=%D0%A2%D0%B5%D0%BC%D1%8B_%D0%B4%D0%BB%D1%8F_%D0%BA%D1%83%D1%80%D1%81%D0%BE%D0%B2%D1%8B%D1%85_%D1%80%D0%B0%D0%B1%D0%BE%D1%82_2017_(%D0%A0%D0%A1)&amp;diff=24822</id>
		<title>Темы для курсовых работ 2017 (РС)</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=%D0%A2%D0%B5%D0%BC%D1%8B_%D0%B4%D0%BB%D1%8F_%D0%BA%D1%83%D1%80%D1%81%D0%BE%D0%B2%D1%8B%D1%85_%D1%80%D0%B0%D0%B1%D0%BE%D1%82_2017_(%D0%A0%D0%A1)&amp;diff=24822"/>
		<updated>2017-10-02T14:50:25Z</updated>

		<summary type="html">&lt;p&gt;Sandello: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Курсовые работы ==&lt;br /&gt;
&lt;br /&gt;
Ниже приведены описания возможных проектов курсовой работы (напоминаю, что на третьем курсе в качестве курсовой работы засчитывается и [http://wiki.cs.hse.ru/Проектная_работа проектная работа]).&lt;br /&gt;
&lt;br /&gt;
Если вас заинтересовала какая-либо из предложенных тем и вы хотите над ней поработать в рамках вашей курсовой работы, то ваша последовательность действий такая:&lt;br /&gt;
# напишите письмо руководителю темы, в копию письма добавьте Пузыревского Ивана (ipuzyrevskiy@hse.ru); укажите, над какой задачей вы хотите поработать; укажите релевантную информацию про вас (публичный github, опыт по теме, что вы сочтете нужным);&lt;br /&gt;
# далее, вам нужно с руководителем обсудить задачу и возможность работы над ней; обычно руководитель вам чуть более подробно вам расскажет, что от вас будет требоваться, вы обсудите, насколько реально вам выполнить предлагаемую работу;&lt;br /&gt;
# в конечном итоге, вы вместе с руководителем приходите или к положительному решению (вы работаете над оговоренной задачей), или к отрицательному (вам необходимо выбрать другую тему курсовой работы).&lt;br /&gt;
&lt;br /&gt;
=== Рекомендуемые темы проектной работы ===&lt;br /&gt;
&lt;br /&gt;
==== Безопасность ====&lt;br /&gt;
По поводу тем курсовых работ на тему информационной безопасности можно обращаться напрямую к [[mailto:gamajun@gmail.com|Денису Гамаюнову]]. В рамках командной проектной работы предлагается два проекта:&lt;br /&gt;
http://wiki.cs.hse.ru/Децентрализованный_крипточат_(командный_проект)&lt;br /&gt;
http://wiki.cs.hse.ru/Веб-краулер_для_поиска_уязвимостей_авторизации_(командный_проект)&lt;br /&gt;
&lt;br /&gt;
==== Криптовалюты, блокчейн ====&lt;br /&gt;
По поводу курсовых работ на тему криптовалют, блокчейна можно обращаться напрямую к [[Участник:Ryavorsky|Ярославу Яворскому]] для непосредственного обсуждения. Ниже приведены примеры тем, предлагаемых в рамках проектной работы на 2-м курсе.&lt;br /&gt;
http://wiki.cs.hse.ru/Анализ_данных,_хранимых_в_реестрах_криптовалют_(проект)&lt;br /&gt;
http://wiki.cs.hse.ru/Аналитический_сервис_по_новостям_в_сфере_блокчейн_технологий_(проект)&lt;br /&gt;
http://wiki.cs.hse.ru/Тестирование_и_верификация_смарт-контрактов_(проект)&lt;br /&gt;
http://wiki.cs.hse.ru/Разработка_веб_интерфейсов_для_криптовалют_и_смарт-контрактов_(проект)&lt;br /&gt;
&lt;br /&gt;
=== Темы возможных курсовых работ ===&lt;br /&gt;
&lt;br /&gt;
==== ClickHouse: TODO ====&lt;br /&gt;
&lt;br /&gt;
[https://clickhouse.yandex/ ClickHouse] -- открытая колоночная СУБД, позволяющая выполнять аналитические запросы в интерактивном режиме по данным, обновляемым в реальном времени. ClickHouse разработан в Яндексе для задач Яндекс.Метрики -- второй по величине системы веб-аналитики в мире.&lt;br /&gt;
&lt;br /&gt;
==== Улучшение симулятора планировщика ресурсов кластера ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:ignat@yandex-team.ru Игнатий Игоревич Колесниченко]&lt;br /&gt;
&lt;br /&gt;
В системе [https://habrahabr.ru/company/yandex/blog/311104/ YT] одна из наиболее значимых компонент -- это планировщик вычислений. Именно он отвечает за распределение ресурсов кластера между пользователями с учетом их требований и желаемых гарантий (зачастую, противоречивых). От эффективности работы планировщика зависит общая эффективность работы кластера и удовлетворенность пользователей. Для проведения оффлайн-экспериментов над алгоритмами планировщика был разработан симулятор, использующий &amp;quot;трейс&amp;quot; событий, снятый с реального кластера (запуск вычислений, освобождение вычислительных ресурсов, потеря вычислений в результате сбоя, и др.). Ниже представлены возможные направления для последующих исследований и улучшений данной функциональности.&lt;br /&gt;
&lt;br /&gt;
В текущей версии симулятора известен ряд недоработок, существенно влияющих на качество симуляции. Например, текущий симулятор не учитывает зависимость вычислений между собой (когда выход одного вычисления используется как вход для другого). За счет использования метаинформации (имя пользователя, время начала/окончания вычислений, именование входных/выходных данных) можно было бы восстановить данные зависимости, что позволит существенно улучшить качество симуляции и, соответственно, качество вычисляемых метрик для цепочек вычислений.&lt;br /&gt;
&lt;br /&gt;
==== Формальная спецификация HDFS ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:sandello@yandex-team.ru Иван Витальевич Пузыревский]&lt;br /&gt;
&lt;br /&gt;
HDFS (Hadoop Distributed File System) -- распределенная отказоустойчивая файловая система. В данной работе предлагается разработать и проверить формальную спецификацию системы с помощью [http://research.microsoft.com/en-us/um/people/lamport/tla/tla.html TLA+].&lt;br /&gt;
&lt;br /&gt;
==== Имитационное моделирование вычислительных ресурсов и распределенных вычислительных инфраструктур ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:oleg.sukhoroslov@gmail.com Олег Викторович Сухорослов]&lt;br /&gt;
&lt;br /&gt;
Имитационное моделирование активно используется в исследованиях распределенных систем, заменяя натурные эксперименты и позволяя воспроизводимым образом сравнивать между собой различные методы (например, алгоритмы планирования задач). В данной работе объектом моделирования являются распределенные вычислительные инфраструктуры, состоящие из нескольких автономных ресурсов различного типа (кластеров, гридов, облаков, персональных компьютеров). Для реалистичного моделирования таких инфраструктур требуется хорошо моделировать отдельные ресурсы, их планировщики, нагрузку и доступность, а также передачу данных по сети. Для данных целей предлагается использовать [http://simgrid.gforge.inria.fr/ SimGrid], фреймворк для создания симуляторов распределенных систем. Требуется улучшить имеющиеся или реализовать новые модели ресурсов (например, кластер с планировщиком и внутренним потоком заданий), а также интегрировать их в единую модель. Возможны отдельные подтемы и работа в команде.&lt;br /&gt;
&lt;br /&gt;
==== Симуляция и сравнительный анализ алгоритмов планирования задач в распределенных вычислительных системах ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:oleg.sukhoroslov@gmail.com Олег Викторович Сухорослов]&lt;br /&gt;
&lt;br /&gt;
Планирование выполнения задач в распределенных системах в постановках, представляющих практический интерес, является NP-полной задачей. За последнее десятилетие было предложено множество алгоритмов планирования, основанных на различного рода (мета)эвристиках и ориентированных на различные классы приложений (bag of tasks, parallel job, workflow) и систем. При этом недостаточно хорошо изучен вопрос об области применимости и сравнительной эффективности данных алгоритмов в различных ситуациях. В данной работе предлагается реализовать на базе существующего симулятора наиболее известные алгоритмы и сравнить их друг с другом путем проведения имитационных экспериментов для различных типов приложений и систем. Возможны отдельные подтемы и работа в команде.&lt;br /&gt;
&lt;br /&gt;
==== Исследование и экспериментальная оценка технологий распределенных вычислений на основе pilot jobs ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:oleg.sukhoroslov@gmail.com Олег Викторович Сухорослов]&lt;br /&gt;
&lt;br /&gt;
При реализации крупномасштабных вычислений на базе распределенных ресурсов с собственными планировщиками часто используется стратегия pilot jobs. Данная стратегия, заключающаяся в запуске на ресурсах заданий-агентов с последующим динамическим распределением по ним задач, позволяет уменьшить влияние задержек в очередях ресурсов и накладные расходы на запуск задач. В настоящее время существует несколько технологий (pilot job frameworks), реализующих данный подход, например HTCondor, DIANE, BigJob, Swift, DIRAC. В данной работе предлагается изучить и сравнить между собой несколько данных технологий путем их развертывания и проведения экспериментов на тестовой инфраструктуре. Особое внимание планируется уделить сравнению производительности различных решений, оценке их масштабируемости, выявлению узких мест и поиску способов их устранения.&lt;br /&gt;
&lt;br /&gt;
==== Использование простаивающих вычислительных ресурсов для распределенных вычислений на базе платформы Everest ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:oleg.sukhoroslov@gmail.com Олег Викторович Сухорослов]&lt;br /&gt;
&lt;br /&gt;
Платформа [http://everest.distcomp.org/ Everest], разрабатываемая в ИППИ РАН, позволяет публиковать в виде веб-сервисов вычислительные приложения и запускать через веб-интерфейс расчеты на произвольных комбинациях внешних ресурсов, подключенных пользователями к платформе. Интеграция ресурсов с платформой реализована на основе специально разработанного агента, который выполняется на стороне ресурса. В настоящее время агент поддерживает запуск задач на одиночной машине (в монопольном режиме) и кластере (с приоритетом обычного пользователя), не учитывая внешнюю нагрузку на ресурс. В данной работе предлагается реализовать поддержку использования ресурса только в моменты его простоя, что требует мониторинга текущей загрузки ресурса и динамического управления задачами. При этом планируется использовать опыт и наработки систем, ориентированных на использование простаивающих персональных компьютеров (BOINC, Condor).&lt;br /&gt;
&lt;br /&gt;
==== Реализация универсального вычислительного агента для систем распределенных вычислений ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:oleg.sukhoroslov@gmail.com Олег Викторович Сухорослов]&lt;br /&gt;
&lt;br /&gt;
Платформа [http://everest.distcomp.org/ Everest], разрабатываемая в ИППИ РАН, позволяет публиковать в виде веб-сервисов вычислительные приложения и запускать через веб-интерфейс расчеты на произвольных комбинациях внешних ресурсов, подключенных пользователями к платформе. Интеграция ресурсов с платформой реализована на основе специально разработанного агента, который выполняется на стороне ресурса. Агент написан на языке Python с использованием фреймворка Tornado и реализует асинхронную обработку, запуск и мониторинг поступающих задач, загрузку данных и обмен сообщениями с платформой. В данной работе предлагается реализовать принципиально новую версию агента на языке Go. Помимо имеющейся функциональности планируется реализовать прямое взаимодействие по сети между агентами, автоматическое обновление кода агента, а также обеспечить универсальность агента для его использования с другими системами распределенных вычислений.&lt;br /&gt;
&lt;br /&gt;
==== Исследование и реализация методов прямой передачи данных по сети между узлами за NAT и межсетевыми экранами ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:oleg.sukhoroslov@gmail.com Олег Викторович Сухорослов]&lt;br /&gt;
&lt;br /&gt;
При реализации распределенных вычислений в глобальной сети часто возникает задача передачи данных между двумя машинами или ресурсами, находящимися в различных географических точках. При этом зачастую между данными машинами в сети находятся  устройства, выполняющие трансляцию адресов (NAT) и межсетевые экраны, что затрудняет установление прямого соединения. Подход, использующий промежуточный сервер для обмена данными, обладает низкой эффективностью в случае передачи больших объемов данных или частых обменов. В данной работе предлагается изучить существующие методы прямой передачи данных между хостами в глобальной сети, реализовать некоторые из этих методов и экспериментально сравнить их эффективность.&lt;br /&gt;
&lt;br /&gt;
==== Исследование и экспериментальная оценка методов обеспечения отказоустойчивости MPI-приложений ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:oleg.sukhoroslov@gmail.com Олег Викторович Сухорослов]&lt;br /&gt;
&lt;br /&gt;
Одной из основных проблем, связанных с использованием в будущем мощных вычислительных систем уровня [https://en.wikipedia.org/wiki/Exascale_computing exascale], является обеспечение устойчивости параллельных программ к отказам. Поскольку данные системы могут включать миллионы процессоров, выполняющих до миллиарда потоков, то ожидается что в них с высокой частотой (до нескольких раз в час) будут возникать всевозможные сбои на аппаратном и программном уровнях, приводящие к падению процессов или потере данных. Традиционные методы, такие как checkpointing, становятся неэффективными в условиях, когда сохранение состояния требует времени сопоставимого с частотой отказов. В настоящее время активно ведется разработка новых методов, нацеленных на решение данной проблемы, в частности применительно к выполнению MPI-программ. В данной работе предлагается изучить данные методы, провести их экспериментальную оценку и, возможно, улучшить.&lt;/div&gt;</summary>
		<author><name>Sandello</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=%D0%A2%D0%B5%D0%BC%D1%8B_%D0%B4%D0%BB%D1%8F_%D0%BA%D1%83%D1%80%D1%81%D0%BE%D0%B2%D1%8B%D1%85_%D1%80%D0%B0%D0%B1%D0%BE%D1%82_2017_(%D0%A0%D0%A1)&amp;diff=24821</id>
		<title>Темы для курсовых работ 2017 (РС)</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=%D0%A2%D0%B5%D0%BC%D1%8B_%D0%B4%D0%BB%D1%8F_%D0%BA%D1%83%D1%80%D1%81%D0%BE%D0%B2%D1%8B%D1%85_%D1%80%D0%B0%D0%B1%D0%BE%D1%82_2017_(%D0%A0%D0%A1)&amp;diff=24821"/>
		<updated>2017-10-02T14:49:59Z</updated>

		<summary type="html">&lt;p&gt;Sandello: Новая страница: «== Курсовые работы ==  Ниже приведены описания возможных проектов курсовой работы (напоми…»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Курсовые работы ==&lt;br /&gt;
&lt;br /&gt;
Ниже приведены описания возможных проектов курсовой работы (напоминаю, что на третьем курсе в качестве курсовой работы засчитывается и [http://wiki.cs.hse.ru/Проектная_работа проектная работа]).&lt;br /&gt;
&lt;br /&gt;
Если вас заинтересовала какая-либо из предложенных тем и вы хотите над ней поработать в рамках вашей курсовой работы, то ваша последовательность действий такая:&lt;br /&gt;
# напишите письмо руководителю темы, в копию письма добавьте Пузыревского Ивана (ipuzyrevskiy@hse.ru); укажите, над какой задачей вы хотите поработать; укажите релевантную информацию про вас (публичный github, опыт по теме, что вы сочтете нужным);&lt;br /&gt;
# далее, вам нужно с руководителем обсудить задачу и возможность работы над ней; обычно руководитель вам чуть более подробно вам расскажет, что от вас будет требоваться, вы обсудите, насколько реально вам выполнить предлагаемую работу;&lt;br /&gt;
# в конечном итоге, вы вместе с руководителем приходите или к положительному решению (вы работаете над оговоренной задачей), или к отрицательному (вам необходимо выбрать другую тему курсовой работы).&lt;br /&gt;
&lt;br /&gt;
=== Рекомендуемые темы проектной работы ===&lt;br /&gt;
&lt;br /&gt;
Безопасность:&lt;br /&gt;
По поводу тем курсовых работ на тему информационной безопасности можно обращаться напрямую к [[mailto:gamajun@gmail.com|Денису Гамаюнову]]. В рамках командной проектной работы предлагается два проекта:&lt;br /&gt;
http://wiki.cs.hse.ru/Децентрализованный_крипточат_(командный_проект)&lt;br /&gt;
http://wiki.cs.hse.ru/Веб-краулер_для_поиска_уязвимостей_авторизации_(командный_проект)&lt;br /&gt;
&lt;br /&gt;
Блокчейн:&lt;br /&gt;
По поводу курсовых работ на тему криптовалют, блок-чейна можно обращаться напрямую к [[Участник:Ryavorsky|Ярославу Яворскому]] для непосредственного обсуждения. Ниже приведены примеры тем, предлагаемых в рамках проектной работы на 2-м курсе.&lt;br /&gt;
http://wiki.cs.hse.ru/Анализ_данных,_хранимых_в_реестрах_криптовалют_(проект)&lt;br /&gt;
http://wiki.cs.hse.ru/Аналитический_сервис_по_новостям_в_сфере_блокчейн_технологий_(проект)&lt;br /&gt;
http://wiki.cs.hse.ru/Тестирование_и_верификация_смарт-контрактов_(проект)&lt;br /&gt;
http://wiki.cs.hse.ru/Разработка_веб_интерфейсов_для_криптовалют_и_смарт-контрактов_(проект)&lt;br /&gt;
&lt;br /&gt;
=== Темы возможных курсовых работ ===&lt;br /&gt;
&lt;br /&gt;
==== ClickHouse: TODO ====&lt;br /&gt;
&lt;br /&gt;
[https://clickhouse.yandex/ ClickHouse] -- открытая колоночная СУБД, позволяющая выполнять аналитические запросы в интерактивном режиме по данным, обновляемым в реальном времени. ClickHouse разработан в Яндексе для задач Яндекс.Метрики -- второй по величине системы веб-аналитики в мире.&lt;br /&gt;
&lt;br /&gt;
==== Улучшение симулятора планировщика ресурсов кластера ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:ignat@yandex-team.ru Игнатий Игоревич Колесниченко]&lt;br /&gt;
&lt;br /&gt;
В системе [https://habrahabr.ru/company/yandex/blog/311104/ YT] одна из наиболее значимых компонент -- это планировщик вычислений. Именно он отвечает за распределение ресурсов кластера между пользователями с учетом их требований и желаемых гарантий (зачастую, противоречивых). От эффективности работы планировщика зависит общая эффективность работы кластера и удовлетворенность пользователей. Для проведения оффлайн-экспериментов над алгоритмами планировщика был разработан симулятор, использующий &amp;quot;трейс&amp;quot; событий, снятый с реального кластера (запуск вычислений, освобождение вычислительных ресурсов, потеря вычислений в результате сбоя, и др.). Ниже представлены возможные направления для последующих исследований и улучшений данной функциональности.&lt;br /&gt;
&lt;br /&gt;
В текущей версии симулятора известен ряд недоработок, существенно влияющих на качество симуляции. Например, текущий симулятор не учитывает зависимость вычислений между собой (когда выход одного вычисления используется как вход для другого). За счет использования метаинформации (имя пользователя, время начала/окончания вычислений, именование входных/выходных данных) можно было бы восстановить данные зависимости, что позволит существенно улучшить качество симуляции и, соответственно, качество вычисляемых метрик для цепочек вычислений.&lt;br /&gt;
&lt;br /&gt;
==== Формальная спецификация HDFS ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:sandello@yandex-team.ru Иван Витальевич Пузыревский]&lt;br /&gt;
&lt;br /&gt;
HDFS (Hadoop Distributed File System) -- распределенная отказоустойчивая файловая система. В данной работе предлагается разработать и проверить формальную спецификацию системы с помощью [http://research.microsoft.com/en-us/um/people/lamport/tla/tla.html TLA+].&lt;br /&gt;
&lt;br /&gt;
==== Имитационное моделирование вычислительных ресурсов и распределенных вычислительных инфраструктур ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:oleg.sukhoroslov@gmail.com Олег Викторович Сухорослов]&lt;br /&gt;
&lt;br /&gt;
Имитационное моделирование активно используется в исследованиях распределенных систем, заменяя натурные эксперименты и позволяя воспроизводимым образом сравнивать между собой различные методы (например, алгоритмы планирования задач). В данной работе объектом моделирования являются распределенные вычислительные инфраструктуры, состоящие из нескольких автономных ресурсов различного типа (кластеров, гридов, облаков, персональных компьютеров). Для реалистичного моделирования таких инфраструктур требуется хорошо моделировать отдельные ресурсы, их планировщики, нагрузку и доступность, а также передачу данных по сети. Для данных целей предлагается использовать [http://simgrid.gforge.inria.fr/ SimGrid], фреймворк для создания симуляторов распределенных систем. Требуется улучшить имеющиеся или реализовать новые модели ресурсов (например, кластер с планировщиком и внутренним потоком заданий), а также интегрировать их в единую модель. Возможны отдельные подтемы и работа в команде.&lt;br /&gt;
&lt;br /&gt;
==== Симуляция и сравнительный анализ алгоритмов планирования задач в распределенных вычислительных системах ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:oleg.sukhoroslov@gmail.com Олег Викторович Сухорослов]&lt;br /&gt;
&lt;br /&gt;
Планирование выполнения задач в распределенных системах в постановках, представляющих практический интерес, является NP-полной задачей. За последнее десятилетие было предложено множество алгоритмов планирования, основанных на различного рода (мета)эвристиках и ориентированных на различные классы приложений (bag of tasks, parallel job, workflow) и систем. При этом недостаточно хорошо изучен вопрос об области применимости и сравнительной эффективности данных алгоритмов в различных ситуациях. В данной работе предлагается реализовать на базе существующего симулятора наиболее известные алгоритмы и сравнить их друг с другом путем проведения имитационных экспериментов для различных типов приложений и систем. Возможны отдельные подтемы и работа в команде.&lt;br /&gt;
&lt;br /&gt;
==== Исследование и экспериментальная оценка технологий распределенных вычислений на основе pilot jobs ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:oleg.sukhoroslov@gmail.com Олег Викторович Сухорослов]&lt;br /&gt;
&lt;br /&gt;
При реализации крупномасштабных вычислений на базе распределенных ресурсов с собственными планировщиками часто используется стратегия pilot jobs. Данная стратегия, заключающаяся в запуске на ресурсах заданий-агентов с последующим динамическим распределением по ним задач, позволяет уменьшить влияние задержек в очередях ресурсов и накладные расходы на запуск задач. В настоящее время существует несколько технологий (pilot job frameworks), реализующих данный подход, например HTCondor, DIANE, BigJob, Swift, DIRAC. В данной работе предлагается изучить и сравнить между собой несколько данных технологий путем их развертывания и проведения экспериментов на тестовой инфраструктуре. Особое внимание планируется уделить сравнению производительности различных решений, оценке их масштабируемости, выявлению узких мест и поиску способов их устранения.&lt;br /&gt;
&lt;br /&gt;
==== Использование простаивающих вычислительных ресурсов для распределенных вычислений на базе платформы Everest ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:oleg.sukhoroslov@gmail.com Олег Викторович Сухорослов]&lt;br /&gt;
&lt;br /&gt;
Платформа [http://everest.distcomp.org/ Everest], разрабатываемая в ИППИ РАН, позволяет публиковать в виде веб-сервисов вычислительные приложения и запускать через веб-интерфейс расчеты на произвольных комбинациях внешних ресурсов, подключенных пользователями к платформе. Интеграция ресурсов с платформой реализована на основе специально разработанного агента, который выполняется на стороне ресурса. В настоящее время агент поддерживает запуск задач на одиночной машине (в монопольном режиме) и кластере (с приоритетом обычного пользователя), не учитывая внешнюю нагрузку на ресурс. В данной работе предлагается реализовать поддержку использования ресурса только в моменты его простоя, что требует мониторинга текущей загрузки ресурса и динамического управления задачами. При этом планируется использовать опыт и наработки систем, ориентированных на использование простаивающих персональных компьютеров (BOINC, Condor).&lt;br /&gt;
&lt;br /&gt;
==== Реализация универсального вычислительного агента для систем распределенных вычислений ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:oleg.sukhoroslov@gmail.com Олег Викторович Сухорослов]&lt;br /&gt;
&lt;br /&gt;
Платформа [http://everest.distcomp.org/ Everest], разрабатываемая в ИППИ РАН, позволяет публиковать в виде веб-сервисов вычислительные приложения и запускать через веб-интерфейс расчеты на произвольных комбинациях внешних ресурсов, подключенных пользователями к платформе. Интеграция ресурсов с платформой реализована на основе специально разработанного агента, который выполняется на стороне ресурса. Агент написан на языке Python с использованием фреймворка Tornado и реализует асинхронную обработку, запуск и мониторинг поступающих задач, загрузку данных и обмен сообщениями с платформой. В данной работе предлагается реализовать принципиально новую версию агента на языке Go. Помимо имеющейся функциональности планируется реализовать прямое взаимодействие по сети между агентами, автоматическое обновление кода агента, а также обеспечить универсальность агента для его использования с другими системами распределенных вычислений.&lt;br /&gt;
&lt;br /&gt;
==== Исследование и реализация методов прямой передачи данных по сети между узлами за NAT и межсетевыми экранами ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:oleg.sukhoroslov@gmail.com Олег Викторович Сухорослов]&lt;br /&gt;
&lt;br /&gt;
При реализации распределенных вычислений в глобальной сети часто возникает задача передачи данных между двумя машинами или ресурсами, находящимися в различных географических точках. При этом зачастую между данными машинами в сети находятся  устройства, выполняющие трансляцию адресов (NAT) и межсетевые экраны, что затрудняет установление прямого соединения. Подход, использующий промежуточный сервер для обмена данными, обладает низкой эффективностью в случае передачи больших объемов данных или частых обменов. В данной работе предлагается изучить существующие методы прямой передачи данных между хостами в глобальной сети, реализовать некоторые из этих методов и экспериментально сравнить их эффективность.&lt;br /&gt;
&lt;br /&gt;
==== Исследование и экспериментальная оценка методов обеспечения отказоустойчивости MPI-приложений ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:oleg.sukhoroslov@gmail.com Олег Викторович Сухорослов]&lt;br /&gt;
&lt;br /&gt;
Одной из основных проблем, связанных с использованием в будущем мощных вычислительных систем уровня [https://en.wikipedia.org/wiki/Exascale_computing exascale], является обеспечение устойчивости параллельных программ к отказам. Поскольку данные системы могут включать миллионы процессоров, выполняющих до миллиарда потоков, то ожидается что в них с высокой частотой (до нескольких раз в час) будут возникать всевозможные сбои на аппаратном и программном уровнях, приводящие к падению процессов или потере данных. Традиционные методы, такие как checkpointing, становятся неэффективными в условиях, когда сохранение состояния требует времени сопоставимого с частотой отказов. В настоящее время активно ведется разработка новых методов, нацеленных на решение данной проблемы, в частности применительно к выполнению MPI-программ. В данной работе предлагается изучить данные методы, провести их экспериментальную оценку и, возможно, улучшить.&lt;/div&gt;</summary>
		<author><name>Sandello</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=%D0%A1%D0%BF%D0%B8%D1%81%D0%BE%D0%BA_%D0%BA%D1%83%D1%80%D1%81%D0%BE%D0%B2%D1%8B%D1%85_%D1%80%D0%B0%D0%B1%D0%BE%D1%82._%D0%A0%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B&amp;diff=24820</id>
		<title>Список курсовых работ. Распределенные системы</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=%D0%A1%D0%BF%D0%B8%D1%81%D0%BE%D0%BA_%D0%BA%D1%83%D1%80%D1%81%D0%BE%D0%B2%D1%8B%D1%85_%D1%80%D0%B0%D0%B1%D0%BE%D1%82._%D0%A0%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B&amp;diff=24820"/>
		<updated>2017-10-02T14:40:39Z</updated>

		<summary type="html">&lt;p&gt;Sandello: Sandello переименовал страницу Список курсовых работ. Распределенные системы в Темы для курсовых работ 2016 (РС)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#перенаправление [[Темы для курсовых работ 2016 (РС)]]&lt;/div&gt;</summary>
		<author><name>Sandello</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=%D0%A2%D0%B5%D0%BC%D1%8B_%D0%B4%D0%BB%D1%8F_%D0%BA%D1%83%D1%80%D1%81%D0%BE%D0%B2%D1%8B%D1%85_%D1%80%D0%B0%D0%B1%D0%BE%D1%82_2016_(%D0%A0%D0%A1)&amp;diff=24819</id>
		<title>Темы для курсовых работ 2016 (РС)</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=%D0%A2%D0%B5%D0%BC%D1%8B_%D0%B4%D0%BB%D1%8F_%D0%BA%D1%83%D1%80%D1%81%D0%BE%D0%B2%D1%8B%D1%85_%D1%80%D0%B0%D0%B1%D0%BE%D1%82_2016_(%D0%A0%D0%A1)&amp;diff=24819"/>
		<updated>2017-10-02T14:40:39Z</updated>

		<summary type="html">&lt;p&gt;Sandello: Sandello переименовал страницу Список курсовых работ. Распределенные системы в Темы для курсовых работ 2016 (РС)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Курсовые работы ==&lt;br /&gt;
&lt;br /&gt;
Ниже приведены описания возможных проектов курсовой работы (напоминаю, что на третьем курсе в качестве курсовой работы засчитывается и [http://wiki.cs.hse.ru/Проектная_работа проектная работа]).&lt;br /&gt;
&lt;br /&gt;
Если вас заинтересовала какая-либо из предложенных тем и вы хотите над ней поработать в рамках вашей курсовой работы, то ваша последовательность действий такая:&lt;br /&gt;
# напишите письмо руководителю темы, в копию письма добавьте Пузыревского Ивана (ipuzyrevskiy@hse.ru); укажите, над какой задачей вы хотите поработать; укажите релевантную информацию про вас (публичный github, опыт по теме, что вы сочтете нужным);&lt;br /&gt;
# далее, вам нужно с руководителем обсудить задачу и возможность работы над ней; обычно руководитель вам чуть более подробно вам расскажет, что от вас будет требоваться, вы обсудите, насколько реально вам выполнить предлагаемую работу;&lt;br /&gt;
# в конечном итоге, вы вместе с руководителем приходите или к положительному решению (вы работаете над оговоренной задачей), или к отрицательному (вам необходимо выбрать другую тему курсовой работы).&lt;br /&gt;
&lt;br /&gt;
=== ClickHouse ===&lt;br /&gt;
&lt;br /&gt;
[https://clickhouse.yandex/ ClickHouse] -- открытая колоночная СУБД, позволяющая выполнять аналитические запросы в интерактивном режиме по данным, обновляемым в реальном времени. ClickHouse разработан в Яндексе для задач Яндекс.Метрики -- второй по величине системы веб-аналитики в мире.&lt;br /&gt;
&lt;br /&gt;
==== Создание генератора тестовых данных, приближающих настоящие ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:milovidov@yandex-team.ru Алексей Николаевич Миловидов]&lt;br /&gt;
&lt;br /&gt;
Существующие [https://clickhouse.yandex/benchmark.html бенчмарки] системы основаны на внутренних данных Яндекс.Метрики, и поэтому не могут быть воспроизведены людьми снаружи, что затрудняет корректное сравнение производительности. В рамках предлагаемой курсовой работы предлагается придумать и реализовать генератор псевдослучайных тестовых данных так, чтобы:&lt;br /&gt;
&lt;br /&gt;
* приблизительно сохранить вероятностные распределения значений в столбцах;&lt;br /&gt;
* для некоторых случаев, сохранить совместные распределения;&lt;br /&gt;
* приблизительно сохранить коэффициент сжатия данных в столбцах;&lt;br /&gt;
* желательно сделать модель данных достаточно компактной (например, несколько мегабайт).&lt;br /&gt;
&lt;br /&gt;
==== Симуляция и анализ стратегий слияния данных ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:milovidov@yandex-team.ru Алексей Николаевич Миловидов]&lt;br /&gt;
&lt;br /&gt;
В системе для обеспечения высокой пропускной способности при вставке данных используются различные вариации техники [https://en.wikipedia.org/wiki/Log-structured_merge-tree log structured merge tree], что приводит к эффекту, известному как write amplification: когда реальных объем записываемых данных на диск кратно превосходит объем данных, вставленный в систему. Причина такого эффекта -- необходимость фоновых слияний данных для предотвращения деградации производительности чтения. В данной работе предлагается разработать симулятор фоновых слияний, а также проанализировать различные стратегии слияния с точки зрения различных метрик эффективности.&lt;br /&gt;
&lt;br /&gt;
==== Автоматизация тестирования производительности ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:milovidov@yandex-team.ru Алексей Николаевич Миловидов]&lt;br /&gt;
&lt;br /&gt;
В данной работе предлагается разработать и реализовать фреймворк для автоматического тестирования производительности различных компонент системы. Создаваемый фреймворк может быть использован для:&lt;br /&gt;
&lt;br /&gt;
* регрессионных тестов производительности (основное применение);&lt;br /&gt;
* сравнение версий компилятора и флагов сборки, сравнение библиотек, приёмка новых версий;&lt;br /&gt;
* тестирование железа, а также настроек ОС, получение рейтинга производительности с точки зрения ClickHouse;&lt;br /&gt;
* просмотр динамики изменения производительности с течением времени по мере разработки.&lt;br /&gt;
&lt;br /&gt;
=== Планировщик ресурсов кластера ===&lt;br /&gt;
&lt;br /&gt;
В системе [https://habrahabr.ru/company/yandex/blog/311104/ YT] одна из наиболее значимых компонент -- это планировщик вычислений. Именно он отвечает за распределение ресурсов кластера между пользователями с учетом их требований и желаемых гарантий (зачастую, противоречивых). От эффективности работы планировщика зависит общая эффективность работы кластера и удовлетворенность пользователей. Для проведения оффлайн-экспериментов над алгоритмами планировщика был разработан симулятор, использующий &amp;quot;трейс&amp;quot; событий, снятый с реального кластера (запуск вычислений, освобождение вычислительных ресурсов, потеря вычислений в результате сбоя, и др.). Ниже представлены возможные направления для последующих исследований и улучшений данной функциональности.&lt;br /&gt;
&lt;br /&gt;
==== Улучшение симулятора ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:ignat@yandex-team.ru Игнатий Игоревич Колесниченко]&lt;br /&gt;
&lt;br /&gt;
В текущей версии симулятора известен ряд недоработок, существенно влияющих на качество симуляции. Например, текущий симулятор не учитывает зависимость вычислений между собой (когда выход одного вычисления используется как вход для другого). За счет использования метаинформации (имя пользователя, время начала/окончания вычислений, именование входных/выходных данных) можно было бы восстановить данные зависимости, что позволит существенно улучшить качество симуляции и, соответственно, качество вычисляемых метрик для цепочек вычислений.&lt;br /&gt;
&lt;br /&gt;
==== Анализ различных стратегий вытеснения ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:ignat@yandex-team.ru Игнатий Игоревич Колесниченко]&lt;br /&gt;
&lt;br /&gt;
Один из механизмом для обеспечения честности распределения ресурсов -- это вытеснение (preemption) вычислений. Однако, вытеснение части MR-вычисления подразумевает потерю выполненной работы, так как результат вычисления никуда не сохраняется. В данной работе предлагается провести анализ различных стратегий вытеснения и их влияния на различные метрики качества.&lt;br /&gt;
&lt;br /&gt;
==== Учет истории потребления ресурсов ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:ignat@yandex-team.ru Игнатий Игоревич Колесниченко]&lt;br /&gt;
&lt;br /&gt;
Текущая стратегия планирования HDRF (hierarchical dominant resource fairness) никак не учитывает историю потребления ресурсов кластера, что, например, дает преимущство пользователям, постоянно запускающим какие-либо вычисления. В данной работе предлагается проанализировать разные способы учета истории потребления ресурсов, вывести метрики качества.&lt;br /&gt;
&lt;br /&gt;
=== Алгоритм консенсуса без явно выделенного мастера ===&lt;br /&gt;
&lt;br /&gt;
Современные системы и сервисы требуют отказоустойчивого поведения на всех уровнях. Как правило, такие системы крайне сложны для понимания, так как нельзя полагаться на различные допущения о временных интервалах посылки сообщений, уметь работать с отказами оборудования, а также сохранять доступность при потерях связности между частями системы. Асинхронная природа посылки сообщений также усложняет взаимодействие между компонентами. Для упрощения взаимодействия применяют достаточно сложные алгоритмы репликации для получения отказоустойчивого состояния, распределенного между узлами системы. Алгоритмы консистентного изменения распределенного состояния называют алгоритмами консенсуса.&lt;br /&gt;
 &lt;br /&gt;
Как правило, все существующие на сегодняшний день алгоритмы в той или иной степени используют выделенный мастер-узел для выполнения основной части работы по сохранению консистентности. Вам предлагается исследовать уникальный алгоритм консенсуса без мастера. Уникальность состоит в полном отказе от традиционных методов достижения консенсуса, позволяя добиться уникальных характеристик систем, работающих на основе такого алгоритма.&lt;br /&gt;
 &lt;br /&gt;
Так как алгоритм полностью новый, то любые исследования в этой области представляют несомненный интерес. Фактически -- передний край науки.&lt;br /&gt;
&lt;br /&gt;
==== Формальная спецификация с использованием TLA+ ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:gridem@yandex-team.ru Григорий Викторович Демченко]&lt;br /&gt;
&lt;br /&gt;
Многие аспекты распределенных алгоритмов и систем не являются интуитивно понятными (параллельность исполнения, переупорядочивание событий), что приводит к труднодиагностируемым ошибкам в реализациях. В рамках данной работы предлагается разработать формальную спецификацию алгоритма консенсуса с использованием языка [http://research.microsoft.com/en-us/um/people/lamport/tla/tla.html TLA+]. &lt;br /&gt;
&lt;br /&gt;
==== Реализация алгоритма и экспериментальная оценка ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:gridem@yandex-team.ru Григорий Викторович Демченко]&lt;br /&gt;
&lt;br /&gt;
В данной работе вам предлагается реализовать предлагаемый алгоритм, проверить его корректность и оценить производительность в различных интересных с точки зрения практики сценариях, например:&lt;br /&gt;
&lt;br /&gt;
* междатацентровая репликация с существенно различными временами &amp;gt;100мс между узлами;&lt;br /&gt;
* внутридатацентровая репликация с временами &amp;lt;1мс;&lt;br /&gt;
* поведение в плохих сетях (выпадание пакетов, неопределенные задержки с доставкой);&lt;br /&gt;
* использование протокола UDP вместо TCP для обмена сообщениями;&lt;br /&gt;
* batching запросов;&lt;br /&gt;
* стабильность и производительность при выпадении/добавлении узлов;&lt;br /&gt;
* замеры для различного числа узлов, оценка деградации производительности с ростом числа узлов;&lt;br /&gt;
* сравнение производительности с существующими алгоритмами консенсуса.&lt;br /&gt;
&lt;br /&gt;
=== Физическое хранение данных ===&lt;br /&gt;
&lt;br /&gt;
При чтении/записи данных с современных облаков / распределенных файловых систем обычно задействовано много программных слоев: типизированное кодирование, компрессия, erasure-кодирование. Данный блок тем посвящен экспериментальному анализу различных аспектов систем хранения данных.&lt;br /&gt;
&lt;br /&gt;
==== Разработка системы оценки алгоритмов сжатия ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:ignat@yandex-team.ru Игнатий Игоревич Колесниченко], [mailto:sandello@yandex-team.ru Иван Витальевич Пузыревский], [mailto:psushin@yandex-team.ru Павел Андреевич Сушин]&lt;br /&gt;
&lt;br /&gt;
Наиболее часто алгоритмы сжатия сравнивают по скорости сжатия/расжатия и коэффициенту сжатия. Однако, данные характеристики варьируются в зависимости от конкретных входных данных, железа, и ряда других факторов. В данной работе предлагается систематически подойти к вопросу и реализовать фреймворк для оценки алгоритмов сжатия, с помощью которого можно быстро получить исчерпывающий анализ производительности на конкретном железе/на конкретных данных.&lt;br /&gt;
&lt;br /&gt;
==== Сравнительный анализ различных алгоритмов erasure-кодирования ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:ignat@yandex-team.ru Игнатий Игоревич Колесниченко]&lt;br /&gt;
&lt;br /&gt;
Для экономии дискового места при хранении данных используются erasure-коды, позволяющие переживать отказ отдельных дисков/машин с небольшими накладными расходами (1.33x..1.5x; например, [https://ru.wikipedia.org/wiki/Код_Рида_—_Соломона коды Рида-Соломона]). По сравнению с обычной репликацией данных, erasure-коды более ресурсозатратны в процессе восстановления данных. За последние несколько лет появился ряд новых алгоритов erasure-кодирования, представляющих различные компромиссы в пространстве решений. В данной работе предлагается провести сравнительный и экспериментальный анализ данного класса алгоритмов.&lt;br /&gt;
&lt;br /&gt;
==== Экспериментальный анализ алгоритмов типизированного кодирования ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководители&#039;&#039;&#039;: [mailto:sandello@yandex-team.ru Иван Витальевич Пузыревский], [mailto:psushin@yandex-team.ru Павел Андреевич Сушин]&lt;br /&gt;
&lt;br /&gt;
В дополнение к общим алгоритмам сжатия, работающим на уровне байт, на практике используются также типизированные кодеки, позволяющие добиться более высокой степени сжатия данных. К примеру, использование [https://en.wikipedia.org/wiki/Run-length_encoding RLE], [https://en.wikipedia.org/wiki/Shannon–Fano–Elias_coding кодов Элиса-Фано] для кодирования чисел; использование сжатых словарей для кодирования строк. Иногда кодированое представление допускает выполнение операций (например, поиска) поверх сжатых данных, без промежуточного расжатия; или допускает быстрый случайный доступ. В данной работе предлагается провести сравнительный и экспериментальный анализ различных кодеков для различных типов данных.&lt;br /&gt;
&lt;br /&gt;
==== Анализ стратегий размещения реплик данных на кластере ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:ignat@yandex-team.ru Игнатий Игоревич Колесниченко], [mailto:psushin@yandex-team.ru Павел Андреевич Сушин]&lt;br /&gt;
&lt;br /&gt;
Распределенные системы хранения данных почти всегда разбивают хранимые данные на блоки, которые размещаются на кластере согласно какой-либо стратегии. Например, на практике используется случайная стратегия размещения, стратегия размещения с учетом стоек/ЦОДов, с группировкой/без. Основные количественные метрики различных стратегий -- это вероятность потери данных; среднее количество потерянных блоков; среднее количество частично недоступных групп блоков (файлов). В данной работе предлагается разработать симулятор, моделирующий отказы узлов кластера по историческим данным, собранным с реального кластера, и оценивающий метрики качества различных стратегий.&lt;br /&gt;
&lt;br /&gt;
==== Анализ кеширования данных в кластерах с различной нагрузкой ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:sandello@yandex-team.ru Иван Витальевич Пузыревский]&lt;br /&gt;
&lt;br /&gt;
Обычно на каждой машине в составе распределенной файловой системы присутствует локальный кеш данных. Данный кеш должен устойчиво работать при различных типах нагрузки на файловую систему. В частности, кеш должен быть устойчив к &amp;quot;вымыванию&amp;quot; -- вытеснению горячих данных данных при единоразовом чтении крупного объема данных (существенно превышающего объем доступной памяти). В рамках данной работы предлагается проанализировать эффективность различных стратегии кеширования по историческим данным, собранным с реального кластера.&lt;br /&gt;
&lt;br /&gt;
=== Остальные темы ===&lt;br /&gt;
&lt;br /&gt;
==== Формальная спецификация HDFS ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:sandello@yandex-team.ru Иван Витальевич Пузыревский]&lt;br /&gt;
&lt;br /&gt;
HDFS (Hadoop Distributed File System) -- распределенная отказоустойчивая файловая система. В данной работе предлагается разработать и проверить формальную спецификацию системы с помощью [http://research.microsoft.com/en-us/um/people/lamport/tla/tla.html TLA+].&lt;br /&gt;
&lt;br /&gt;
==== Автоматическое определение проблемных узлов кластера ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:psushin@yandex-team.ru Павел Андреевич Сушин]&lt;br /&gt;
&lt;br /&gt;
В больших кластерах существенно повышается вероятность деградации одного узла кластера: иногда вследствие неудачно распределившейся нагрузки, иногда вследствие аппаратных сбоев, иногда вследствие программных ошибок. Иногда деградация обусловлена не самим узлом, а проблемами сетевой связности. Обнаруживать проблемные узлы кластера важно для обеспечения превентивной защиты (проблемные узлы чаще выходят из строя) и для уменьшения времени отклика системы (например, не читать данные с таких узлов). В рамках данной работы предлагается разработать метод автоматического определения проблемных узлов кластера на основе доступных системных метрик производительности. Для решения задачи можно  использовать методы машинного обучения.&lt;br /&gt;
&lt;br /&gt;
==== Имитационное моделирование вычислительных ресурсов и распределенных вычислительных инфраструктур ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:oleg.sukhoroslov@gmail.com Олег Викторович Сухорослов]&lt;br /&gt;
&lt;br /&gt;
Имитационное моделирование активно используется в исследованиях распределенных систем, заменяя натурные эксперименты и позволяя воспроизводимым образом сравнивать между собой различные методы (например, алгоритмы планирования задач). В данной работе объектом моделирования являются распределенные вычислительные инфраструктуры, состоящие из нескольких автономных ресурсов различного типа (кластеров, гридов, облаков, персональных компьютеров). Для реалистичного моделирования таких инфраструктур требуется хорошо моделировать отдельные ресурсы, их планировщики, нагрузку и доступность, а также передачу данных по сети. Для данных целей предлагается использовать [http://simgrid.gforge.inria.fr/ SimGrid], фреймворк для создания симуляторов распределенных систем. Требуется улучшить имеющиеся или реализовать новые модели ресурсов (например, кластер с планировщиком и внутренним потоком заданий), а также интегрировать их в единую модель. Возможны отдельные подтемы и работа в команде.&lt;br /&gt;
&lt;br /&gt;
==== Симуляция и сравнительный анализ алгоритмов планирования задач в распределенных вычислительных системах ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:oleg.sukhoroslov@gmail.com Олег Викторович Сухорослов]&lt;br /&gt;
&lt;br /&gt;
Планирование выполнения задач в распределенных системах в постановках, представляющих практический интерес, является NP-полной задачей. За последнее десятилетие было предложено множество алгоритмов планирования, основанных на различного рода (мета)эвристиках и ориентированных на различные классы приложений (bag of tasks, parallel job, workflow) и систем. При этом недостаточно хорошо изучен вопрос об области применимости и сравнительной эффективности данных алгоритмов в различных ситуациях. В данной работе предлагается реализовать на базе существующего симулятора наиболее известные алгоритмы и сравнить их друг с другом путем проведения имитационных экспериментов для различных типов приложений и систем. Возможны отдельные подтемы и работа в команде.&lt;br /&gt;
&lt;br /&gt;
==== Исследование и экспериментальная оценка технологий распределенных вычислений на основе pilot jobs ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:oleg.sukhoroslov@gmail.com Олег Викторович Сухорослов]&lt;br /&gt;
&lt;br /&gt;
При реализации крупномасштабных вычислений на базе распределенных ресурсов с собственными планировщиками часто используется стратегия pilot jobs. Данная стратегия, заключающаяся в запуске на ресурсах заданий-агентов с последующим динамическим распределением по ним задач, позволяет уменьшить влияние задержек в очередях ресурсов и накладные расходы на запуск задач. В настоящее время существует несколько технологий (pilot job frameworks), реализующих данный подход, например HTCondor, DIANE, BigJob, Swift, DIRAC. В данной работе предлагается изучить и сравнить между собой несколько данных технологий путем их развертывания и проведения экспериментов на тестовой инфраструктуре. Особое внимание планируется уделить сравнению производительности различных решений, оценке их масштабируемости, выявлению узких мест и поиску способов их устранения.&lt;br /&gt;
&lt;br /&gt;
==== Использование простаивающих вычислительных ресурсов для распределенных вычислений на базе платформы Everest ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:oleg.sukhoroslov@gmail.com Олег Викторович Сухорослов]&lt;br /&gt;
&lt;br /&gt;
Платформа [http://everest.distcomp.org/ Everest], разрабатываемая в ИППИ РАН, позволяет публиковать в виде веб-сервисов вычислительные приложения и запускать через веб-интерфейс расчеты на произвольных комбинациях внешних ресурсов, подключенных пользователями к платформе. Интеграция ресурсов с платформой реализована на основе специально разработанного агента, который выполняется на стороне ресурса. В настоящее время агент поддерживает запуск задач на одиночной машине (в монопольном режиме) и кластере (с приоритетом обычного пользователя), не учитывая внешнюю нагрузку на ресурс. В данной работе предлагается реализовать поддержку использования ресурса только в моменты его простоя, что требует мониторинга текущей загрузки ресурса и динамического управления задачами. При этом планируется использовать опыт и наработки систем, ориентированных на использование простаивающих персональных компьютеров (BOINC, Condor).&lt;br /&gt;
&lt;br /&gt;
==== Реализация универсального вычислительного агента для систем распределенных вычислений ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:oleg.sukhoroslov@gmail.com Олег Викторович Сухорослов]&lt;br /&gt;
&lt;br /&gt;
Платформа [http://everest.distcomp.org/ Everest], разрабатываемая в ИППИ РАН, позволяет публиковать в виде веб-сервисов вычислительные приложения и запускать через веб-интерфейс расчеты на произвольных комбинациях внешних ресурсов, подключенных пользователями к платформе. Интеграция ресурсов с платформой реализована на основе специально разработанного агента, который выполняется на стороне ресурса. Агент написан на языке Python с использованием фреймворка Tornado и реализует асинхронную обработку, запуск и мониторинг поступающих задач, загрузку данных и обмен сообщениями с платформой. В данной работе предлагается реализовать принципиально новую версию агента на языке Go. Помимо имеющейся функциональности планируется реализовать прямое взаимодействие по сети между агентами, автоматическое обновление кода агента, а также обеспечить универсальность агента для его использования с другими системами распределенных вычислений.&lt;br /&gt;
&lt;br /&gt;
==== Исследование и реализация методов прямой передачи данных по сети между узлами за NAT и межсетевыми экранами ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:oleg.sukhoroslov@gmail.com Олег Викторович Сухорослов]&lt;br /&gt;
&lt;br /&gt;
При реализации распределенных вычислений в глобальной сети часто возникает задача передачи данных между двумя машинами или ресурсами, находящимися в различных географических точках. При этом зачастую между данными машинами в сети находятся  устройства, выполняющие трансляцию адресов (NAT) и межсетевые экраны, что затрудняет установление прямого соединения. Подход, использующий промежуточный сервер для обмена данными, обладает низкой эффективностью в случае передачи больших объемов данных или частых обменов. В данной работе предлагается изучить существующие методы прямой передачи данных между хостами в глобальной сети, реализовать некоторые из этих методов и экспериментально сравнить их эффективность.&lt;br /&gt;
&lt;br /&gt;
==== Исследование и экспериментальная оценка методов обеспечения отказоустойчивости MPI-приложений ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Руководитель&#039;&#039;&#039;: [mailto:oleg.sukhoroslov@gmail.com Олег Викторович Сухорослов]&lt;br /&gt;
&lt;br /&gt;
Одной из основных проблем, связанных с использованием в будущем мощных вычислительных систем уровня [https://en.wikipedia.org/wiki/Exascale_computing exascale], является обеспечение устойчивости параллельных программ к отказам. Поскольку данные системы могут включать миллионы процессоров, выполняющих до миллиарда потоков, то ожидается что в них с высокой частотой (до нескольких раз в час) будут возникать всевозможные сбои на аппаратном и программном уровнях, приводящие к падению процессов или потере данных. Традиционные методы, такие как checkpointing, становятся неэффективными в условиях, когда сохранение состояния требует времени сопоставимого с частотой отказов. В настоящее время активно ведется разработка новых методов, нацеленных на решение данной проблемы, в частности применительно к выполнению MPI-программ. В данной работе предлагается изучить данные методы, провести их экспериментальную оценку и, возможно, улучшить.&lt;/div&gt;</summary>
		<author><name>Sandello</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=%D0%9D%D0%98%D0%A1_%D0%A0%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_(4_%D0%BA%D1%83%D1%80%D1%81,_2017)&amp;diff=23962</id>
		<title>НИС Распределенные системы (4 курс, 2017)</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=%D0%9D%D0%98%D0%A1_%D0%A0%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_(4_%D0%BA%D1%83%D1%80%D1%81,_2017)&amp;diff=23962"/>
		<updated>2017-09-07T08:22:22Z</updated>

		<summary type="html">&lt;p&gt;Sandello: /* Информация про семинар */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Информация про семинар ==&lt;br /&gt;
В рамках научно-исследовательского семинара по распределенным системам изучаются основные понятия, принципы и результаты предметной области. &lt;br /&gt;
&lt;br /&gt;
Контакты: [mailto:sandello@gmail.com Пузыревский Иван Витальевич]&lt;br /&gt;
&lt;br /&gt;
=== Оценка ===&lt;br /&gt;
&lt;br /&gt;
[TBD]&lt;br /&gt;
&lt;br /&gt;
Текущая таблица с оценками, ведомостью и заданиями: https://docs.google.com/spreadsheets/d/1YnHTdQ3RvAfMdMk2PMUYac1jM71-ApJBoWvB4w_Qkrc/edit?usp=sharing&lt;br /&gt;
&lt;br /&gt;
== Занятия ==&lt;br /&gt;
&lt;br /&gt;
=== 1 модуль ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;7 сентября&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Вводное занятие.&lt;/div&gt;</summary>
		<author><name>Sandello</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=%D0%9D%D0%98%D0%A1_%D0%A0%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_(4_%D0%BA%D1%83%D1%80%D1%81,_2017)&amp;diff=23796</id>
		<title>НИС Распределенные системы (4 курс, 2017)</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=%D0%9D%D0%98%D0%A1_%D0%A0%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_(4_%D0%BA%D1%83%D1%80%D1%81,_2017)&amp;diff=23796"/>
		<updated>2017-09-04T11:39:01Z</updated>

		<summary type="html">&lt;p&gt;Sandello: Новая страница: «== Информация про семинар == В рамках научно-исследовательского семинара по распределенн…»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Информация про семинар ==&lt;br /&gt;
В рамках научно-исследовательского семинара по распределенным системам изучаются основные понятия, принципы и результаты предметной области. &lt;br /&gt;
&lt;br /&gt;
Контакты: [mailto:sandello@gmail.com Пузыревский Иван Витальевич]&lt;br /&gt;
&lt;br /&gt;
=== Оценка ===&lt;br /&gt;
&lt;br /&gt;
[TBD]&lt;br /&gt;
&lt;br /&gt;
Текущая таблица с оценками и ведомостью: ...&lt;br /&gt;
&lt;br /&gt;
== Занятия ==&lt;br /&gt;
&lt;br /&gt;
=== 1 модуль ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;7 сентября&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Вводное занятие.&lt;/div&gt;</summary>
		<author><name>Sandello</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=%D0%9D%D0%98%D0%A1_%D0%A0%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_(3_%D0%BA%D1%83%D1%80%D1%81,_2017)&amp;diff=23795</id>
		<title>НИС Распределенные системы (3 курс, 2017)</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=%D0%9D%D0%98%D0%A1_%D0%A0%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_(3_%D0%BA%D1%83%D1%80%D1%81,_2017)&amp;diff=23795"/>
		<updated>2017-09-04T11:38:44Z</updated>

		<summary type="html">&lt;p&gt;Sandello: Новая страница: «== Информация про семинар == В рамках научно-исследовательского семинара по распределенн…»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Информация про семинар ==&lt;br /&gt;
В рамках научно-исследовательского семинара по распределенным системам изучаются основные понятия, принципы и результаты предметной области. &lt;br /&gt;
&lt;br /&gt;
Контакты: [mailto:sandello@gmail.com Пузыревский Иван Витальевич]&lt;br /&gt;
&lt;br /&gt;
=== Оценка ===&lt;br /&gt;
&lt;br /&gt;
[TBD]&lt;br /&gt;
&lt;br /&gt;
Текущая таблица с оценками и ведомостью: https://docs.google.com/spreadsheets/d/16Z74fhT_TnNscsVviU9KU2mVlaMrmX3weQ6ku5jGGbk/edit?usp=sharing&lt;br /&gt;
&lt;br /&gt;
== Занятия ==&lt;br /&gt;
&lt;br /&gt;
=== 1 модуль ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4 сентября&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Вводное занятие. Модель распределенных вычислений.&lt;/div&gt;</summary>
		<author><name>Sandello</name></author>
	</entry>
</feed>