<?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=Objatie+groba</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=Objatie+groba"/>
	<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/Objatie_groba"/>
	<updated>2026-09-20T23:03:51Z</updated>
	<subtitle>Вклад</subtitle>
	<generator>MediaWiki 1.43.9</generator>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=CAOS-2023/24&amp;diff=83433</id>
		<title>CAOS-2023/24</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=CAOS-2023/24&amp;diff=83433"/>
		<updated>2024-02-02T15:15:56Z</updated>

		<summary type="html">&lt;p&gt;Objatie groba: /* Формула рассчета оценки Gitlab */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Вход в тестирующую систему: https://caos2023.myltsev.ru&lt;br /&gt;
&lt;br /&gt;
Материалы лекций: https://caos.myltsev.ru/lectures/&lt;br /&gt;
&lt;br /&gt;
[https://caos2023.myltsev.ru/style.html Стиль оформления программ на Си]&lt;br /&gt;
&lt;br /&gt;
[https://t.me/+-RJj6i7NMaE1MWIy Чатик курса] &lt;br /&gt;
&lt;br /&gt;
[https://t.me/+duw-cU1uT4FjNzYy Канал с объявлениями]&lt;br /&gt;
&lt;br /&gt;
[https://forms.gle/AMBwLvi9mNPqvUjU7 Форма для фидбека]&lt;br /&gt;
&lt;br /&gt;
[https://exuberant-arthropod-be8.notion.site/21-22-0f236f7d03c74dfbbd945f93651758a2 Конспект лекций 2021 года от студентов]&lt;br /&gt;
&lt;br /&gt;
== Чатики и преподаватели по группам ==&lt;br /&gt;
Лектор — Александр Мыльцев [https://t.me/myltsev @myltsev]&lt;br /&gt;
&lt;br /&gt;
Старший семинарист - Игорь Минеев [https://t.me/objatie_groba @objatie_groba]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Группа !! Чатик !! Преподаватель !! Ассистенты&lt;br /&gt;
|-&lt;br /&gt;
| 221 || https://t.me/+CjBn9f0EY3ZiMmEy || [https://t.me/grphil Филипп Грибов] || [https://t.me/ddubrovin Дмитрий Дубровин], [https://t.me/gmusya Герман Перов]&lt;br /&gt;
|-&lt;br /&gt;
| 222 || https://t.me/+uCLKSieZ3z8zNjk6 || [https://t.me/objatie_groba Игорь Минеев] || [https://t.me/l0i4b Арсений Болотников], [https://t.me/dikirillov Даниил Кириллов]&lt;br /&gt;
|-&lt;br /&gt;
| 223 || https://t.me/+-kqneBWoAC1hZDEy || [https://t.me/youagain Сафронов Евгений]|| [https://t.me/Mathew_K Матвей Кривда], [https://t.me/sidorenko_ivan Иван Сидоренко]&lt;br /&gt;
|-&lt;br /&gt;
| 224 || https://t.me/+JGp5STNu3WYzOTRi || TODO || TODO&lt;br /&gt;
|-&lt;br /&gt;
| 225 || https://t.me/+98tf6UWUIGM1MmYy || TODO || TODO&lt;br /&gt;
|-&lt;br /&gt;
| 226 || https://t.me/cool_caos_226 || [https://t.me/iiixphillxiii Миша Филитов] || [https://t.me/Holpow Фёдор], [https://t.me/igreetyou Денис]&lt;br /&gt;
|-&lt;br /&gt;
| 227 || TODO || TODO || TODO&lt;br /&gt;
|-&lt;br /&gt;
| 228 || TODO || TODO || TODO&lt;br /&gt;
|-&lt;br /&gt;
| 229 || TODO || TODO || TODO&lt;br /&gt;
|-&lt;br /&gt;
| 2210 || https://t.me/+Is6t2SMMTptmMWUy || [https://t.me/atgshkasan Шитов Александр] || [https://t.me/JustUserOff Тигран], [https://t.me/idt005 Игорь]&lt;br /&gt;
|-&lt;br /&gt;
| СПБ ПМИ || https://t.me/+AC9G7J5_AS8zMjJi || [https://t.me/evlinsky Евгений Линский] || [https://t.me/mkornaukhov Михаил Корнаухов] [https://t.me/fizmat_sila Иван Пешков] [https://t.me/rusterrxd Александр Виноградов] [https://t.me/fonarmeister Илья Саранцев]&lt;br /&gt;
|-&lt;br /&gt;
| СПБ ПАДИИ || https://t.me/+BE67Oaii9G5hZGJi || [https://t.me/evlinsky Евгений Линский] || [https://t.me/mkornaukhov Михаил Корнаухов] [https://t.me/fizmat_sila Иван Пешков] [https://t.me/rusterrxd Александр Виноградов] [https://t.me/fonarmeister Илья Саранцев]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Настройка рабочего окружения =&lt;br /&gt;
===kks===&lt;br /&gt;
https://github.com/darkkeks/kks&lt;br /&gt;
&lt;br /&gt;
kks это консольная утилитка для курса, выполняющая много вещей, среди которых можно выделить несколько основных:&lt;br /&gt;
# Скачивание задач/сэмплов/контрольных с помощью одной команды. То же самое со сдачей задач: можно сдать и получить сразу результат. &lt;br /&gt;
# Генерация тестов с помощью скриптов и их тестирование.&lt;br /&gt;
# Просмотр рейтинга (как общего, так и по группам) в удобном формате&lt;br /&gt;
&lt;br /&gt;
Пример использования:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;kks sync  # скачивание задач&lt;br /&gt;
# тут вы написали свой код&lt;br /&gt;
kks test --sample  # тестирование&lt;br /&gt;
kks submit&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Больше примеров можно посмотреть в репозитории&lt;br /&gt;
===Библиотека ввода-вывода===&lt;br /&gt;
Библиотека ввода-вывода для ассемблера x86: [https://caos2023.myltsev.ru/simpleio_i686.S simpleio_i686.S]&lt;br /&gt;
&lt;br /&gt;
Все библиотечные функции не меняют значения регистров кроме указанных&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
call writei32   // напечатать на экране значение eax&lt;br /&gt;
                // как знаковое десятичное число&lt;br /&gt;
call readi32    // ввести с клавиатуры число и сохранить в eax&lt;br /&gt;
call readi64    // ввести с клавиатуры число и сохранить в edx:eax&lt;br /&gt;
call writei64   // вывести edx:eax&lt;br /&gt;
call finish     // завершить исполнение программы&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Внутри виртуальной машины её можно скачать командой &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;wget https://caos2023.myltsev.ru/simpleio_i686.S&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если получаете сообщение, что Wget не установлен на вашей системе (на Ubuntu Desktop по умолчанию нет), то установите его следующей командой: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;sudo apt install wget&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Виртуальная машина (VirtualBox)===&lt;br /&gt;
[https://caos2023.myltsev.ru/hse-caos-xubuntu.ova Образ виртуальной машины]&lt;br /&gt;
&lt;br /&gt;
Рекомендуется скачать образ и установить его в эмулятор [https://www.virtualbox.org/ VirtualBox]. Логин-пароль xubuntu/xubuntu, можно делать sudo.&lt;br /&gt;
&lt;br /&gt;
===Docker для пользователей MacOS (intel based)===&lt;br /&gt;
&#039;&#039;&#039;Проверялось на MacOS BigSur и Monterey&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Загрузить сам докер можно отсюда: [https://docs.docker.com/get-docker/ тык]&lt;br /&gt;
&lt;br /&gt;
Команда для запуска: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;docker run -it --rm -v `pwd`:/caos -w /caos ubuntu&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В терминале заходите в свою папку с акосом и запускаете эту команду. После нее вы начинаете работать с контейнером Ubuntu в папке /caos, где будет все содержимое вашей папки в основной ОС. &lt;br /&gt;
Изменять содержимое внутри /caos можно и изнутри контейнера, и снаружи, изменения будут видны и там и там.&lt;br /&gt;
&lt;br /&gt;
Внутри контейнера стоит установить gcc-multilib, без неё не заведётся: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;apt update &amp;amp;&amp;amp; apt install -y gcc-multilib&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь вы можете писать код внутри своей любимой IDE (запущенной напрямую в вашей ОС, например VSCode), а компилить и запускать в докере через терминал.&lt;br /&gt;
&lt;br /&gt;
===Docker для пользователей MacOS на Apple Silicon===&lt;br /&gt;
Добавьте в .bashrc или .zshrc:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;export DOCKER_DEFAULT_PLATFORM=linux/amd64&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После этого перезапустите Docker.&lt;br /&gt;
&lt;br /&gt;
Вариант2: &lt;br /&gt;
* Скачиваем docker.&lt;br /&gt;
* Переходим в папку с задачами в терминале.&lt;br /&gt;
* Выполняем &amp;lt;code&amp;gt;docker run --platform linux/amd64 -it --rm -v `pwd`:/caos -w /caos ubuntu&amp;lt;/code&amp;gt;&lt;br /&gt;
* Делаем &amp;lt;code&amp;gt;apt update&amp;lt;/code&amp;gt;&lt;br /&gt;
* Делаем &amp;lt;code&amp;gt; apt -y install build-essential gcc-multilib &amp;lt;/code&amp;gt;&lt;br /&gt;
* Собираем задачки командой &amp;lt;code&amp;gt;gcc -m32 -g задача.S simpleio_i686.S&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===CLion===&lt;br /&gt;
Для начала скачайте CLion с официального сайта и устанавите его.&lt;br /&gt;
====Если у вас не linux: вар. 1 - docker====&lt;br /&gt;
Скачайте и установите docker desktop. Добейтесь того, чтобы у вас заработал docker hello world (&amp;lt;code&amp;gt;docker run --rm hello-world&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Если у вас MacOs на арме&amp;lt;/b&amp;gt; сделайте то, что написано выше.&lt;br /&gt;
&lt;br /&gt;
После этого нам потребуется специальный образ с необходимыми для курса библиотеками и программами. &lt;br /&gt;
Создайте файл с именем Dockerfile и следующим содержанием:&lt;br /&gt;
&amp;lt;pre&amp;gt;FROM ubuntu:latest&lt;br /&gt;
&lt;br /&gt;
RUN apt update &amp;amp;&amp;amp; apt install -y gcc-multilib gdb make cmake g++&lt;br /&gt;
WORKDIR /caos&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В директории с этим запустите эту команду чтобы собрать образ: &amp;lt;code&amp;gt;docker build -t caos .&amp;lt;/code&amp;gt; и дождитесь пока она выполнится.&lt;br /&gt;
&lt;br /&gt;
После этого откройте окно настроек, перейдите в пункт Build, Execution, Deployment -&amp;gt; Toolchains и добавьте новый Toolchain с типом Docker.&lt;br /&gt;
В поле Image укажите &amp;lt;code&amp;gt;caos:latest&amp;lt;/code&amp;gt;, а остальные поля должны определиться автоматически. Поместите этот Toolchain первым в списке сделав его default&#039;ным.&lt;br /&gt;
&lt;br /&gt;
====Если у вас не linux: вар. 2 - wsl (Windows only)====&lt;br /&gt;
&lt;br /&gt;
Установите wsl 2, выберите дистрибутив Ubuntu.&lt;br /&gt;
Внутри wsl 2 поставьте необходимые пакеты (&amp;lt;code&amp;gt;sudo apt install gcc-multilib make cmake g++ gdb&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
После этого откройте окно настроек, перейдите в пункт Build, Execution, Deployment -&amp;gt; Toolchains и добавьте новый Toolchain с типом WSL.&lt;br /&gt;
Все поля должны определиться автоматически. Поместите этот Toolchain первым в списке сделав его default&#039;ным.&lt;br /&gt;
&lt;br /&gt;
====Далее====&lt;br /&gt;
Создайте проект (можете выбрать C Executable, но это не особо принципиально)&lt;br /&gt;
Скачайте simpleio_i686.S и поместите в корень проекта.&lt;br /&gt;
&lt;br /&gt;
В &amp;lt;code&amp;gt;CMakeLists.txt&amp;lt;/code&amp;gt; удалите всё и вставьте это:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake_minimum_required(VERSION 3.10)&lt;br /&gt;
project(caos ASM)&lt;br /&gt;
&lt;br /&gt;
add_compile_options(-m32)&lt;br /&gt;
add_link_options(-m32)&lt;br /&gt;
&lt;br /&gt;
file(GLOB_RECURSE sources_list LIST_DIRECTORIES true ./*)&lt;br /&gt;
foreach(file ${sources_list})&lt;br /&gt;
    IF(${file} MATCHES &amp;quot;.S$&amp;quot; AND NOT ${file} MATCHES &amp;quot;simpleio_i686.S&amp;quot;)&lt;br /&gt;
        get_filename_component(X ${file} NAME)&lt;br /&gt;
        add_executable(${X} ${file} simpleio_i686.S)&lt;br /&gt;
    endif()&lt;br /&gt;
endforeach()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сделайте Reload Cmake project (Внизу выберите вкладку Cmake и нажмите слева на кнопку обновления с двумя стрелочками).&lt;br /&gt;
&lt;br /&gt;
Этот конфиг написан таким образом, чтобы эффективно работать совместно с kks. На каждый .S файл (кроме библиотеке simpleio_i686.S) он создаст цель для сборки. &lt;br /&gt;
После того как у вас в проекте появляется новый файл (например после &amp;lt;code&amp;gt;kks sync&amp;lt;/code&amp;gt;) нужно делать Reload Cmake project.&lt;br /&gt;
Выберите справа сверху интересующий вас файл и запускайте. &lt;br /&gt;
&lt;br /&gt;
====Подсветка синтаксиса====&lt;br /&gt;
Если она работает неправильно, откройте файл &amp;lt;code&amp;gt;simpleio_i686.S&amp;lt;/code&amp;gt;, нажмите на его вкладку в списке открытых файлов сверху правой кнопкой мыши и выберите &amp;quot;Associate file type&amp;quot;. В списке выберите Assembly Language.&lt;br /&gt;
&lt;br /&gt;
====Дебагер====&lt;br /&gt;
Дебагер работает из-коробки.&lt;br /&gt;
&lt;br /&gt;
Чтобы узнать значения регистра напишите в поле снизу строку $eax и нажмите на кнопку &amp;quot;+&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Yabloko ===&lt;br /&gt;
Для того чтобы собрать Yabloko вам потребуется &lt;br /&gt;
* Компилятор, который умеет собирать elf-файлы под архитектуру x86. В мире линукса для такого традиционно собирают ещё одну копию &amp;lt;code&amp;gt;gcc&amp;lt;/code&amp;gt; (и называют &amp;lt;code&amp;gt;x86_64-elf-gcc&amp;lt;/code&amp;gt;, чтобы не путаться), однако &amp;lt;code&amp;gt;clang&amp;lt;/code&amp;gt;, в отличие от &amp;lt;code&amp;gt;gcc&amp;lt;/code&amp;gt;, в стандартной поставке уже имеет кросс-компилятор и кросс-линкер, так что можно (пока в теории) использовать его.&lt;br /&gt;
* [https://www.qemu.org/download/ QEMU]&lt;br /&gt;
&lt;br /&gt;
Всё это вы можете получить локально, не зависимо от того, на какой вы ОС.&lt;br /&gt;
Если вы по какой-то причине решили использовать учебный (или любой другой) сервер, то не забывайте добавлять к команде ssh опцию -X, которая пробрасывает X-сервер, а также по настроению опцию -C, которая сжимает передаваемые данные. Если у вас не линукс, то в таком случае вам потребуется ещё и скачать и установить X-сервер. Для [https://www.xquartz.org/ MacOs]. Для [https://sourceforge.net/projects/xming/ windows]. Если вы пользуетесь Putty, то поставьте галочку в Connection -&amp;gt; SSH -&amp;gt; X11 -&amp;gt; Enable X11 forwarding.&lt;br /&gt;
&lt;br /&gt;
= Как устроен курс =&lt;br /&gt;
== Контрольные мероприятия ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Когда !! Что&lt;br /&gt;
|-&lt;br /&gt;
| В конце 1-го модуля || контрольная в формате экзамена&lt;br /&gt;
|-&lt;br /&gt;
| В конце 2-го модуля || экзамен АК&lt;br /&gt;
|-&lt;br /&gt;
| В конце 4-го модуля || экзамен ОС&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Формула оценки ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;O&amp;lt;sub&amp;gt;АК&amp;lt;/sub&amp;gt; = 0.5 * H&amp;lt;sub&amp;gt;ejudge&amp;lt;/sub&amp;gt; + 0.05 * H&amp;lt;sub&amp;gt;семинары&amp;lt;/sub&amp;gt; + 0.15 * H&amp;lt;sub&amp;gt;контрольная&amp;lt;/sub&amp;gt; + 0.3 * Э&#039;&#039;&#039;&lt;br /&gt;
Все оценки кроме итоговой дробные. Итоговая оценка округляется арифметически.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;H&amp;lt;sub&amp;gt;ejudge&amp;lt;/sub&amp;gt;&#039;&#039;&#039; - оценка за сданные задания в тестирующей системе Ejudge, выставляется согласно описанию ниже. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;H&amp;lt;sub&amp;gt;семинары&amp;lt;/sub&amp;gt;&#039;&#039;&#039; - оценка за семинары, выставляется согласно правилам озвученным вашим семинаристом.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;H&amp;lt;sub&amp;gt;контрольная&amp;lt;/sub&amp;gt;&#039;&#039;&#039; - оценка за контрольную работу в модуле 1.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Автомат&amp;quot;&#039;&#039;&#039; выдаётся, если оценки за ДЗ, контрольные и семинары не ниже некоторых пороговых значений, которые будут объявлены дополнительно.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;O&amp;lt;sub&amp;gt;ОС&amp;lt;/sub&amp;gt; = 0.65 * H&amp;lt;sub&amp;gt;gitlab&amp;lt;/sub&amp;gt; + 0.05 * H&amp;lt;sub&amp;gt;семинары&amp;lt;/sub&amp;gt; + 0.3 * Э&#039;&#039;&#039;&lt;br /&gt;
Все оценки кроме итоговой дробные. Итоговая оценка округляется арифметически.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;H&amp;lt;sub&amp;gt;gitlab&amp;lt;/sub&amp;gt;&#039;&#039;&#039; - оценка за сданные задания в тестирующей системе gitlab, выставляется согласно описанию ниже. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;H&amp;lt;sub&amp;gt;семинары&amp;lt;/sub&amp;gt;&#039;&#039;&#039; - оценка за семинары, выставляется согласно правилам озвученным вашим семинаристом.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Автомат&amp;quot;&#039;&#039;&#039; выдаётся, если оценки за ДЗ и семинары не ниже некоторых пороговых значений, которые будут объявлены дополнительно.&lt;br /&gt;
&lt;br /&gt;
=== Формула рассчета оценки Ejudge ===&lt;br /&gt;
&lt;br /&gt;
Оценки будут ставиться исходя из процентного соотношения к полученным баллам, где&lt;br /&gt;
&lt;br /&gt;
1) Учитываются только бонусные и домашние контесты.&lt;br /&gt;
&lt;br /&gt;
2) За 100% считается сумма возмных максимальных баллов по всем домашним контестам&lt;br /&gt;
&lt;br /&gt;
3) По следующей шкале (оценка, процент). Оценки дробные, между соседними ячейками линейно:&lt;br /&gt;
&lt;br /&gt;
1 20&lt;br /&gt;
&lt;br /&gt;
2 30&lt;br /&gt;
&lt;br /&gt;
3 40&lt;br /&gt;
&lt;br /&gt;
4 50&lt;br /&gt;
&lt;br /&gt;
5 60&lt;br /&gt;
&lt;br /&gt;
6 70&lt;br /&gt;
&lt;br /&gt;
8 90&lt;br /&gt;
&lt;br /&gt;
9 95&lt;br /&gt;
&lt;br /&gt;
10 99&lt;br /&gt;
&lt;br /&gt;
=== Формула рассчета оценки Gitlab ===&lt;br /&gt;
&lt;br /&gt;
На курсе будет представлено 5 домашних заданий и одно бонусное (или бонусы в составе ДЗ).&lt;br /&gt;
&lt;br /&gt;
Оценка за ДЗ выставляется как среднее арифметическое из оценок, где бонусная не попадает в знаменатель&lt;br /&gt;
&lt;br /&gt;
== Прокторинг ==&lt;br /&gt;
&lt;br /&gt;
На контрольной работе и экзамене применяется селф-прокторинг (даже если вы находитесь в аудитории): необходимо сделать видеозапись, на которой видны ваш экран и ваше лицо во время решения задач. Микрофон тоже должен быть включён. В начале записи, пожалуйста, представьтесь. Запись необходимо будет выложить в любое облачное хранилище и сдать в ejudge ссылку на неё в течении нескольких часов после. Запись нужно хранить до выставления оценки за курс. Размер файла записи не должен сильно превышать 250 МБ. Помните, запись это ваше доказательство честности написанной работы. Инструкция по настройке ОБС появится позднее на вики. Рекомендуется качество не выше 720р и не ниже 360р&lt;br /&gt;
&lt;br /&gt;
На контрольной работе можно пользоваться любыми материалами, веб-сайтами и т. д., за исключением интерактивного общения с кем-либо (гуглить можно, а вот советоваться нельзя). Телеграм-канал курса, а также официальные чаты курса также явно разрешены. В канале могут появляться важные объявления, за ним рекомендуется следить.&lt;br /&gt;
&lt;br /&gt;
= Записи лекций =&lt;br /&gt;
&lt;br /&gt;
https://disk.yandex.ru/d/zl7DgU7FmuJKLg/%D0%90%D1%80%D1%85%D0%B8%D1%82%D0%B5%D0%BA%D1%82%D1%83%D1%80%D0%B0%20%D0%BA%D0%BE%D0%BC%D0%BF%D1%8C%D1%8E%D1%82%D0%B5%D1%80%D0%B0&lt;/div&gt;</summary>
		<author><name>Objatie groba</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=CAOS-2023/24&amp;diff=83206</id>
		<title>CAOS-2023/24</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=CAOS-2023/24&amp;diff=83206"/>
		<updated>2024-01-25T14:19:11Z</updated>

		<summary type="html">&lt;p&gt;Objatie groba: /* Формула оценки */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Вход в тестирующую систему: https://caos2023.myltsev.ru&lt;br /&gt;
&lt;br /&gt;
Материалы лекций: https://caos.myltsev.ru/lectures/&lt;br /&gt;
&lt;br /&gt;
[https://caos2023.myltsev.ru/style.html Стиль оформления программ на Си]&lt;br /&gt;
&lt;br /&gt;
[https://t.me/+-RJj6i7NMaE1MWIy Чатик курса] &lt;br /&gt;
&lt;br /&gt;
[https://t.me/+duw-cU1uT4FjNzYy Канал с объявлениями]&lt;br /&gt;
&lt;br /&gt;
[https://forms.gle/AMBwLvi9mNPqvUjU7 Форма для фидбека]&lt;br /&gt;
&lt;br /&gt;
[https://exuberant-arthropod-be8.notion.site/21-22-0f236f7d03c74dfbbd945f93651758a2 Конспект лекций 2021 года от студентов]&lt;br /&gt;
&lt;br /&gt;
== Чатики и преподаватели по группам ==&lt;br /&gt;
Лектор — Александр Мыльцев [https://t.me/myltsev @myltsev]&lt;br /&gt;
&lt;br /&gt;
Старший семинарист - Игорь Минеев [https://t.me/objatie_groba @objatie_groba]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Группа !! Чатик !! Преподаватель !! Ассистенты&lt;br /&gt;
|-&lt;br /&gt;
| 221 || https://t.me/+CjBn9f0EY3ZiMmEy || [https://t.me/grphil Филипп Грибов] || [https://t.me/ddubrovin Дмитрий Дубровин], [https://t.me/gmusya Герман Перов]&lt;br /&gt;
|-&lt;br /&gt;
| 222 || https://t.me/+uCLKSieZ3z8zNjk6 || [https://t.me/objatie_groba Игорь Минеев] || [https://t.me/l0i4b Арсений Болотников], [https://t.me/dikirillov Даниил Кириллов]&lt;br /&gt;
|-&lt;br /&gt;
| 223 || https://t.me/+-kqneBWoAC1hZDEy || [https://t.me/youagain Сафронов Евгений]|| [https://t.me/Mathew_K Матвей Кривда], [https://t.me/sidorenko_ivan Иван Сидоренко]&lt;br /&gt;
|-&lt;br /&gt;
| 224 || https://t.me/+JGp5STNu3WYzOTRi || TODO || TODO&lt;br /&gt;
|-&lt;br /&gt;
| 225 || https://t.me/+98tf6UWUIGM1MmYy || TODO || TODO&lt;br /&gt;
|-&lt;br /&gt;
| 226 || https://t.me/cool_caos_226 || [https://t.me/iiixphillxiii Миша Филитов] || [https://t.me/Holpow Фёдор], [https://t.me/igreetyou Денис]&lt;br /&gt;
|-&lt;br /&gt;
| 227 || TODO || TODO || TODO&lt;br /&gt;
|-&lt;br /&gt;
| 228 || TODO || TODO || TODO&lt;br /&gt;
|-&lt;br /&gt;
| 229 || TODO || TODO || TODO&lt;br /&gt;
|-&lt;br /&gt;
| 2210 || https://t.me/+Is6t2SMMTptmMWUy || [https://t.me/atgshkasan Шитов Александр] || [https://t.me/JustUserOff Тигран], [https://t.me/idt005 Игорь]&lt;br /&gt;
|-&lt;br /&gt;
| СПБ ПМИ || https://t.me/+AC9G7J5_AS8zMjJi || [https://t.me/evlinsky Евгений Линский] || [https://t.me/mkornaukhov Михаил Корнаухов] [https://t.me/fizmat_sila Иван Пешков] [https://t.me/rusterrxd Александр Виноградов] [https://t.me/fonarmeister Илья Саранцев]&lt;br /&gt;
|-&lt;br /&gt;
| СПБ ПАДИИ || https://t.me/+BE67Oaii9G5hZGJi || [https://t.me/evlinsky Евгений Линский] || [https://t.me/mkornaukhov Михаил Корнаухов] [https://t.me/fizmat_sila Иван Пешков] [https://t.me/rusterrxd Александр Виноградов] [https://t.me/fonarmeister Илья Саранцев]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Настройка рабочего окружения =&lt;br /&gt;
===kks===&lt;br /&gt;
https://github.com/darkkeks/kks&lt;br /&gt;
&lt;br /&gt;
kks это консольная утилитка для курса, выполняющая много вещей, среди которых можно выделить несколько основных:&lt;br /&gt;
# Скачивание задач/сэмплов/контрольных с помощью одной команды. То же самое со сдачей задач: можно сдать и получить сразу результат. &lt;br /&gt;
# Генерация тестов с помощью скриптов и их тестирование.&lt;br /&gt;
# Просмотр рейтинга (как общего, так и по группам) в удобном формате&lt;br /&gt;
&lt;br /&gt;
Пример использования:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;kks sync  # скачивание задач&lt;br /&gt;
# тут вы написали свой код&lt;br /&gt;
kks test --sample  # тестирование&lt;br /&gt;
kks submit&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Больше примеров можно посмотреть в репозитории&lt;br /&gt;
===Библиотека ввода-вывода===&lt;br /&gt;
Библиотека ввода-вывода для ассемблера x86: [https://caos2023.myltsev.ru/simpleio_i686.S simpleio_i686.S]&lt;br /&gt;
&lt;br /&gt;
Все библиотечные функции не меняют значения регистров кроме указанных&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
call writei32   // напечатать на экране значение eax&lt;br /&gt;
                // как знаковое десятичное число&lt;br /&gt;
call readi32    // ввести с клавиатуры число и сохранить в eax&lt;br /&gt;
call readi64    // ввести с клавиатуры число и сохранить в edx:eax&lt;br /&gt;
call writei64   // вывести edx:eax&lt;br /&gt;
call finish     // завершить исполнение программы&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Внутри виртуальной машины её можно скачать командой &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;wget https://caos2023.myltsev.ru/simpleio_i686.S&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если получаете сообщение, что Wget не установлен на вашей системе (на Ubuntu Desktop по умолчанию нет), то установите его следующей командой: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;sudo apt install wget&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Виртуальная машина (VirtualBox)===&lt;br /&gt;
[https://caos2023.myltsev.ru/hse-caos-xubuntu.ova Образ виртуальной машины]&lt;br /&gt;
&lt;br /&gt;
Рекомендуется скачать образ и установить его в эмулятор [https://www.virtualbox.org/ VirtualBox]. Логин-пароль xubuntu/xubuntu, можно делать sudo.&lt;br /&gt;
&lt;br /&gt;
===Docker для пользователей MacOS (intel based)===&lt;br /&gt;
&#039;&#039;&#039;Проверялось на MacOS BigSur и Monterey&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Загрузить сам докер можно отсюда: [https://docs.docker.com/get-docker/ тык]&lt;br /&gt;
&lt;br /&gt;
Команда для запуска: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;docker run -it --rm -v `pwd`:/caos -w /caos ubuntu&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В терминале заходите в свою папку с акосом и запускаете эту команду. После нее вы начинаете работать с контейнером Ubuntu в папке /caos, где будет все содержимое вашей папки в основной ОС. &lt;br /&gt;
Изменять содержимое внутри /caos можно и изнутри контейнера, и снаружи, изменения будут видны и там и там.&lt;br /&gt;
&lt;br /&gt;
Внутри контейнера стоит установить gcc-multilib, без неё не заведётся: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;apt update &amp;amp;&amp;amp; apt install -y gcc-multilib&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь вы можете писать код внутри своей любимой IDE (запущенной напрямую в вашей ОС, например VSCode), а компилить и запускать в докере через терминал.&lt;br /&gt;
&lt;br /&gt;
===Docker для пользователей MacOS на Apple Silicon===&lt;br /&gt;
Добавьте в .bashrc или .zshrc:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;export DOCKER_DEFAULT_PLATFORM=linux/amd64&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После этого перезапустите Docker.&lt;br /&gt;
&lt;br /&gt;
Вариант2: &lt;br /&gt;
* Скачиваем docker.&lt;br /&gt;
* Переходим в папку с задачами в терминале.&lt;br /&gt;
* Выполняем &amp;lt;code&amp;gt;docker run --platform linux/amd64 -it --rm -v `pwd`:/caos -w /caos ubuntu&amp;lt;/code&amp;gt;&lt;br /&gt;
* Делаем &amp;lt;code&amp;gt;apt update&amp;lt;/code&amp;gt;&lt;br /&gt;
* Делаем &amp;lt;code&amp;gt; apt -y install build-essential gcc-multilib &amp;lt;/code&amp;gt;&lt;br /&gt;
* Собираем задачки командой &amp;lt;code&amp;gt;gcc -m32 -g задача.S simpleio_i686.S&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===CLion===&lt;br /&gt;
Для начала скачайте CLion с официального сайта и устанавите его.&lt;br /&gt;
====Если у вас не linux: вар. 1 - docker====&lt;br /&gt;
Скачайте и установите docker desktop. Добейтесь того, чтобы у вас заработал docker hello world (&amp;lt;code&amp;gt;docker run --rm hello-world&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Если у вас MacOs на арме&amp;lt;/b&amp;gt; сделайте то, что написано выше.&lt;br /&gt;
&lt;br /&gt;
После этого нам потребуется специальный образ с необходимыми для курса библиотеками и программами. &lt;br /&gt;
Создайте файл с именем Dockerfile и следующим содержанием:&lt;br /&gt;
&amp;lt;pre&amp;gt;FROM ubuntu:latest&lt;br /&gt;
&lt;br /&gt;
RUN apt update &amp;amp;&amp;amp; apt install -y gcc-multilib gdb make cmake g++&lt;br /&gt;
WORKDIR /caos&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В директории с этим запустите эту команду чтобы собрать образ: &amp;lt;code&amp;gt;docker build -t caos .&amp;lt;/code&amp;gt; и дождитесь пока она выполнится.&lt;br /&gt;
&lt;br /&gt;
После этого откройте окно настроек, перейдите в пункт Build, Execution, Deployment -&amp;gt; Toolchains и добавьте новый Toolchain с типом Docker.&lt;br /&gt;
В поле Image укажите &amp;lt;code&amp;gt;caos:latest&amp;lt;/code&amp;gt;, а остальные поля должны определиться автоматически. Поместите этот Toolchain первым в списке сделав его default&#039;ным.&lt;br /&gt;
&lt;br /&gt;
====Если у вас не linux: вар. 2 - wsl (Windows only)====&lt;br /&gt;
&lt;br /&gt;
Установите wsl 2, выберите дистрибутив Ubuntu.&lt;br /&gt;
Внутри wsl 2 поставьте необходимые пакеты (&amp;lt;code&amp;gt;sudo apt install gcc-multilib make cmake g++ gdb&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
После этого откройте окно настроек, перейдите в пункт Build, Execution, Deployment -&amp;gt; Toolchains и добавьте новый Toolchain с типом WSL.&lt;br /&gt;
Все поля должны определиться автоматически. Поместите этот Toolchain первым в списке сделав его default&#039;ным.&lt;br /&gt;
&lt;br /&gt;
====Далее====&lt;br /&gt;
Создайте проект (можете выбрать C Executable, но это не особо принципиально)&lt;br /&gt;
Скачайте simpleio_i686.S и поместите в корень проекта.&lt;br /&gt;
&lt;br /&gt;
В &amp;lt;code&amp;gt;CMakeLists.txt&amp;lt;/code&amp;gt; удалите всё и вставьте это:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake_minimum_required(VERSION 3.10)&lt;br /&gt;
project(caos ASM)&lt;br /&gt;
&lt;br /&gt;
add_compile_options(-m32)&lt;br /&gt;
add_link_options(-m32)&lt;br /&gt;
&lt;br /&gt;
file(GLOB_RECURSE sources_list LIST_DIRECTORIES true ./*)&lt;br /&gt;
foreach(file ${sources_list})&lt;br /&gt;
    IF(${file} MATCHES &amp;quot;.S$&amp;quot; AND NOT ${file} MATCHES &amp;quot;simpleio_i686.S&amp;quot;)&lt;br /&gt;
        get_filename_component(X ${file} NAME)&lt;br /&gt;
        add_executable(${X} ${file} simpleio_i686.S)&lt;br /&gt;
    endif()&lt;br /&gt;
endforeach()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сделайте Reload Cmake project (Внизу выберите вкладку Cmake и нажмите слева на кнопку обновления с двумя стрелочками).&lt;br /&gt;
&lt;br /&gt;
Этот конфиг написан таким образом, чтобы эффективно работать совместно с kks. На каждый .S файл (кроме библиотеке simpleio_i686.S) он создаст цель для сборки. &lt;br /&gt;
После того как у вас в проекте появляется новый файл (например после &amp;lt;code&amp;gt;kks sync&amp;lt;/code&amp;gt;) нужно делать Reload Cmake project.&lt;br /&gt;
Выберите справа сверху интересующий вас файл и запускайте. &lt;br /&gt;
&lt;br /&gt;
====Подсветка синтаксиса====&lt;br /&gt;
Если она работает неправильно, откройте файл &amp;lt;code&amp;gt;simpleio_i686.S&amp;lt;/code&amp;gt;, нажмите на его вкладку в списке открытых файлов сверху правой кнопкой мыши и выберите &amp;quot;Associate file type&amp;quot;. В списке выберите Assembly Language.&lt;br /&gt;
&lt;br /&gt;
====Дебагер====&lt;br /&gt;
Дебагер работает из-коробки.&lt;br /&gt;
&lt;br /&gt;
Чтобы узнать значения регистра напишите в поле снизу строку $eax и нажмите на кнопку &amp;quot;+&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Yabloko ===&lt;br /&gt;
Для того чтобы собрать Yabloko вам потребуется &lt;br /&gt;
* Компилятор, который умеет собирать elf-файлы под архитектуру x86. В мире линукса для такого традиционно собирают ещё одну копию &amp;lt;code&amp;gt;gcc&amp;lt;/code&amp;gt; (и называют &amp;lt;code&amp;gt;x86_64-elf-gcc&amp;lt;/code&amp;gt;, чтобы не путаться), однако &amp;lt;code&amp;gt;clang&amp;lt;/code&amp;gt;, в отличие от &amp;lt;code&amp;gt;gcc&amp;lt;/code&amp;gt;, в стандартной поставке уже имеет кросс-компилятор и кросс-линкер, так что можно (пока в теории) использовать его.&lt;br /&gt;
* [https://www.qemu.org/download/ QEMU]&lt;br /&gt;
&lt;br /&gt;
Всё это вы можете получить локально, не зависимо от того, на какой вы ОС.&lt;br /&gt;
Если вы по какой-то причине решили использовать учебный (или любой другой) сервер, то не забывайте добавлять к команде ssh опцию -X, которая пробрасывает X-сервер, а также по настроению опцию -C, которая сжимает передаваемые данные. Если у вас не линукс, то в таком случае вам потребуется ещё и скачать и установить X-сервер. Для [https://www.xquartz.org/ MacOs]. Для [https://sourceforge.net/projects/xming/ windows]. Если вы пользуетесь Putty, то поставьте галочку в Connection -&amp;gt; SSH -&amp;gt; X11 -&amp;gt; Enable X11 forwarding.&lt;br /&gt;
&lt;br /&gt;
= Как устроен курс =&lt;br /&gt;
== Контрольные мероприятия ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Когда !! Что&lt;br /&gt;
|-&lt;br /&gt;
| В конце 1-го модуля || контрольная в формате экзамена&lt;br /&gt;
|-&lt;br /&gt;
| В конце 2-го модуля || экзамен АК&lt;br /&gt;
|-&lt;br /&gt;
| В конце 4-го модуля || экзамен ОС&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Формула оценки ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;O&amp;lt;sub&amp;gt;АК&amp;lt;/sub&amp;gt; = 0.5 * H&amp;lt;sub&amp;gt;ejudge&amp;lt;/sub&amp;gt; + 0.05 * H&amp;lt;sub&amp;gt;семинары&amp;lt;/sub&amp;gt; + 0.15 * H&amp;lt;sub&amp;gt;контрольная&amp;lt;/sub&amp;gt; + 0.3 * Э&#039;&#039;&#039;&lt;br /&gt;
Все оценки кроме итоговой дробные. Итоговая оценка округляется арифметически.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;H&amp;lt;sub&amp;gt;ejudge&amp;lt;/sub&amp;gt;&#039;&#039;&#039; - оценка за сданные задания в тестирующей системе Ejudge, выставляется согласно описанию ниже. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;H&amp;lt;sub&amp;gt;семинары&amp;lt;/sub&amp;gt;&#039;&#039;&#039; - оценка за семинары, выставляется согласно правилам озвученным вашим семинаристом.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;H&amp;lt;sub&amp;gt;контрольная&amp;lt;/sub&amp;gt;&#039;&#039;&#039; - оценка за контрольную работу в модуле 1.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Автомат&amp;quot;&#039;&#039;&#039; выдаётся, если оценки за ДЗ, контрольные и семинары не ниже некоторых пороговых значений, которые будут объявлены дополнительно.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;O&amp;lt;sub&amp;gt;ОС&amp;lt;/sub&amp;gt; = 0.65 * H&amp;lt;sub&amp;gt;gitlab&amp;lt;/sub&amp;gt; + 0.05 * H&amp;lt;sub&amp;gt;семинары&amp;lt;/sub&amp;gt; + 0.3 * Э&#039;&#039;&#039;&lt;br /&gt;
Все оценки кроме итоговой дробные. Итоговая оценка округляется арифметически.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;H&amp;lt;sub&amp;gt;gitlab&amp;lt;/sub&amp;gt;&#039;&#039;&#039; - оценка за сданные задания в тестирующей системе gitlab, выставляется согласно описанию ниже. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;H&amp;lt;sub&amp;gt;семинары&amp;lt;/sub&amp;gt;&#039;&#039;&#039; - оценка за семинары, выставляется согласно правилам озвученным вашим семинаристом.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Автомат&amp;quot;&#039;&#039;&#039; выдаётся, если оценки за ДЗ и семинары не ниже некоторых пороговых значений, которые будут объявлены дополнительно.&lt;br /&gt;
&lt;br /&gt;
=== Формула рассчета оценки Ejudge ===&lt;br /&gt;
&lt;br /&gt;
Оценки будут ставиться исходя из процентного соотношения к полученным баллам, где&lt;br /&gt;
&lt;br /&gt;
1) Учитываются только бонусные и домашние контесты.&lt;br /&gt;
&lt;br /&gt;
2) За 100% считается сумма возмных максимальных баллов по всем домашним контестам&lt;br /&gt;
&lt;br /&gt;
3) По следующей шкале (оценка, процент). Оценки дробные, между соседними ячейками линейно:&lt;br /&gt;
&lt;br /&gt;
1 20&lt;br /&gt;
&lt;br /&gt;
2 30&lt;br /&gt;
&lt;br /&gt;
3 40&lt;br /&gt;
&lt;br /&gt;
4 50&lt;br /&gt;
&lt;br /&gt;
5 60&lt;br /&gt;
&lt;br /&gt;
6 70&lt;br /&gt;
&lt;br /&gt;
8 90&lt;br /&gt;
&lt;br /&gt;
9 95&lt;br /&gt;
&lt;br /&gt;
10 99&lt;br /&gt;
&lt;br /&gt;
=== Формула рассчета оценки Gitlab ===&lt;br /&gt;
&lt;br /&gt;
На курсе будет представлено 5 домашних заданий и одно бонусное.&lt;br /&gt;
&lt;br /&gt;
Оценка за ДЗ выставляется как среднее арифметическое из оценок, где бонусная не попадает в знаменатель&lt;br /&gt;
&lt;br /&gt;
== Прокторинг ==&lt;br /&gt;
&lt;br /&gt;
На контрольной работе и экзамене применяется селф-прокторинг (даже если вы находитесь в аудитории): необходимо сделать видеозапись, на которой видны ваш экран и ваше лицо во время решения задач. Микрофон тоже должен быть включён. В начале записи, пожалуйста, представьтесь. Запись необходимо будет выложить в любое облачное хранилище и сдать в ejudge ссылку на неё в течении нескольких часов после. Запись нужно хранить до выставления оценки за курс. Размер файла записи не должен сильно превышать 250 МБ. Помните, запись это ваше доказательство честности написанной работы. Инструкция по настройке ОБС появится позднее на вики. Рекомендуется качество не выше 720р и не ниже 360р&lt;br /&gt;
&lt;br /&gt;
На контрольной работе можно пользоваться любыми материалами, веб-сайтами и т. д., за исключением интерактивного общения с кем-либо (гуглить можно, а вот советоваться нельзя). Телеграм-канал курса, а также официальные чаты курса также явно разрешены. В канале могут появляться важные объявления, за ним рекомендуется следить.&lt;br /&gt;
&lt;br /&gt;
= Записи лекций =&lt;br /&gt;
&lt;br /&gt;
https://disk.yandex.ru/d/zl7DgU7FmuJKLg/%D0%90%D1%80%D1%85%D0%B8%D1%82%D0%B5%D0%BA%D1%82%D1%83%D1%80%D0%B0%20%D0%BA%D0%BE%D0%BC%D0%BF%D1%8C%D1%8E%D1%82%D0%B5%D1%80%D0%B0&lt;/div&gt;</summary>
		<author><name>Objatie groba</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=CAOS-2023/24&amp;diff=83205</id>
		<title>CAOS-2023/24</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=CAOS-2023/24&amp;diff=83205"/>
		<updated>2024-01-25T14:15:11Z</updated>

		<summary type="html">&lt;p&gt;Objatie groba: /* Контрольные мероприятия */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Вход в тестирующую систему: https://caos2023.myltsev.ru&lt;br /&gt;
&lt;br /&gt;
Материалы лекций: https://caos.myltsev.ru/lectures/&lt;br /&gt;
&lt;br /&gt;
[https://caos2023.myltsev.ru/style.html Стиль оформления программ на Си]&lt;br /&gt;
&lt;br /&gt;
[https://t.me/+-RJj6i7NMaE1MWIy Чатик курса] &lt;br /&gt;
&lt;br /&gt;
[https://t.me/+duw-cU1uT4FjNzYy Канал с объявлениями]&lt;br /&gt;
&lt;br /&gt;
[https://forms.gle/AMBwLvi9mNPqvUjU7 Форма для фидбека]&lt;br /&gt;
&lt;br /&gt;
[https://exuberant-arthropod-be8.notion.site/21-22-0f236f7d03c74dfbbd945f93651758a2 Конспект лекций 2021 года от студентов]&lt;br /&gt;
&lt;br /&gt;
== Чатики и преподаватели по группам ==&lt;br /&gt;
Лектор — Александр Мыльцев [https://t.me/myltsev @myltsev]&lt;br /&gt;
&lt;br /&gt;
Старший семинарист - Игорь Минеев [https://t.me/objatie_groba @objatie_groba]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Группа !! Чатик !! Преподаватель !! Ассистенты&lt;br /&gt;
|-&lt;br /&gt;
| 221 || https://t.me/+CjBn9f0EY3ZiMmEy || [https://t.me/grphil Филипп Грибов] || [https://t.me/ddubrovin Дмитрий Дубровин], [https://t.me/gmusya Герман Перов]&lt;br /&gt;
|-&lt;br /&gt;
| 222 || https://t.me/+uCLKSieZ3z8zNjk6 || [https://t.me/objatie_groba Игорь Минеев] || [https://t.me/l0i4b Арсений Болотников], [https://t.me/dikirillov Даниил Кириллов]&lt;br /&gt;
|-&lt;br /&gt;
| 223 || https://t.me/+-kqneBWoAC1hZDEy || [https://t.me/youagain Сафронов Евгений]|| [https://t.me/Mathew_K Матвей Кривда], [https://t.me/sidorenko_ivan Иван Сидоренко]&lt;br /&gt;
|-&lt;br /&gt;
| 224 || https://t.me/+JGp5STNu3WYzOTRi || TODO || TODO&lt;br /&gt;
|-&lt;br /&gt;
| 225 || https://t.me/+98tf6UWUIGM1MmYy || TODO || TODO&lt;br /&gt;
|-&lt;br /&gt;
| 226 || https://t.me/cool_caos_226 || [https://t.me/iiixphillxiii Миша Филитов] || [https://t.me/Holpow Фёдор], [https://t.me/igreetyou Денис]&lt;br /&gt;
|-&lt;br /&gt;
| 227 || TODO || TODO || TODO&lt;br /&gt;
|-&lt;br /&gt;
| 228 || TODO || TODO || TODO&lt;br /&gt;
|-&lt;br /&gt;
| 229 || TODO || TODO || TODO&lt;br /&gt;
|-&lt;br /&gt;
| 2210 || https://t.me/+Is6t2SMMTptmMWUy || [https://t.me/atgshkasan Шитов Александр] || [https://t.me/JustUserOff Тигран], [https://t.me/idt005 Игорь]&lt;br /&gt;
|-&lt;br /&gt;
| СПБ ПМИ || https://t.me/+AC9G7J5_AS8zMjJi || [https://t.me/evlinsky Евгений Линский] || [https://t.me/mkornaukhov Михаил Корнаухов] [https://t.me/fizmat_sila Иван Пешков] [https://t.me/rusterrxd Александр Виноградов] [https://t.me/fonarmeister Илья Саранцев]&lt;br /&gt;
|-&lt;br /&gt;
| СПБ ПАДИИ || https://t.me/+BE67Oaii9G5hZGJi || [https://t.me/evlinsky Евгений Линский] || [https://t.me/mkornaukhov Михаил Корнаухов] [https://t.me/fizmat_sila Иван Пешков] [https://t.me/rusterrxd Александр Виноградов] [https://t.me/fonarmeister Илья Саранцев]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Настройка рабочего окружения =&lt;br /&gt;
===kks===&lt;br /&gt;
https://github.com/darkkeks/kks&lt;br /&gt;
&lt;br /&gt;
kks это консольная утилитка для курса, выполняющая много вещей, среди которых можно выделить несколько основных:&lt;br /&gt;
# Скачивание задач/сэмплов/контрольных с помощью одной команды. То же самое со сдачей задач: можно сдать и получить сразу результат. &lt;br /&gt;
# Генерация тестов с помощью скриптов и их тестирование.&lt;br /&gt;
# Просмотр рейтинга (как общего, так и по группам) в удобном формате&lt;br /&gt;
&lt;br /&gt;
Пример использования:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;kks sync  # скачивание задач&lt;br /&gt;
# тут вы написали свой код&lt;br /&gt;
kks test --sample  # тестирование&lt;br /&gt;
kks submit&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Больше примеров можно посмотреть в репозитории&lt;br /&gt;
===Библиотека ввода-вывода===&lt;br /&gt;
Библиотека ввода-вывода для ассемблера x86: [https://caos2023.myltsev.ru/simpleio_i686.S simpleio_i686.S]&lt;br /&gt;
&lt;br /&gt;
Все библиотечные функции не меняют значения регистров кроме указанных&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
call writei32   // напечатать на экране значение eax&lt;br /&gt;
                // как знаковое десятичное число&lt;br /&gt;
call readi32    // ввести с клавиатуры число и сохранить в eax&lt;br /&gt;
call readi64    // ввести с клавиатуры число и сохранить в edx:eax&lt;br /&gt;
call writei64   // вывести edx:eax&lt;br /&gt;
call finish     // завершить исполнение программы&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Внутри виртуальной машины её можно скачать командой &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;wget https://caos2023.myltsev.ru/simpleio_i686.S&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если получаете сообщение, что Wget не установлен на вашей системе (на Ubuntu Desktop по умолчанию нет), то установите его следующей командой: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;sudo apt install wget&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Виртуальная машина (VirtualBox)===&lt;br /&gt;
[https://caos2023.myltsev.ru/hse-caos-xubuntu.ova Образ виртуальной машины]&lt;br /&gt;
&lt;br /&gt;
Рекомендуется скачать образ и установить его в эмулятор [https://www.virtualbox.org/ VirtualBox]. Логин-пароль xubuntu/xubuntu, можно делать sudo.&lt;br /&gt;
&lt;br /&gt;
===Docker для пользователей MacOS (intel based)===&lt;br /&gt;
&#039;&#039;&#039;Проверялось на MacOS BigSur и Monterey&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Загрузить сам докер можно отсюда: [https://docs.docker.com/get-docker/ тык]&lt;br /&gt;
&lt;br /&gt;
Команда для запуска: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;docker run -it --rm -v `pwd`:/caos -w /caos ubuntu&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В терминале заходите в свою папку с акосом и запускаете эту команду. После нее вы начинаете работать с контейнером Ubuntu в папке /caos, где будет все содержимое вашей папки в основной ОС. &lt;br /&gt;
Изменять содержимое внутри /caos можно и изнутри контейнера, и снаружи, изменения будут видны и там и там.&lt;br /&gt;
&lt;br /&gt;
Внутри контейнера стоит установить gcc-multilib, без неё не заведётся: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;apt update &amp;amp;&amp;amp; apt install -y gcc-multilib&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь вы можете писать код внутри своей любимой IDE (запущенной напрямую в вашей ОС, например VSCode), а компилить и запускать в докере через терминал.&lt;br /&gt;
&lt;br /&gt;
===Docker для пользователей MacOS на Apple Silicon===&lt;br /&gt;
Добавьте в .bashrc или .zshrc:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;export DOCKER_DEFAULT_PLATFORM=linux/amd64&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После этого перезапустите Docker.&lt;br /&gt;
&lt;br /&gt;
Вариант2: &lt;br /&gt;
* Скачиваем docker.&lt;br /&gt;
* Переходим в папку с задачами в терминале.&lt;br /&gt;
* Выполняем &amp;lt;code&amp;gt;docker run --platform linux/amd64 -it --rm -v `pwd`:/caos -w /caos ubuntu&amp;lt;/code&amp;gt;&lt;br /&gt;
* Делаем &amp;lt;code&amp;gt;apt update&amp;lt;/code&amp;gt;&lt;br /&gt;
* Делаем &amp;lt;code&amp;gt; apt -y install build-essential gcc-multilib &amp;lt;/code&amp;gt;&lt;br /&gt;
* Собираем задачки командой &amp;lt;code&amp;gt;gcc -m32 -g задача.S simpleio_i686.S&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===CLion===&lt;br /&gt;
Для начала скачайте CLion с официального сайта и устанавите его.&lt;br /&gt;
====Если у вас не linux: вар. 1 - docker====&lt;br /&gt;
Скачайте и установите docker desktop. Добейтесь того, чтобы у вас заработал docker hello world (&amp;lt;code&amp;gt;docker run --rm hello-world&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Если у вас MacOs на арме&amp;lt;/b&amp;gt; сделайте то, что написано выше.&lt;br /&gt;
&lt;br /&gt;
После этого нам потребуется специальный образ с необходимыми для курса библиотеками и программами. &lt;br /&gt;
Создайте файл с именем Dockerfile и следующим содержанием:&lt;br /&gt;
&amp;lt;pre&amp;gt;FROM ubuntu:latest&lt;br /&gt;
&lt;br /&gt;
RUN apt update &amp;amp;&amp;amp; apt install -y gcc-multilib gdb make cmake g++&lt;br /&gt;
WORKDIR /caos&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В директории с этим запустите эту команду чтобы собрать образ: &amp;lt;code&amp;gt;docker build -t caos .&amp;lt;/code&amp;gt; и дождитесь пока она выполнится.&lt;br /&gt;
&lt;br /&gt;
После этого откройте окно настроек, перейдите в пункт Build, Execution, Deployment -&amp;gt; Toolchains и добавьте новый Toolchain с типом Docker.&lt;br /&gt;
В поле Image укажите &amp;lt;code&amp;gt;caos:latest&amp;lt;/code&amp;gt;, а остальные поля должны определиться автоматически. Поместите этот Toolchain первым в списке сделав его default&#039;ным.&lt;br /&gt;
&lt;br /&gt;
====Если у вас не linux: вар. 2 - wsl (Windows only)====&lt;br /&gt;
&lt;br /&gt;
Установите wsl 2, выберите дистрибутив Ubuntu.&lt;br /&gt;
Внутри wsl 2 поставьте необходимые пакеты (&amp;lt;code&amp;gt;sudo apt install gcc-multilib make cmake g++ gdb&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
После этого откройте окно настроек, перейдите в пункт Build, Execution, Deployment -&amp;gt; Toolchains и добавьте новый Toolchain с типом WSL.&lt;br /&gt;
Все поля должны определиться автоматически. Поместите этот Toolchain первым в списке сделав его default&#039;ным.&lt;br /&gt;
&lt;br /&gt;
====Далее====&lt;br /&gt;
Создайте проект (можете выбрать C Executable, но это не особо принципиально)&lt;br /&gt;
Скачайте simpleio_i686.S и поместите в корень проекта.&lt;br /&gt;
&lt;br /&gt;
В &amp;lt;code&amp;gt;CMakeLists.txt&amp;lt;/code&amp;gt; удалите всё и вставьте это:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake_minimum_required(VERSION 3.10)&lt;br /&gt;
project(caos ASM)&lt;br /&gt;
&lt;br /&gt;
add_compile_options(-m32)&lt;br /&gt;
add_link_options(-m32)&lt;br /&gt;
&lt;br /&gt;
file(GLOB_RECURSE sources_list LIST_DIRECTORIES true ./*)&lt;br /&gt;
foreach(file ${sources_list})&lt;br /&gt;
    IF(${file} MATCHES &amp;quot;.S$&amp;quot; AND NOT ${file} MATCHES &amp;quot;simpleio_i686.S&amp;quot;)&lt;br /&gt;
        get_filename_component(X ${file} NAME)&lt;br /&gt;
        add_executable(${X} ${file} simpleio_i686.S)&lt;br /&gt;
    endif()&lt;br /&gt;
endforeach()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сделайте Reload Cmake project (Внизу выберите вкладку Cmake и нажмите слева на кнопку обновления с двумя стрелочками).&lt;br /&gt;
&lt;br /&gt;
Этот конфиг написан таким образом, чтобы эффективно работать совместно с kks. На каждый .S файл (кроме библиотеке simpleio_i686.S) он создаст цель для сборки. &lt;br /&gt;
После того как у вас в проекте появляется новый файл (например после &amp;lt;code&amp;gt;kks sync&amp;lt;/code&amp;gt;) нужно делать Reload Cmake project.&lt;br /&gt;
Выберите справа сверху интересующий вас файл и запускайте. &lt;br /&gt;
&lt;br /&gt;
====Подсветка синтаксиса====&lt;br /&gt;
Если она работает неправильно, откройте файл &amp;lt;code&amp;gt;simpleio_i686.S&amp;lt;/code&amp;gt;, нажмите на его вкладку в списке открытых файлов сверху правой кнопкой мыши и выберите &amp;quot;Associate file type&amp;quot;. В списке выберите Assembly Language.&lt;br /&gt;
&lt;br /&gt;
====Дебагер====&lt;br /&gt;
Дебагер работает из-коробки.&lt;br /&gt;
&lt;br /&gt;
Чтобы узнать значения регистра напишите в поле снизу строку $eax и нажмите на кнопку &amp;quot;+&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Yabloko ===&lt;br /&gt;
Для того чтобы собрать Yabloko вам потребуется &lt;br /&gt;
* Компилятор, который умеет собирать elf-файлы под архитектуру x86. В мире линукса для такого традиционно собирают ещё одну копию &amp;lt;code&amp;gt;gcc&amp;lt;/code&amp;gt; (и называют &amp;lt;code&amp;gt;x86_64-elf-gcc&amp;lt;/code&amp;gt;, чтобы не путаться), однако &amp;lt;code&amp;gt;clang&amp;lt;/code&amp;gt;, в отличие от &amp;lt;code&amp;gt;gcc&amp;lt;/code&amp;gt;, в стандартной поставке уже имеет кросс-компилятор и кросс-линкер, так что можно (пока в теории) использовать его.&lt;br /&gt;
* [https://www.qemu.org/download/ QEMU]&lt;br /&gt;
&lt;br /&gt;
Всё это вы можете получить локально, не зависимо от того, на какой вы ОС.&lt;br /&gt;
Если вы по какой-то причине решили использовать учебный (или любой другой) сервер, то не забывайте добавлять к команде ssh опцию -X, которая пробрасывает X-сервер, а также по настроению опцию -C, которая сжимает передаваемые данные. Если у вас не линукс, то в таком случае вам потребуется ещё и скачать и установить X-сервер. Для [https://www.xquartz.org/ MacOs]. Для [https://sourceforge.net/projects/xming/ windows]. Если вы пользуетесь Putty, то поставьте галочку в Connection -&amp;gt; SSH -&amp;gt; X11 -&amp;gt; Enable X11 forwarding.&lt;br /&gt;
&lt;br /&gt;
= Как устроен курс =&lt;br /&gt;
== Контрольные мероприятия ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Когда !! Что&lt;br /&gt;
|-&lt;br /&gt;
| В конце 1-го модуля || контрольная в формате экзамена&lt;br /&gt;
|-&lt;br /&gt;
| В конце 2-го модуля || экзамен АК&lt;br /&gt;
|-&lt;br /&gt;
| В конце 4-го модуля || экзамен ОС&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Формула оценки ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;O&amp;lt;sub&amp;gt;АК&amp;lt;/sub&amp;gt; = 0.5 * H&amp;lt;sub&amp;gt;ejudge&amp;lt;/sub&amp;gt; + 0.05 * H&amp;lt;sub&amp;gt;семинары&amp;lt;/sub&amp;gt; + 0.15 * H&amp;lt;sub&amp;gt;контрольная&amp;lt;/sub&amp;gt; + 0.3 * Э&#039;&#039;&#039;&lt;br /&gt;
Все оценки кроме итоговой дробные с округлением до 2х знаков после запятой. Итоговая оценка округляется арифметически.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;H&amp;lt;sub&amp;gt;ejudge&amp;lt;/sub&amp;gt;&#039;&#039;&#039; - оценка за сданные задания в тестирующей системе Ejudge, выставляется согласно описанию ниже. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;H&amp;lt;sub&amp;gt;семинары&amp;lt;/sub&amp;gt;&#039;&#039;&#039; - оценка за семинары, выставляется согласно правилам озвученным вашим семинаристом.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;H&amp;lt;sub&amp;gt;контрольная&amp;lt;/sub&amp;gt;&#039;&#039;&#039; - оценка за контрольную работу в модуле 1.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Автомат&amp;quot;&#039;&#039;&#039; выдаётся, если оценки за ДЗ, контрольные и семинары не ниже некоторых пороговых значений, которые будут объявлены дополнительно.&lt;br /&gt;
&lt;br /&gt;
=== Формула рассчета оценки Ejudge ===&lt;br /&gt;
&lt;br /&gt;
Оценки будут ставиться исходя из процентного соотношения к полученным баллам, где&lt;br /&gt;
&lt;br /&gt;
1) Учитываются только бонусные и домашние контесты.&lt;br /&gt;
&lt;br /&gt;
2) За 100% считается сумма возмных максимальных баллов по всем домашним контестам&lt;br /&gt;
&lt;br /&gt;
3) По следующей шкале (оценка, процент). Оценки дробные, между соседними ячейками линейно:&lt;br /&gt;
&lt;br /&gt;
1 20&lt;br /&gt;
&lt;br /&gt;
2 30&lt;br /&gt;
&lt;br /&gt;
3 40&lt;br /&gt;
&lt;br /&gt;
4 50&lt;br /&gt;
&lt;br /&gt;
5 60&lt;br /&gt;
&lt;br /&gt;
6 70&lt;br /&gt;
&lt;br /&gt;
8 90&lt;br /&gt;
&lt;br /&gt;
9 95&lt;br /&gt;
&lt;br /&gt;
10 99&lt;br /&gt;
&lt;br /&gt;
== Прокторинг ==&lt;br /&gt;
&lt;br /&gt;
На контрольной работе и экзамене применяется селф-прокторинг (даже если вы находитесь в аудитории): необходимо сделать видеозапись, на которой видны ваш экран и ваше лицо во время решения задач. Микрофон тоже должен быть включён. В начале записи, пожалуйста, представьтесь. Запись необходимо будет выложить в любое облачное хранилище и сдать в ejudge ссылку на неё в течении нескольких часов после. Запись нужно хранить до выставления оценки за курс. Размер файла записи не должен сильно превышать 250 МБ. Помните, запись это ваше доказательство честности написанной работы. Инструкция по настройке ОБС появится позднее на вики. Рекомендуется качество не выше 720р и не ниже 360р&lt;br /&gt;
&lt;br /&gt;
На контрольной работе можно пользоваться любыми материалами, веб-сайтами и т. д., за исключением интерактивного общения с кем-либо (гуглить можно, а вот советоваться нельзя). Телеграм-канал курса, а также официальные чаты курса также явно разрешены. В канале могут появляться важные объявления, за ним рекомендуется следить.&lt;br /&gt;
&lt;br /&gt;
= Записи лекций =&lt;br /&gt;
&lt;br /&gt;
https://disk.yandex.ru/d/zl7DgU7FmuJKLg/%D0%90%D1%80%D1%85%D0%B8%D1%82%D0%B5%D0%BA%D1%82%D1%83%D1%80%D0%B0%20%D0%BA%D0%BE%D0%BC%D0%BF%D1%8C%D1%8E%D1%82%D0%B5%D1%80%D0%B0&lt;/div&gt;</summary>
		<author><name>Objatie groba</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=CAOS-2023/24&amp;diff=80971</id>
		<title>CAOS-2023/24</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=CAOS-2023/24&amp;diff=80971"/>
		<updated>2023-10-17T12:10:47Z</updated>

		<summary type="html">&lt;p&gt;Objatie groba: /* Формула рассчета оценки Ejudge */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Вход в тестирующую систему: https://caos2023.myltsev.ru&lt;br /&gt;
&lt;br /&gt;
Материалы лекций: https://caos.myltsev.ru/lectures/&lt;br /&gt;
&lt;br /&gt;
[https://caos2023.myltsev.ru/style.html Стиль оформления программ на Си]&lt;br /&gt;
&lt;br /&gt;
[https://t.me/+-RJj6i7NMaE1MWIy Чатик курса] &lt;br /&gt;
&lt;br /&gt;
[https://t.me/+duw-cU1uT4FjNzYy Канал с объявлениями]&lt;br /&gt;
&lt;br /&gt;
[https://forms.gle/AMBwLvi9mNPqvUjU7 Форма для фидбека]&lt;br /&gt;
&lt;br /&gt;
[https://exuberant-arthropod-be8.notion.site/21-22-0f236f7d03c74dfbbd945f93651758a2 Конспект лекций 2021 года от студентов]&lt;br /&gt;
&lt;br /&gt;
== Чатики и преподаватели по группам ==&lt;br /&gt;
Лектор — Александр Мыльцев [https://t.me/myltsev @myltsev]&lt;br /&gt;
&lt;br /&gt;
Старший семинарист - Игорь Минеев [https://t.me/objatie_groba @objatie_groba]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Группа !! Чатик !! Преподаватель !! Ассистенты&lt;br /&gt;
|-&lt;br /&gt;
| 221 || https://t.me/+CjBn9f0EY3ZiMmEy || [https://t.me/grphil Филипп Грибов] || [https://t.me/ddubrovin Дмитрий Дубровин], [https://t.me/gmusya Герман Перов]&lt;br /&gt;
|-&lt;br /&gt;
| 222 || https://t.me/+uCLKSieZ3z8zNjk6 || [https://t.me/objatie_groba Игорь Минеев] || [https://t.me/l0i4b Арсений Болотников], [https://t.me/dikirillov Даниил Кириллов]&lt;br /&gt;
|-&lt;br /&gt;
| 223 || https://t.me/+-kqneBWoAC1hZDEy || [https://t.me/youagain Сафронов Евгений]|| [https://t.me/Mathew_K Матвей Кривда], [https://t.me/sidorenko_ivan Иван Сидоренко]&lt;br /&gt;
|-&lt;br /&gt;
| 224 || https://t.me/+JGp5STNu3WYzOTRi || TODO || TODO&lt;br /&gt;
|-&lt;br /&gt;
| 225 || https://t.me/+98tf6UWUIGM1MmYy || TODO || TODO&lt;br /&gt;
|-&lt;br /&gt;
| 226 || https://t.me/cool_caos_226 || [https://t.me/iiixphillxiii Миша Филитов] || [https://t.me/Holpow Фёдор], [https://t.me/igreetyou Денис]&lt;br /&gt;
|-&lt;br /&gt;
| 227 || TODO || TODO || TODO&lt;br /&gt;
|-&lt;br /&gt;
| 228 || TODO || TODO || TODO&lt;br /&gt;
|-&lt;br /&gt;
| 229 || TODO || TODO || TODO&lt;br /&gt;
|-&lt;br /&gt;
| 2210 || https://t.me/+Is6t2SMMTptmMWUy || [https://t.me/atgshkasan Шитов Александр] || [https://t.me/JustUserOff Тигран], [https://t.me/idt005 Игорь]&lt;br /&gt;
|-&lt;br /&gt;
| СПБ ПМИ || https://t.me/+AC9G7J5_AS8zMjJi || [https://t.me/evlinsky Евгений Линский] || [https://t.me/mkornaukhov Михаил Корнаухов] [https://t.me/fizmat_sila Иван Пешков] [https://t.me/rusterrxd Александр Виноградов] [https://t.me/fonarmeister Илья Саранцев]&lt;br /&gt;
|-&lt;br /&gt;
| СПБ ПАДИИ || https://t.me/+BE67Oaii9G5hZGJi || [https://t.me/evlinsky Евгений Линский] || [https://t.me/mkornaukhov Михаил Корнаухов] [https://t.me/fizmat_sila Иван Пешков] [https://t.me/rusterrxd Александр Виноградов] [https://t.me/fonarmeister Илья Саранцев]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Настройка рабочего окружения =&lt;br /&gt;
===kks===&lt;br /&gt;
https://github.com/darkkeks/kks&lt;br /&gt;
&lt;br /&gt;
kks это консольная утилитка для курса, выполняющая много вещей, среди которых можно выделить несколько основных:&lt;br /&gt;
# Скачивание задач/сэмплов/контрольных с помощью одной команды. То же самое со сдачей задач: можно сдать и получить сразу результат. &lt;br /&gt;
# Генерация тестов с помощью скриптов и их тестирование.&lt;br /&gt;
# Просмотр рейтинга (как общего, так и по группам) в удобном формате&lt;br /&gt;
&lt;br /&gt;
Пример использования:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;kks sync  # скачивание задач&lt;br /&gt;
# тут вы написали свой код&lt;br /&gt;
kks test --sample  # тестирование&lt;br /&gt;
kks submit&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Больше примеров можно посмотреть в репозитории&lt;br /&gt;
===Библиотека ввода-вывода===&lt;br /&gt;
Библиотека ввода-вывода для ассемблера x86: [https://caos2023.myltsev.ru/simpleio_i686.S simpleio_i686.S]&lt;br /&gt;
&lt;br /&gt;
Все библиотечные функции не меняют значения регистров кроме указанных&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
call writei32   // напечатать на экране значение eax&lt;br /&gt;
                // как знаковое десятичное число&lt;br /&gt;
call readi32    // ввести с клавиатуры число и сохранить в eax&lt;br /&gt;
call readi64    // ввести с клавиатуры число и сохранить в edx:eax&lt;br /&gt;
call writei64   // вывести edx:eax&lt;br /&gt;
call finish     // завершить исполнение программы&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Внутри виртуальной машины её можно скачать командой &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;wget https://caos2023.myltsev.ru/simpleio_i686.S&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если получаете сообщение, что Wget не установлен на вашей системе (на Ubuntu Desktop по умолчанию нет), то установите его следующей командой: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;sudo apt install wget&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Виртуальная машина (VirtualBox)===&lt;br /&gt;
[https://caos2023.myltsev.ru/hse-caos-xubuntu.ova Образ виртуальной машины]&lt;br /&gt;
&lt;br /&gt;
Рекомендуется скачать образ и установить его в эмулятор [https://www.virtualbox.org/ VirtualBox]. Логин-пароль xubuntu/xubuntu, можно делать sudo.&lt;br /&gt;
&lt;br /&gt;
===Docker для пользователей MacOS (intel based)===&lt;br /&gt;
&#039;&#039;&#039;Проверялось на MacOS BigSur и Monterey&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Загрузить сам докер можно отсюда: [https://docs.docker.com/get-docker/ тык]&lt;br /&gt;
&lt;br /&gt;
Команда для запуска: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;docker run -it --rm -v `pwd`:/caos -w /caos ubuntu&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В терминале заходите в свою папку с акосом и запускаете эту команду. После нее вы начинаете работать с контейнером Ubuntu в папке /caos, где будет все содержимое вашей папки в основной ОС. &lt;br /&gt;
Изменять содержимое внутри /caos можно и изнутри контейнера, и снаружи, изменения будут видны и там и там.&lt;br /&gt;
&lt;br /&gt;
Внутри контейнера стоит установить gcc-multilib, без неё не заведётся: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;apt update &amp;amp;&amp;amp; apt install -y gcc-multilib&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь вы можете писать код внутри своей любимой IDE (запущенной напрямую в вашей ОС, например VSCode), а компилить и запускать в докере через терминал.&lt;br /&gt;
&lt;br /&gt;
===Docker для пользователей MacOS на Apple Silicon===&lt;br /&gt;
Добавьте в .bashrc или .zshrc:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;export DOCKER_DEFAULT_PLATFORM=linux/amd64&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После этого перезапустите Docker.&lt;br /&gt;
&lt;br /&gt;
Вариант2: &lt;br /&gt;
* Скачиваем docker.&lt;br /&gt;
* Переходим в папку с задачами в терминале.&lt;br /&gt;
* Выполняем &amp;lt;code&amp;gt;docker run --platform linux/amd64 -it --rm -v `pwd`:/caos -w /caos ubuntu&amp;lt;/code&amp;gt;&lt;br /&gt;
* Делаем &amp;lt;code&amp;gt;apt update&amp;lt;/code&amp;gt;&lt;br /&gt;
* Делаем &amp;lt;code&amp;gt; apt -y install build-essential gcc-multilib &amp;lt;/code&amp;gt;&lt;br /&gt;
* Собираем задачки командой &amp;lt;code&amp;gt;gcc -m32 -g задача.S simpleio_i686.S&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===CLion===&lt;br /&gt;
Для начала скачайте CLion с официального сайта и устанавите его.&lt;br /&gt;
====Если у вас не linux: вар. 1 - docker====&lt;br /&gt;
Скачайте и установите docker desktop. Добейтесь того, чтобы у вас заработал docker hello world (&amp;lt;code&amp;gt;docker run --rm hello-world&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Если у вас MacOs на арме&amp;lt;/b&amp;gt; сделайте то, что написано выше.&lt;br /&gt;
&lt;br /&gt;
После этого нам потребуется специальный образ с необходимыми для курса библиотеками и программами. &lt;br /&gt;
Создайте файл с именем Dockerfile и следующим содержанием:&lt;br /&gt;
&amp;lt;pre&amp;gt;FROM ubuntu:latest&lt;br /&gt;
&lt;br /&gt;
RUN apt update &amp;amp;&amp;amp; apt install -y gcc-multilib gdb make cmake g++&lt;br /&gt;
WORKDIR /caos&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В директории с этим запустите эту команду чтобы собрать образ: &amp;lt;code&amp;gt;docker build -t caos .&amp;lt;/code&amp;gt; и дождитесь пока она выполнится.&lt;br /&gt;
&lt;br /&gt;
После этого откройте окно настроек, перейдите в пункт Build, Execution, Deployment -&amp;gt; Toolchains и добавьте новый Toolchain с типом Docker.&lt;br /&gt;
В поле Image укажите &amp;lt;code&amp;gt;caos:latest&amp;lt;/code&amp;gt;, а остальные поля должны определиться автоматически. Поместите этот Toolchain первым в списке сделав его default&#039;ным.&lt;br /&gt;
&lt;br /&gt;
====Если у вас не linux: вар. 2 - wsl (Windows only)====&lt;br /&gt;
&lt;br /&gt;
Установите wsl 2, выберите дистрибутив Ubuntu.&lt;br /&gt;
Внутри wsl 2 поставьте необходимые пакеты (&amp;lt;code&amp;gt;sudo apt install gcc-multilib make cmake g++ gdb&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
После этого откройте окно настроек, перейдите в пункт Build, Execution, Deployment -&amp;gt; Toolchains и добавьте новый Toolchain с типом WSL.&lt;br /&gt;
Все поля должны определиться автоматически. Поместите этот Toolchain первым в списке сделав его default&#039;ным.&lt;br /&gt;
&lt;br /&gt;
====Далее====&lt;br /&gt;
Создайте проект (можете выбрать C Executable, но это не особо принципиально)&lt;br /&gt;
Скачайте simpleio_i686.S и поместите в корень проекта.&lt;br /&gt;
&lt;br /&gt;
В &amp;lt;code&amp;gt;CMakeLists.txt&amp;lt;/code&amp;gt; удалите всё и вставьте это:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake_minimum_required(VERSION 3.10)&lt;br /&gt;
project(caos ASM)&lt;br /&gt;
&lt;br /&gt;
add_compile_options(-m32)&lt;br /&gt;
add_link_options(-m32)&lt;br /&gt;
&lt;br /&gt;
file(GLOB_RECURSE sources_list LIST_DIRECTORIES true ./*)&lt;br /&gt;
foreach(file ${sources_list})&lt;br /&gt;
    IF(${file} MATCHES &amp;quot;.S$&amp;quot; AND NOT ${file} MATCHES &amp;quot;simpleio_i686.S&amp;quot;)&lt;br /&gt;
        get_filename_component(X ${file} NAME)&lt;br /&gt;
        add_executable(${X} ${file} simpleio_i686.S)&lt;br /&gt;
    endif()&lt;br /&gt;
endforeach()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сделайте Reload Cmake project (Внизу выберите вкладку Cmake и нажмите слева на кнопку обновления с двумя стрелочками).&lt;br /&gt;
&lt;br /&gt;
Этот конфиг написан таким образом, чтобы эффективно работать совместно с kks. На каждый .S файл (кроме библиотеке simpleio_i686.S) он создаст цель для сборки. &lt;br /&gt;
После того как у вас в проекте появляется новый файл (например после &amp;lt;code&amp;gt;kks sync&amp;lt;/code&amp;gt;) нужно делать Reload Cmake project.&lt;br /&gt;
Выберите справа сверху интересующий вас файл и запускайте. &lt;br /&gt;
&lt;br /&gt;
====Подсветка синтаксиса====&lt;br /&gt;
Если она работает неправильно, откройте файл &amp;lt;code&amp;gt;simpleio_i686.S&amp;lt;/code&amp;gt;, нажмите на его вкладку в списке открытых файлов сверху правой кнопкой мыши и выберите &amp;quot;Associate file type&amp;quot;. В списке выберите Assembly Language.&lt;br /&gt;
&lt;br /&gt;
====Дебагер====&lt;br /&gt;
Дебагер работает из-коробки.&lt;br /&gt;
&lt;br /&gt;
Чтобы узнать значения регистра напишите в поле снизу строку $eax и нажмите на кнопку &amp;quot;+&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Yabloko ===&lt;br /&gt;
Для того чтобы собрать Yabloko вам потребуется &lt;br /&gt;
* Компилятор, который умеет собирать elf-файлы под архитектуру x86. В мире линукса для такого традиционно собирают ещё одну копию &amp;lt;code&amp;gt;gcc&amp;lt;/code&amp;gt; (и называют &amp;lt;code&amp;gt;x86_64-elf-gcc&amp;lt;/code&amp;gt;, чтобы не путаться), однако &amp;lt;code&amp;gt;clang&amp;lt;/code&amp;gt;, в отличие от &amp;lt;code&amp;gt;gcc&amp;lt;/code&amp;gt;, в стандартной поставке уже имеет кросс-компилятор и кросс-линкер, так что можно (пока в теории) использовать его.&lt;br /&gt;
* [https://www.qemu.org/download/ QEMU]&lt;br /&gt;
&lt;br /&gt;
Всё это вы можете получить локально, не зависимо от того, на какой вы ОС.&lt;br /&gt;
Если вы по какой-то причине решили использовать учебный (или любой другой) сервер, то не забывайте добавлять к команде ssh опцию -X, которая пробрасывает X-сервер, а также по настроению опцию -C, которая сжимает передаваемые данные. Если у вас не линукс, то в таком случае вам потребуется ещё и скачать и установить X-сервер. Для [https://www.xquartz.org/ MacOs]. Для [https://sourceforge.net/projects/xming/ windows]. Если вы пользуетесь Putty, то поставьте галочку в Connection -&amp;gt; SSH -&amp;gt; X11 -&amp;gt; Enable X11 forwarding.&lt;br /&gt;
&lt;br /&gt;
= Как устроен курс =&lt;br /&gt;
== Контрольные мероприятия ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Когда !! Что&lt;br /&gt;
|-&lt;br /&gt;
| В конце 1-го модуля || контрольная в формате экзамена&lt;br /&gt;
|-&lt;br /&gt;
| В конце 2-го модуля || экзамен&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Формула оценки ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;O&amp;lt;sub&amp;gt;АК&amp;lt;/sub&amp;gt; = 0.5 * H&amp;lt;sub&amp;gt;ejudge&amp;lt;/sub&amp;gt; + 0.05 * H&amp;lt;sub&amp;gt;семинары&amp;lt;/sub&amp;gt; + 0.15 * H&amp;lt;sub&amp;gt;контрольная&amp;lt;/sub&amp;gt; + 0.3 * Э&#039;&#039;&#039;&lt;br /&gt;
Все оценки кроме итоговой дробные с округлением до 2х знаков после запятой. Итоговая оценка округляется арифметически.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;H&amp;lt;sub&amp;gt;ejudge&amp;lt;/sub&amp;gt;&#039;&#039;&#039; - оценка за сданные задания в тестирующей системе Ejudge, выставляется согласно описанию ниже. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;H&amp;lt;sub&amp;gt;семинары&amp;lt;/sub&amp;gt;&#039;&#039;&#039; - оценка за семинары, выставляется согласно правилам озвученным вашим семинаристом.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;H&amp;lt;sub&amp;gt;контрольная&amp;lt;/sub&amp;gt;&#039;&#039;&#039; - оценка за контрольную работу в модуле 1.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Автомат&amp;quot;&#039;&#039;&#039; выдаётся, если оценки за ДЗ, контрольные и семинары не ниже некоторых пороговых значений, которые будут объявлены дополнительно.&lt;br /&gt;
&lt;br /&gt;
=== Формула рассчета оценки Ejudge ===&lt;br /&gt;
&lt;br /&gt;
Оценки будут ставиться исходя из процентного соотношения к полученным баллам, где&lt;br /&gt;
&lt;br /&gt;
1) Учитываются только бонусные и домашние контесты.&lt;br /&gt;
&lt;br /&gt;
2) За 100% считается сумма возмных максимальных баллов по всем домашним контестам&lt;br /&gt;
&lt;br /&gt;
3) По следующей шкале (оценка, процент). Оценки дробные, между соседними ячейками линейно:&lt;br /&gt;
&lt;br /&gt;
1 20&lt;br /&gt;
&lt;br /&gt;
2 30&lt;br /&gt;
&lt;br /&gt;
3 40&lt;br /&gt;
&lt;br /&gt;
4 50&lt;br /&gt;
&lt;br /&gt;
5 60&lt;br /&gt;
&lt;br /&gt;
6 70&lt;br /&gt;
&lt;br /&gt;
8 90&lt;br /&gt;
&lt;br /&gt;
9 95&lt;br /&gt;
&lt;br /&gt;
10 99&lt;br /&gt;
&lt;br /&gt;
== Прокторинг ==&lt;br /&gt;
&lt;br /&gt;
На контрольной работе и экзамене применяется селф-прокторинг (даже если вы находитесь в аудитории): необходимо сделать видеозапись, на которой видны ваш экран и ваше лицо во время решения задач. Микрофон тоже должен быть включён. В начале записи, пожалуйста, представьтесь. Запись необходимо будет выложить в любое облачное хранилище и сдать в ejudge ссылку на неё в течении нескольких часов после. Запись нужно хранить до выставления оценки за курс. Размер файла записи не должен сильно превышать 250 МБ. Помните, запись это ваше доказательство честности написанной работы. Инструкция по настройке ОБС появится позднее на вики. Рекомендуется качество не выше 720р и не ниже 360р&lt;br /&gt;
&lt;br /&gt;
На контрольной работе можно пользоваться любыми материалами, веб-сайтами и т. д., за исключением интерактивного общения с кем-либо (гуглить можно, а вот советоваться нельзя). Телеграм-канал курса, а также официальные чаты курса также явно разрешены. В канале могут появляться важные объявления, за ним рекомендуется следить.&lt;br /&gt;
&lt;br /&gt;
= Записи лекций =&lt;br /&gt;
&lt;br /&gt;
https://disk.yandex.ru/d/zl7DgU7FmuJKLg/%D0%90%D1%80%D1%85%D0%B8%D1%82%D0%B5%D0%BA%D1%82%D1%83%D1%80%D0%B0%20%D0%BA%D0%BE%D0%BC%D0%BF%D1%8C%D1%8E%D1%82%D0%B5%D1%80%D0%B0&lt;/div&gt;</summary>
		<author><name>Objatie groba</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=CAOS-2023/24&amp;diff=80970</id>
		<title>CAOS-2023/24</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=CAOS-2023/24&amp;diff=80970"/>
		<updated>2023-10-17T12:09:51Z</updated>

		<summary type="html">&lt;p&gt;Objatie groba: /* Формула рассчета оценки Ejudge */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Вход в тестирующую систему: https://caos2023.myltsev.ru&lt;br /&gt;
&lt;br /&gt;
Материалы лекций: https://caos.myltsev.ru/lectures/&lt;br /&gt;
&lt;br /&gt;
[https://caos2023.myltsev.ru/style.html Стиль оформления программ на Си]&lt;br /&gt;
&lt;br /&gt;
[https://t.me/+-RJj6i7NMaE1MWIy Чатик курса] &lt;br /&gt;
&lt;br /&gt;
[https://t.me/+duw-cU1uT4FjNzYy Канал с объявлениями]&lt;br /&gt;
&lt;br /&gt;
[https://forms.gle/AMBwLvi9mNPqvUjU7 Форма для фидбека]&lt;br /&gt;
&lt;br /&gt;
[https://exuberant-arthropod-be8.notion.site/21-22-0f236f7d03c74dfbbd945f93651758a2 Конспект лекций 2021 года от студентов]&lt;br /&gt;
&lt;br /&gt;
== Чатики и преподаватели по группам ==&lt;br /&gt;
Лектор — Александр Мыльцев [https://t.me/myltsev @myltsev]&lt;br /&gt;
&lt;br /&gt;
Старший семинарист - Игорь Минеев [https://t.me/objatie_groba @objatie_groba]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Группа !! Чатик !! Преподаватель !! Ассистенты&lt;br /&gt;
|-&lt;br /&gt;
| 221 || https://t.me/+CjBn9f0EY3ZiMmEy || [https://t.me/grphil Филипп Грибов] || [https://t.me/ddubrovin Дмитрий Дубровин], [https://t.me/gmusya Герман Перов]&lt;br /&gt;
|-&lt;br /&gt;
| 222 || https://t.me/+uCLKSieZ3z8zNjk6 || [https://t.me/objatie_groba Игорь Минеев] || [https://t.me/l0i4b Арсений Болотников], [https://t.me/dikirillov Даниил Кириллов]&lt;br /&gt;
|-&lt;br /&gt;
| 223 || https://t.me/+-kqneBWoAC1hZDEy || [https://t.me/youagain Сафронов Евгений]|| [https://t.me/Mathew_K Матвей Кривда], [https://t.me/sidorenko_ivan Иван Сидоренко]&lt;br /&gt;
|-&lt;br /&gt;
| 224 || https://t.me/+JGp5STNu3WYzOTRi || TODO || TODO&lt;br /&gt;
|-&lt;br /&gt;
| 225 || https://t.me/+98tf6UWUIGM1MmYy || TODO || TODO&lt;br /&gt;
|-&lt;br /&gt;
| 226 || https://t.me/cool_caos_226 || [https://t.me/iiixphillxiii Миша Филитов] || [https://t.me/Holpow Фёдор], [https://t.me/igreetyou Денис]&lt;br /&gt;
|-&lt;br /&gt;
| 227 || TODO || TODO || TODO&lt;br /&gt;
|-&lt;br /&gt;
| 228 || TODO || TODO || TODO&lt;br /&gt;
|-&lt;br /&gt;
| 229 || TODO || TODO || TODO&lt;br /&gt;
|-&lt;br /&gt;
| 2210 || https://t.me/+Is6t2SMMTptmMWUy || [https://t.me/atgshkasan Шитов Александр] || [https://t.me/JustUserOff Тигран], [https://t.me/idt005 Игорь]&lt;br /&gt;
|-&lt;br /&gt;
| СПБ ПМИ || https://t.me/+AC9G7J5_AS8zMjJi || [https://t.me/evlinsky Евгений Линский] || [https://t.me/mkornaukhov Михаил Корнаухов] [https://t.me/fizmat_sila Иван Пешков] [https://t.me/rusterrxd Александр Виноградов] [https://t.me/fonarmeister Илья Саранцев]&lt;br /&gt;
|-&lt;br /&gt;
| СПБ ПАДИИ || https://t.me/+BE67Oaii9G5hZGJi || [https://t.me/evlinsky Евгений Линский] || [https://t.me/mkornaukhov Михаил Корнаухов] [https://t.me/fizmat_sila Иван Пешков] [https://t.me/rusterrxd Александр Виноградов] [https://t.me/fonarmeister Илья Саранцев]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Настройка рабочего окружения =&lt;br /&gt;
===kks===&lt;br /&gt;
https://github.com/darkkeks/kks&lt;br /&gt;
&lt;br /&gt;
kks это консольная утилитка для курса, выполняющая много вещей, среди которых можно выделить несколько основных:&lt;br /&gt;
# Скачивание задач/сэмплов/контрольных с помощью одной команды. То же самое со сдачей задач: можно сдать и получить сразу результат. &lt;br /&gt;
# Генерация тестов с помощью скриптов и их тестирование.&lt;br /&gt;
# Просмотр рейтинга (как общего, так и по группам) в удобном формате&lt;br /&gt;
&lt;br /&gt;
Пример использования:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;kks sync  # скачивание задач&lt;br /&gt;
# тут вы написали свой код&lt;br /&gt;
kks test --sample  # тестирование&lt;br /&gt;
kks submit&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Больше примеров можно посмотреть в репозитории&lt;br /&gt;
===Библиотека ввода-вывода===&lt;br /&gt;
Библиотека ввода-вывода для ассемблера x86: [https://caos2023.myltsev.ru/simpleio_i686.S simpleio_i686.S]&lt;br /&gt;
&lt;br /&gt;
Все библиотечные функции не меняют значения регистров кроме указанных&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
call writei32   // напечатать на экране значение eax&lt;br /&gt;
                // как знаковое десятичное число&lt;br /&gt;
call readi32    // ввести с клавиатуры число и сохранить в eax&lt;br /&gt;
call readi64    // ввести с клавиатуры число и сохранить в edx:eax&lt;br /&gt;
call writei64   // вывести edx:eax&lt;br /&gt;
call finish     // завершить исполнение программы&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Внутри виртуальной машины её можно скачать командой &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;wget https://caos2023.myltsev.ru/simpleio_i686.S&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если получаете сообщение, что Wget не установлен на вашей системе (на Ubuntu Desktop по умолчанию нет), то установите его следующей командой: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;sudo apt install wget&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Виртуальная машина (VirtualBox)===&lt;br /&gt;
[https://caos2023.myltsev.ru/hse-caos-xubuntu.ova Образ виртуальной машины]&lt;br /&gt;
&lt;br /&gt;
Рекомендуется скачать образ и установить его в эмулятор [https://www.virtualbox.org/ VirtualBox]. Логин-пароль xubuntu/xubuntu, можно делать sudo.&lt;br /&gt;
&lt;br /&gt;
===Docker для пользователей MacOS (intel based)===&lt;br /&gt;
&#039;&#039;&#039;Проверялось на MacOS BigSur и Monterey&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Загрузить сам докер можно отсюда: [https://docs.docker.com/get-docker/ тык]&lt;br /&gt;
&lt;br /&gt;
Команда для запуска: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;docker run -it --rm -v `pwd`:/caos -w /caos ubuntu&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В терминале заходите в свою папку с акосом и запускаете эту команду. После нее вы начинаете работать с контейнером Ubuntu в папке /caos, где будет все содержимое вашей папки в основной ОС. &lt;br /&gt;
Изменять содержимое внутри /caos можно и изнутри контейнера, и снаружи, изменения будут видны и там и там.&lt;br /&gt;
&lt;br /&gt;
Внутри контейнера стоит установить gcc-multilib, без неё не заведётся: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;apt update &amp;amp;&amp;amp; apt install -y gcc-multilib&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь вы можете писать код внутри своей любимой IDE (запущенной напрямую в вашей ОС, например VSCode), а компилить и запускать в докере через терминал.&lt;br /&gt;
&lt;br /&gt;
===Docker для пользователей MacOS на Apple Silicon===&lt;br /&gt;
Добавьте в .bashrc или .zshrc:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;export DOCKER_DEFAULT_PLATFORM=linux/amd64&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После этого перезапустите Docker.&lt;br /&gt;
&lt;br /&gt;
Вариант2: &lt;br /&gt;
* Скачиваем docker.&lt;br /&gt;
* Переходим в папку с задачами в терминале.&lt;br /&gt;
* Выполняем &amp;lt;code&amp;gt;docker run --platform linux/amd64 -it --rm -v `pwd`:/caos -w /caos ubuntu&amp;lt;/code&amp;gt;&lt;br /&gt;
* Делаем &amp;lt;code&amp;gt;apt update&amp;lt;/code&amp;gt;&lt;br /&gt;
* Делаем &amp;lt;code&amp;gt; apt -y install build-essential gcc-multilib &amp;lt;/code&amp;gt;&lt;br /&gt;
* Собираем задачки командой &amp;lt;code&amp;gt;gcc -m32 -g задача.S simpleio_i686.S&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===CLion===&lt;br /&gt;
Для начала скачайте CLion с официального сайта и устанавите его.&lt;br /&gt;
====Если у вас не linux: вар. 1 - docker====&lt;br /&gt;
Скачайте и установите docker desktop. Добейтесь того, чтобы у вас заработал docker hello world (&amp;lt;code&amp;gt;docker run --rm hello-world&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Если у вас MacOs на арме&amp;lt;/b&amp;gt; сделайте то, что написано выше.&lt;br /&gt;
&lt;br /&gt;
После этого нам потребуется специальный образ с необходимыми для курса библиотеками и программами. &lt;br /&gt;
Создайте файл с именем Dockerfile и следующим содержанием:&lt;br /&gt;
&amp;lt;pre&amp;gt;FROM ubuntu:latest&lt;br /&gt;
&lt;br /&gt;
RUN apt update &amp;amp;&amp;amp; apt install -y gcc-multilib gdb make cmake g++&lt;br /&gt;
WORKDIR /caos&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В директории с этим запустите эту команду чтобы собрать образ: &amp;lt;code&amp;gt;docker build -t caos .&amp;lt;/code&amp;gt; и дождитесь пока она выполнится.&lt;br /&gt;
&lt;br /&gt;
После этого откройте окно настроек, перейдите в пункт Build, Execution, Deployment -&amp;gt; Toolchains и добавьте новый Toolchain с типом Docker.&lt;br /&gt;
В поле Image укажите &amp;lt;code&amp;gt;caos:latest&amp;lt;/code&amp;gt;, а остальные поля должны определиться автоматически. Поместите этот Toolchain первым в списке сделав его default&#039;ным.&lt;br /&gt;
&lt;br /&gt;
====Если у вас не linux: вар. 2 - wsl (Windows only)====&lt;br /&gt;
&lt;br /&gt;
Установите wsl 2, выберите дистрибутив Ubuntu.&lt;br /&gt;
Внутри wsl 2 поставьте необходимые пакеты (&amp;lt;code&amp;gt;sudo apt install gcc-multilib make cmake g++ gdb&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
После этого откройте окно настроек, перейдите в пункт Build, Execution, Deployment -&amp;gt; Toolchains и добавьте новый Toolchain с типом WSL.&lt;br /&gt;
Все поля должны определиться автоматически. Поместите этот Toolchain первым в списке сделав его default&#039;ным.&lt;br /&gt;
&lt;br /&gt;
====Далее====&lt;br /&gt;
Создайте проект (можете выбрать C Executable, но это не особо принципиально)&lt;br /&gt;
Скачайте simpleio_i686.S и поместите в корень проекта.&lt;br /&gt;
&lt;br /&gt;
В &amp;lt;code&amp;gt;CMakeLists.txt&amp;lt;/code&amp;gt; удалите всё и вставьте это:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake_minimum_required(VERSION 3.10)&lt;br /&gt;
project(caos ASM)&lt;br /&gt;
&lt;br /&gt;
add_compile_options(-m32)&lt;br /&gt;
add_link_options(-m32)&lt;br /&gt;
&lt;br /&gt;
file(GLOB_RECURSE sources_list LIST_DIRECTORIES true ./*)&lt;br /&gt;
foreach(file ${sources_list})&lt;br /&gt;
    IF(${file} MATCHES &amp;quot;.S$&amp;quot; AND NOT ${file} MATCHES &amp;quot;simpleio_i686.S&amp;quot;)&lt;br /&gt;
        get_filename_component(X ${file} NAME)&lt;br /&gt;
        add_executable(${X} ${file} simpleio_i686.S)&lt;br /&gt;
    endif()&lt;br /&gt;
endforeach()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сделайте Reload Cmake project (Внизу выберите вкладку Cmake и нажмите слева на кнопку обновления с двумя стрелочками).&lt;br /&gt;
&lt;br /&gt;
Этот конфиг написан таким образом, чтобы эффективно работать совместно с kks. На каждый .S файл (кроме библиотеке simpleio_i686.S) он создаст цель для сборки. &lt;br /&gt;
После того как у вас в проекте появляется новый файл (например после &amp;lt;code&amp;gt;kks sync&amp;lt;/code&amp;gt;) нужно делать Reload Cmake project.&lt;br /&gt;
Выберите справа сверху интересующий вас файл и запускайте. &lt;br /&gt;
&lt;br /&gt;
====Подсветка синтаксиса====&lt;br /&gt;
Если она работает неправильно, откройте файл &amp;lt;code&amp;gt;simpleio_i686.S&amp;lt;/code&amp;gt;, нажмите на его вкладку в списке открытых файлов сверху правой кнопкой мыши и выберите &amp;quot;Associate file type&amp;quot;. В списке выберите Assembly Language.&lt;br /&gt;
&lt;br /&gt;
====Дебагер====&lt;br /&gt;
Дебагер работает из-коробки.&lt;br /&gt;
&lt;br /&gt;
Чтобы узнать значения регистра напишите в поле снизу строку $eax и нажмите на кнопку &amp;quot;+&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Yabloko ===&lt;br /&gt;
Для того чтобы собрать Yabloko вам потребуется &lt;br /&gt;
* Компилятор, который умеет собирать elf-файлы под архитектуру x86. В мире линукса для такого традиционно собирают ещё одну копию &amp;lt;code&amp;gt;gcc&amp;lt;/code&amp;gt; (и называют &amp;lt;code&amp;gt;x86_64-elf-gcc&amp;lt;/code&amp;gt;, чтобы не путаться), однако &amp;lt;code&amp;gt;clang&amp;lt;/code&amp;gt;, в отличие от &amp;lt;code&amp;gt;gcc&amp;lt;/code&amp;gt;, в стандартной поставке уже имеет кросс-компилятор и кросс-линкер, так что можно (пока в теории) использовать его.&lt;br /&gt;
* [https://www.qemu.org/download/ QEMU]&lt;br /&gt;
&lt;br /&gt;
Всё это вы можете получить локально, не зависимо от того, на какой вы ОС.&lt;br /&gt;
Если вы по какой-то причине решили использовать учебный (или любой другой) сервер, то не забывайте добавлять к команде ssh опцию -X, которая пробрасывает X-сервер, а также по настроению опцию -C, которая сжимает передаваемые данные. Если у вас не линукс, то в таком случае вам потребуется ещё и скачать и установить X-сервер. Для [https://www.xquartz.org/ MacOs]. Для [https://sourceforge.net/projects/xming/ windows]. Если вы пользуетесь Putty, то поставьте галочку в Connection -&amp;gt; SSH -&amp;gt; X11 -&amp;gt; Enable X11 forwarding.&lt;br /&gt;
&lt;br /&gt;
= Как устроен курс =&lt;br /&gt;
== Контрольные мероприятия ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Когда !! Что&lt;br /&gt;
|-&lt;br /&gt;
| В конце 1-го модуля || контрольная в формате экзамена&lt;br /&gt;
|-&lt;br /&gt;
| В конце 2-го модуля || экзамен&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Формула оценки ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;O&amp;lt;sub&amp;gt;АК&amp;lt;/sub&amp;gt; = 0.5 * H&amp;lt;sub&amp;gt;ejudge&amp;lt;/sub&amp;gt; + 0.05 * H&amp;lt;sub&amp;gt;семинары&amp;lt;/sub&amp;gt; + 0.15 * H&amp;lt;sub&amp;gt;контрольная&amp;lt;/sub&amp;gt; + 0.3 * Э&#039;&#039;&#039;&lt;br /&gt;
Все оценки кроме итоговой дробные с округлением до 2х знаков после запятой. Итоговая оценка округляется арифметически.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;H&amp;lt;sub&amp;gt;ejudge&amp;lt;/sub&amp;gt;&#039;&#039;&#039; - оценка за сданные задания в тестирующей системе Ejudge, выставляется согласно описанию ниже. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;H&amp;lt;sub&amp;gt;семинары&amp;lt;/sub&amp;gt;&#039;&#039;&#039; - оценка за семинары, выставляется согласно правилам озвученным вашим семинаристом.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;H&amp;lt;sub&amp;gt;контрольная&amp;lt;/sub&amp;gt;&#039;&#039;&#039; - оценка за контрольную работу в модуле 1.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Автомат&amp;quot;&#039;&#039;&#039; выдаётся, если оценки за ДЗ, контрольные и семинары не ниже некоторых пороговых значений, которые будут объявлены дополнительно.&lt;br /&gt;
&lt;br /&gt;
=== Формула рассчета оценки Ejudge ===&lt;br /&gt;
&lt;br /&gt;
Оценки будут ставиться исходя из процентного соотношения к полученным баллам, где&lt;br /&gt;
&lt;br /&gt;
1) Учитываются только бонусные и домашние контесты.&lt;br /&gt;
&lt;br /&gt;
2) За 100% считается сумма возмных максимальных баллов по всем домашним контестам&lt;br /&gt;
&lt;br /&gt;
3) По следующей шкале (оценка, процент). Оценки дробные, между соседними ячейками линейно:&lt;br /&gt;
&lt;br /&gt;
1 20&lt;br /&gt;
2 30&lt;br /&gt;
3 40&lt;br /&gt;
4 50&lt;br /&gt;
5 60&lt;br /&gt;
6 70&lt;br /&gt;
8 90&lt;br /&gt;
9 95&lt;br /&gt;
10 99&lt;br /&gt;
&lt;br /&gt;
== Прокторинг ==&lt;br /&gt;
&lt;br /&gt;
На контрольной работе и экзамене применяется селф-прокторинг (даже если вы находитесь в аудитории): необходимо сделать видеозапись, на которой видны ваш экран и ваше лицо во время решения задач. Микрофон тоже должен быть включён. В начале записи, пожалуйста, представьтесь. Запись необходимо будет выложить в любое облачное хранилище и сдать в ejudge ссылку на неё в течении нескольких часов после. Запись нужно хранить до выставления оценки за курс. Размер файла записи не должен сильно превышать 250 МБ. Помните, запись это ваше доказательство честности написанной работы. Инструкция по настройке ОБС появится позднее на вики. Рекомендуется качество не выше 720р и не ниже 360р&lt;br /&gt;
&lt;br /&gt;
На контрольной работе можно пользоваться любыми материалами, веб-сайтами и т. д., за исключением интерактивного общения с кем-либо (гуглить можно, а вот советоваться нельзя). Телеграм-канал курса, а также официальные чаты курса также явно разрешены. В канале могут появляться важные объявления, за ним рекомендуется следить.&lt;br /&gt;
&lt;br /&gt;
= Записи лекций =&lt;br /&gt;
&lt;br /&gt;
https://disk.yandex.ru/d/zl7DgU7FmuJKLg/%D0%90%D1%80%D1%85%D0%B8%D1%82%D0%B5%D0%BA%D1%82%D1%83%D1%80%D0%B0%20%D0%BA%D0%BE%D0%BC%D0%BF%D1%8C%D1%8E%D1%82%D0%B5%D1%80%D0%B0&lt;/div&gt;</summary>
		<author><name>Objatie groba</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=CAOS-2023/24&amp;diff=80600</id>
		<title>CAOS-2023/24</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=CAOS-2023/24&amp;diff=80600"/>
		<updated>2023-10-06T17:00:51Z</updated>

		<summary type="html">&lt;p&gt;Objatie groba: /* Записи лекций */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Вход в тестирующую систему: https://caos2023.myltsev.ru&lt;br /&gt;
&lt;br /&gt;
Материалы лекций: https://caos.myltsev.ru/lectures/&lt;br /&gt;
&lt;br /&gt;
[https://caos2023.myltsev.ru/style.html Стиль оформления программ на Си]&lt;br /&gt;
&lt;br /&gt;
[https://t.me/+-RJj6i7NMaE1MWIy Чатик курса] &lt;br /&gt;
&lt;br /&gt;
[https://t.me/+duw-cU1uT4FjNzYy Канал с объявлениями]&lt;br /&gt;
&lt;br /&gt;
[https://forms.gle/AMBwLvi9mNPqvUjU7 Форма для фидбека]&lt;br /&gt;
&lt;br /&gt;
[https://exuberant-arthropod-be8.notion.site/21-22-0f236f7d03c74dfbbd945f93651758a2 Конспект лекций 2021 года от студентов]&lt;br /&gt;
&lt;br /&gt;
== Чатики и преподаватели по группам ==&lt;br /&gt;
Лектор — Александр Мыльцев [https://t.me/myltsev @myltsev]&lt;br /&gt;
&lt;br /&gt;
Старший семинарист - Игорь Минеев [https://t.me/objatie_groba @objatie_groba]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Группа !! Чатик !! Преподаватель !! Ассистенты&lt;br /&gt;
|-&lt;br /&gt;
| 221 || https://t.me/+CjBn9f0EY3ZiMmEy || [https://t.me/grphil Филипп Грибов] || [https://t.me/ddubrovin Дмитрий Дубровин], [https://t.me/gmusya Герман Перов]&lt;br /&gt;
|-&lt;br /&gt;
| 222 || https://t.me/+uCLKSieZ3z8zNjk6 || [https://t.me/objatie_groba Игорь Минеев] || [https://t.me/l0i4b Арсений Болотников], [https://t.me/dikirillov Даниил Кириллов]&lt;br /&gt;
|-&lt;br /&gt;
| 223 || https://t.me/+-kqneBWoAC1hZDEy || [https://t.me/youagain Сафронов Евгений]|| [https://t.me/Mathew_K Матвей Кривда], [https://t.me/sidorenko_ivan Иван Сидоренко]&lt;br /&gt;
|-&lt;br /&gt;
| 224 || https://t.me/+JGp5STNu3WYzOTRi || TODO || TODO&lt;br /&gt;
|-&lt;br /&gt;
| 225 || https://t.me/+98tf6UWUIGM1MmYy || TODO || TODO&lt;br /&gt;
|-&lt;br /&gt;
| 226 || https://t.me/cool_caos_226 || [https://t.me/iiixphillxiii Миша Филитов] || [https://t.me/Holpow Фёдор], [https://t.me/igreetyou Денис]&lt;br /&gt;
|-&lt;br /&gt;
| 227 || TODO || TODO || TODO&lt;br /&gt;
|-&lt;br /&gt;
| 228 || TODO || TODO || TODO&lt;br /&gt;
|-&lt;br /&gt;
| 229 || TODO || TODO || TODO&lt;br /&gt;
|-&lt;br /&gt;
| 2210 || https://t.me/+Is6t2SMMTptmMWUy || [https://t.me/atgshkasan Шитов Александр] || [https://t.me/JustUserOff Тигран], [https://t.me/idt005 Игорь]&lt;br /&gt;
|-&lt;br /&gt;
| СПБ ПМИ || https://t.me/+AC9G7J5_AS8zMjJi || [https://t.me/evlinsky Евгений Линский] || [https://t.me/mkornaukhov Михаил Корнаухов] [https://t.me/fizmat_sila Иван Пешков] [https://t.me/rusterrxd Александр Виноградов] [https://t.me/fonarmeister Илья Саранцев]&lt;br /&gt;
|-&lt;br /&gt;
| СПБ ПАДИИ || https://t.me/+BE67Oaii9G5hZGJi || [https://t.me/evlinsky Евгений Линский] || [https://t.me/mkornaukhov Михаил Корнаухов] [https://t.me/fizmat_sila Иван Пешков] [https://t.me/rusterrxd Александр Виноградов] [https://t.me/fonarmeister Илья Саранцев]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Настройка рабочего окружения =&lt;br /&gt;
===kks===&lt;br /&gt;
https://github.com/darkkeks/kks&lt;br /&gt;
&lt;br /&gt;
kks это консольная утилитка для курса, выполняющая много вещей, среди которых можно выделить несколько основных:&lt;br /&gt;
# Скачивание задач/сэмплов/контрольных с помощью одной команды. То же самое со сдачей задач: можно сдать и получить сразу результат. &lt;br /&gt;
# Генерация тестов с помощью скриптов и их тестирование.&lt;br /&gt;
# Просмотр рейтинга (как общего, так и по группам) в удобном формате&lt;br /&gt;
&lt;br /&gt;
Пример использования:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;kks sync  # скачивание задач&lt;br /&gt;
# тут вы написали свой код&lt;br /&gt;
kks test --sample  # тестирование&lt;br /&gt;
kks submit&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Больше примеров можно посмотреть в репозитории&lt;br /&gt;
===Библиотека ввода-вывода===&lt;br /&gt;
Библиотека ввода-вывода для ассемблера x86: [https://caos2023.myltsev.ru/simpleio_i686.S simpleio_i686.S]&lt;br /&gt;
&lt;br /&gt;
Все библиотечные функции не меняют значения регистров кроме указанных&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
call writei32   // напечатать на экране значение eax&lt;br /&gt;
                // как знаковое десятичное число&lt;br /&gt;
call readi32    // ввести с клавиатуры число и сохранить в eax&lt;br /&gt;
call readi64    // ввести с клавиатуры число и сохранить в edx:eax&lt;br /&gt;
call writei64   // вывести edx:eax&lt;br /&gt;
call finish     // завершить исполнение программы&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Внутри виртуальной машины её можно скачать командой &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;wget https://caos2023.myltsev.ru/simpleio_i686.S&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если получаете сообщение, что Wget не установлен на вашей системе (на Ubuntu Desktop по умолчанию нет), то установите его следующей командой: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;sudo apt install wget&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Виртуальная машина (VirtualBox)===&lt;br /&gt;
[https://caos2023.myltsev.ru/hse-caos-xubuntu.ova Образ виртуальной машины]&lt;br /&gt;
&lt;br /&gt;
Рекомендуется скачать образ и установить его в эмулятор [https://www.virtualbox.org/ VirtualBox]. Логин-пароль xubuntu/xubuntu, можно делать sudo.&lt;br /&gt;
&lt;br /&gt;
===Docker для пользователей MacOS (intel based)===&lt;br /&gt;
&#039;&#039;&#039;Проверялось на MacOS BigSur и Monterey&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Загрузить сам докер можно отсюда: [https://docs.docker.com/get-docker/ тык]&lt;br /&gt;
&lt;br /&gt;
Команда для запуска: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;docker run -it --rm -v `pwd`:/caos -w /caos ubuntu&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В терминале заходите в свою папку с акосом и запускаете эту команду. После нее вы начинаете работать с контейнером Ubuntu в папке /caos, где будет все содержимое вашей папки в основной ОС. &lt;br /&gt;
Изменять содержимое внутри /caos можно и изнутри контейнера, и снаружи, изменения будут видны и там и там.&lt;br /&gt;
&lt;br /&gt;
Внутри контейнера стоит установить gcc-multilib, без неё не заведётся: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;apt update &amp;amp;&amp;amp; apt install -y gcc-multilib&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь вы можете писать код внутри своей любимой IDE (запущенной напрямую в вашей ОС, например VSCode), а компилить и запускать в докере через терминал.&lt;br /&gt;
&lt;br /&gt;
===Docker для пользователей MacOS на Apple Silicon===&lt;br /&gt;
Добавьте в .bashrc или .zshrc:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;export DOCKER_DEFAULT_PLATFORM=linux/amd64&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После этого перезапустите Docker.&lt;br /&gt;
&lt;br /&gt;
Вариант2: &lt;br /&gt;
* Скачиваем docker.&lt;br /&gt;
* Переходим в папку с задачами в терминале.&lt;br /&gt;
* Выполняем &amp;lt;code&amp;gt;docker run --platform linux/amd64 -it --rm -v `pwd`:/caos -w /caos ubuntu&amp;lt;/code&amp;gt;&lt;br /&gt;
* Делаем &amp;lt;code&amp;gt;apt update&amp;lt;/code&amp;gt;&lt;br /&gt;
* Делаем &amp;lt;code&amp;gt; apt -y install build-essential gcc-multilib &amp;lt;/code&amp;gt;&lt;br /&gt;
* Собираем задачки командой &amp;lt;code&amp;gt;gcc -m32 -g задача.S simpleio_i686.S&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===CLion===&lt;br /&gt;
Для начала скачайте CLion с официального сайта и устанавите его.&lt;br /&gt;
====Если у вас не linux: вар. 1 - docker====&lt;br /&gt;
Скачайте и установите docker desktop. Добейтесь того, чтобы у вас заработал docker hello world (&amp;lt;code&amp;gt;docker run --rm hello-world&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Если у вас MacOs на арме&amp;lt;/b&amp;gt; сделайте то, что написано выше.&lt;br /&gt;
&lt;br /&gt;
После этого нам потребуется специальный образ с необходимыми для курса библиотеками и программами. &lt;br /&gt;
Создайте файл с именем Dockerfile и следующим содержанием:&lt;br /&gt;
&amp;lt;pre&amp;gt;FROM ubuntu:latest&lt;br /&gt;
&lt;br /&gt;
RUN apt update &amp;amp;&amp;amp; apt install -y gcc-multilib gdb make cmake g++&lt;br /&gt;
WORKDIR /caos&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В директории с этим запустите эту команду чтобы собрать образ: &amp;lt;code&amp;gt;docker build -t caos .&amp;lt;/code&amp;gt; и дождитесь пока она выполнится.&lt;br /&gt;
&lt;br /&gt;
После этого откройте окно настроек, перейдите в пункт Build, Execution, Deployment -&amp;gt; Toolchains и добавьте новый Toolchain с типом Docker.&lt;br /&gt;
В поле Image укажите &amp;lt;code&amp;gt;caos:latest&amp;lt;/code&amp;gt;, а остальные поля должны определиться автоматически. Поместите этот Toolchain первым в списке сделав его default&#039;ным.&lt;br /&gt;
&lt;br /&gt;
====Если у вас не linux: вар. 2 - wsl (Windows only)====&lt;br /&gt;
&lt;br /&gt;
Установите wsl 2, выберите дистрибутив Ubuntu.&lt;br /&gt;
Внутри wsl 2 поставьте необходимые пакеты (&amp;lt;code&amp;gt;sudo apt install gcc-multilib make cmake g++ gdb&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
После этого откройте окно настроек, перейдите в пункт Build, Execution, Deployment -&amp;gt; Toolchains и добавьте новый Toolchain с типом WSL.&lt;br /&gt;
Все поля должны определиться автоматически. Поместите этот Toolchain первым в списке сделав его default&#039;ным.&lt;br /&gt;
&lt;br /&gt;
====Далее====&lt;br /&gt;
Создайте проект (можете выбрать C Executable, но это не особо принципиально)&lt;br /&gt;
Скачайте simpleio_i686.S и поместите в корень проекта.&lt;br /&gt;
&lt;br /&gt;
В &amp;lt;code&amp;gt;CMakeLists.txt&amp;lt;/code&amp;gt; удалите всё и вставьте это:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake_minimum_required(VERSION 3.10)&lt;br /&gt;
project(caos ASM)&lt;br /&gt;
&lt;br /&gt;
add_compile_options(-m32)&lt;br /&gt;
add_link_options(-m32)&lt;br /&gt;
&lt;br /&gt;
file(GLOB_RECURSE sources_list LIST_DIRECTORIES true ./*)&lt;br /&gt;
foreach(file ${sources_list})&lt;br /&gt;
    IF(${file} MATCHES &amp;quot;.S$&amp;quot; AND NOT ${file} MATCHES &amp;quot;simpleio_i686.S&amp;quot;)&lt;br /&gt;
        get_filename_component(X ${file} NAME)&lt;br /&gt;
        add_executable(${X} ${file} simpleio_i686.S)&lt;br /&gt;
    endif()&lt;br /&gt;
endforeach()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сделайте Reload Cmake project (Внизу выберите вкладку Cmake и нажмите слева на кнопку обновления с двумя стрелочками).&lt;br /&gt;
&lt;br /&gt;
Этот конфиг написан таким образом, чтобы эффективно работать совместно с kks. На каждый .S файл (кроме библиотеке simpleio_i686.S) он создаст цель для сборки. &lt;br /&gt;
После того как у вас в проекте появляется новый файл (например после &amp;lt;code&amp;gt;kks sync&amp;lt;/code&amp;gt;) нужно делать Reload Cmake project.&lt;br /&gt;
Выберите справа сверху интересующий вас файл и запускайте. &lt;br /&gt;
&lt;br /&gt;
====Подсветка синтаксиса====&lt;br /&gt;
Если она работает не правильно, откройте файл &amp;lt;code&amp;gt;simpleio_i686.S&amp;lt;/code&amp;gt;, нажмите на его вкладку в списке открытых файлов сверху правой кнопкой мыши и выберите &amp;quot;Associate file type&amp;quot;. В списке выберите Assembly Language.&lt;br /&gt;
&lt;br /&gt;
====Дебагер====&lt;br /&gt;
Дебагер работает из-коробки.&lt;br /&gt;
&lt;br /&gt;
Чтобы узнать значения регистра напишите в поле снизу строку $eax и нажмите на кнопку &amp;quot;+&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Yabloko ===&lt;br /&gt;
Для того чтобы собрать Yabloko вам потребуется &lt;br /&gt;
* Компилятор, который умеет собирать elf-файлы под архитектуру x86. В мире линукса для такого традиционно собирают ещё одну копию &amp;lt;code&amp;gt;gcc&amp;lt;/code&amp;gt; (и называют &amp;lt;code&amp;gt;x86_64-elf-gcc&amp;lt;/code&amp;gt;, чтобы не путаться), однако &amp;lt;code&amp;gt;clang&amp;lt;/code&amp;gt;, в отличие от &amp;lt;code&amp;gt;gcc&amp;lt;/code&amp;gt;, в стандартной поставке уже имеет кросс-компилятор и кросс-линкер, так что можно (пока в теории) использовать его.&lt;br /&gt;
* [https://www.qemu.org/download/ QEMU]&lt;br /&gt;
&lt;br /&gt;
Всё это вы можете получить локально, не зависимо от того, на какой вы ОС.&lt;br /&gt;
Если вы по какой-то причине решили использовать учебный (или любой другой) сервер, то не забывайте добавлять к команде ssh опцию -X, которая пробрасывает X-сервер, а также по настроению опцию -C, которая сжимает передаваемые данные. Если у вас не линукс, то в таком случае вам потребуется ещё и скачать и установить X-сервер. Для [https://www.xquartz.org/ MacOs]. Для [https://sourceforge.net/projects/xming/ windows]. Если вы пользуетесь Putty, то поставьте галочку в Connection -&amp;gt; SSH -&amp;gt; X11 -&amp;gt; Enable X11 forwarding.&lt;br /&gt;
&lt;br /&gt;
= Как устроен курс =&lt;br /&gt;
== Контрольные мероприятия ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Когда !! Что&lt;br /&gt;
|-&lt;br /&gt;
| В конце 1-го модуля || контрольная в формате экзамена&lt;br /&gt;
|-&lt;br /&gt;
| В конце 2-го модуля || экзамен&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Формула оценки ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;O&amp;lt;sub&amp;gt;АК&amp;lt;/sub&amp;gt; = 0.5 * H&amp;lt;sub&amp;gt;ejudge&amp;lt;/sub&amp;gt; + 0.05 * H&amp;lt;sub&amp;gt;семинары&amp;lt;/sub&amp;gt; + 0.15 * H&amp;lt;sub&amp;gt;контрольная&amp;lt;/sub&amp;gt; + 0.3 * Э&#039;&#039;&#039;&lt;br /&gt;
Все оценки кроме итоговой дробные с округлением до 2х знаков после запятой. Итоговая оценка округляется арифметически.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;H&amp;lt;sub&amp;gt;ejudge&amp;lt;/sub&amp;gt;&#039;&#039;&#039; - оценка за сданные задания в тестирующей системе Ejudge, выставляется согласно описанию ниже. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;H&amp;lt;sub&amp;gt;семинары&amp;lt;/sub&amp;gt;&#039;&#039;&#039; - оценка за семинары, выставляется согласно правилам озвученным вашим семинаристом.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;H&amp;lt;sub&amp;gt;контрольная&amp;lt;/sub&amp;gt;&#039;&#039;&#039; - оценка за контрольную работу в модуле 1.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Автомат&amp;quot;&#039;&#039;&#039; выдаётся, если оценки за ДЗ, контрольные и семинары не ниже некоторых пороговых значений, которые будут объявлены дополнительно.&lt;br /&gt;
&lt;br /&gt;
=== Формула рассчета оценки Ejudge ===&lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
== Прокторинг ==&lt;br /&gt;
&lt;br /&gt;
На контрольной работе и экзамене применяется селф-прокторинг (даже если вы находитесь в аудитории): необходимо сделать видеозапись, на которой видны ваш экран и ваше лицо во время решения задач. Микрофон тоже должен быть включён. В начале записи, пожалуйста, представьтесь. Запись необходимо будет выложить в любое облачное хранилище и сдать в ejudge ссылку на неё в течении нескольких часов после. Запись нужно хранить до выставления оценки за курс. Размер файла записи не должен сильно превышать 250 МБ. Помните, запись это ваше доказательство честности написанной работы. Инструкция по настройке ОБС появится позднее на вики. Рекомендуется качество не выше 720р и не ниже 360р&lt;br /&gt;
&lt;br /&gt;
На контрольной работе можно пользоваться любыми материалами, веб-сайтами и т. д., за исключением интерактивного общения с кем-либо (гуглить можно, а вот советоваться нельзя). Телеграм-канал курса, а также официальные чаты курса также явно разрешены. В канале могут появляться важные объявления, за ним рекомендуется следить.&lt;br /&gt;
&lt;br /&gt;
= Записи лекций =&lt;br /&gt;
&lt;br /&gt;
https://disk.yandex.ru/d/zl7DgU7FmuJKLg/%D0%90%D1%80%D1%85%D0%B8%D1%82%D0%B5%D0%BA%D1%82%D1%83%D1%80%D0%B0%20%D0%BA%D0%BE%D0%BC%D0%BF%D1%8C%D1%8E%D1%82%D0%B5%D1%80%D0%B0&lt;/div&gt;</summary>
		<author><name>Objatie groba</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=CAOS-2023/24&amp;diff=79836</id>
		<title>CAOS-2023/24</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=CAOS-2023/24&amp;diff=79836"/>
		<updated>2023-09-15T21:41:21Z</updated>

		<summary type="html">&lt;p&gt;Objatie groba: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Вход в тестирующую систему: https://caos2023.myltsev.ru&lt;br /&gt;
&lt;br /&gt;
Материалы лекций: https://caos.myltsev.ru/lectures/&lt;br /&gt;
&lt;br /&gt;
[https://caos2023.myltsev.ru/style.html Стиль оформления программ на Си]&lt;br /&gt;
&lt;br /&gt;
[https://t.me/+-RJj6i7NMaE1MWIy Чатик курса] &lt;br /&gt;
&lt;br /&gt;
[https://t.me/+duw-cU1uT4FjNzYy Канал с объявлениями]&lt;br /&gt;
&lt;br /&gt;
[https://forms.gle/AMBwLvi9mNPqvUjU7 Форма для фидбека]&lt;br /&gt;
&lt;br /&gt;
[https://exuberant-arthropod-be8.notion.site/21-22-0f236f7d03c74dfbbd945f93651758a2 Конспект лекций 2021 года от студентов]&lt;br /&gt;
&lt;br /&gt;
== Чатики и преподаватели по группам ==&lt;br /&gt;
Лектор — Александр Мыльцев [https://t.me/myltsev @myltsev]&lt;br /&gt;
&lt;br /&gt;
Старший семинарист - Игорь Минеев [https://t.me/objatie_groba @objatie_groba]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Группа !! Чатик !! Преподаватель !! Ассистенты&lt;br /&gt;
|-&lt;br /&gt;
| 221 || https://t.me/+CjBn9f0EY3ZiMmEy || [https://t.me/grphil Филипп Грибов] || [https://t.me/ddubrovin Дмитрий Дубровин], [https://t.me/gmusya Герман Перов]&lt;br /&gt;
|-&lt;br /&gt;
| 222 || https://t.me/+uCLKSieZ3z8zNjk6 || [https://t.me/objatie_groba Игорь Минеев] || [https://t.me/l0i4b Арсений Болотников], [https://t.me/dikirillov Даниил Кириллов]&lt;br /&gt;
|-&lt;br /&gt;
| 223 || https://t.me/+-kqneBWoAC1hZDEy || [https://t.me/youagain Сафронов Евгений]|| [https://t.me/Mathew_K Матвей Кривда], [https://t.me/sidorenko_ivan Иван Сидоренко]&lt;br /&gt;
|-&lt;br /&gt;
| 224 || https://t.me/+JGp5STNu3WYzOTRi || TODO || TODO&lt;br /&gt;
|-&lt;br /&gt;
| 225 || https://t.me/+98tf6UWUIGM1MmYy || TODO || TODO&lt;br /&gt;
|-&lt;br /&gt;
| 226 || https://t.me/cool_caos_226 || [https://t.me/iiixphillxiii Миша Филитов] || [https://t.me/Holpow Фёдор], [https://t.me/igreetyou Денис]&lt;br /&gt;
|-&lt;br /&gt;
| 227 || TODO || TODO || TODO&lt;br /&gt;
|-&lt;br /&gt;
| 228 || TODO || TODO || TODO&lt;br /&gt;
|-&lt;br /&gt;
| 229 || TODO || TODO || TODO&lt;br /&gt;
|-&lt;br /&gt;
| 2210 || https://t.me/+Is6t2SMMTptmMWUy || [https://t.me/atgshkasan Шитов Александр] || [https://t.me/JustUserOff Тигран], [https://t.me/idt005 Игорь]&lt;br /&gt;
|-&lt;br /&gt;
| СПБ ПМИ || https://t.me/+AC9G7J5_AS8zMjJi || [https://t.me/evlinsky Евгений Линский] || [https://t.me/mkornaukhov Михаил Корнаухов] [https://t.me/fizmat_sila Иван Пешков] [https://t.me/rusterrxd Александр Виноградов] [https://t.me/fonarmeister Илья Саранцев]&lt;br /&gt;
|-&lt;br /&gt;
| СПБ ПАДИИ || https://t.me/+BE67Oaii9G5hZGJi || [https://t.me/evlinsky Евгений Линский] || [https://t.me/mkornaukhov Михаил Корнаухов] [https://t.me/fizmat_sila Иван Пешков] [https://t.me/rusterrxd Александр Виноградов] [https://t.me/fonarmeister Илья Саранцев]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Настройка рабочего окружения =&lt;br /&gt;
===kks===&lt;br /&gt;
https://github.com/darkkeks/kks&lt;br /&gt;
&lt;br /&gt;
kks это консольная утилитка для курса, выполняющая много вещей, среди которых можно выделить несколько основных:&lt;br /&gt;
# Скачивание задач/сэмплов/контрольных с помощью одной команды. То же самое со сдачей задач: можно сдать и получить сразу результат. &lt;br /&gt;
# Генерация тестов с помощью скриптов и их тестирование.&lt;br /&gt;
# Просмотр рейтинга (как общего, так и по группам) в удобном формате&lt;br /&gt;
&lt;br /&gt;
Пример использования:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;kks sync  # скачивание задач&lt;br /&gt;
# тут вы написали свой код&lt;br /&gt;
kks test --sample  # тестирование&lt;br /&gt;
kks submit&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Больше примеров можно посмотреть в репозитории&lt;br /&gt;
===Библиотека ввода-вывода===&lt;br /&gt;
Библиотека ввода-вывода для ассемблера x86: [https://caos2023.myltsev.ru/simpleio_i686.S simpleio_i686.S]&lt;br /&gt;
&lt;br /&gt;
Все библиотечные функции не меняют значения регистров кроме указанных&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
call writei32   // напечатать на экране значение eax&lt;br /&gt;
                // как знаковое десятичное число&lt;br /&gt;
call readi32    // ввести с клавиатуры число и сохранить в eax&lt;br /&gt;
call readi64    // ввести с клавиатуры число и сохранить в edx:eax&lt;br /&gt;
call writei64   // вывести edx:eax&lt;br /&gt;
call finish     // завершить исполнение программы&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Внутри виртуальной машины её можно скачать командой &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;wget https://caos2023.myltsev.ru/simpleio_i686.S&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если получаете сообщение, что Wget не установлен на вашей системе (на Ubuntu Desktop по умолчанию нет), то установите его следующей командой: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;sudo apt install wget&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Виртуальная машина (VirtualBox)===&lt;br /&gt;
[https://caos2023.myltsev.ru/hse-caos-xubuntu.ova Образ виртуальной машины]&lt;br /&gt;
&lt;br /&gt;
Рекомендуется скачать образ и установить его в эмулятор [https://www.virtualbox.org/ VirtualBox]. Логин-пароль xubuntu/xubuntu, можно делать sudo.&lt;br /&gt;
&lt;br /&gt;
===Docker для пользователей MacOS (intel based)===&lt;br /&gt;
&#039;&#039;&#039;Проверялось на MacOS BigSur и Monterey&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Загрузить сам докер можно отсюда: [https://docs.docker.com/get-docker/ тык]&lt;br /&gt;
&lt;br /&gt;
Команда для запуска: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;docker run -it --rm -v `pwd`:/caos -w /caos ubuntu&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В терминале заходите в свою папку с акосом и запускаете эту команду. После нее вы начинаете работать с контейнером Ubuntu в папке /caos, где будет все содержимое вашей папки в основной ОС. &lt;br /&gt;
Изменять содержимое внутри /caos можно и изнутри контейнера, и снаружи, изменения будут видны и там и там.&lt;br /&gt;
&lt;br /&gt;
Внутри контейнера стоит установить gcc-multilib, без неё не заведётся: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;apt update &amp;amp;&amp;amp; apt install -y gcc-multilib&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь вы можете писать код внутри своей любимой IDE (запущенной напрямую в вашей ОС, например VSCode), а компилить и запускать в докере через терминал.&lt;br /&gt;
&lt;br /&gt;
===Docker для пользователей MacOS на Apple Silicon===&lt;br /&gt;
Добавьте в .bashrc или .zshrc:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;export DOCKER_DEFAULT_PLATFORM=linux/amd64&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После этого перезапустите Docker.&lt;br /&gt;
&lt;br /&gt;
Вариант2: &lt;br /&gt;
* Скачиваем docker.&lt;br /&gt;
* Переходим в папку с задачами в терминале.&lt;br /&gt;
* Выполняем &amp;lt;code&amp;gt;docker run --platform linux/amd64 -it --rm -v `pwd`:/caos -w /caos ubuntu&amp;lt;/code&amp;gt;&lt;br /&gt;
* Делаем &amp;lt;code&amp;gt;apt update&amp;lt;/code&amp;gt;&lt;br /&gt;
* Делаем &amp;lt;code&amp;gt; apt -y install build-essential gcc-multilib &amp;lt;/code&amp;gt;&lt;br /&gt;
* Собираем задачки командой &amp;lt;code&amp;gt;gcc -m32 -g задача.S simpleio_i686.S&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===CLion===&lt;br /&gt;
Для начала скачайте CLion с официального сайта и устанавите его.&lt;br /&gt;
====Если у вас не linux: вар. 1 - docker====&lt;br /&gt;
Скачайте и установите docker desktop. Добейтесь того, чтобы у вас заработал docker hello world (&amp;lt;code&amp;gt;docker run --rm hello-world&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Если у вас MacOs на арме&amp;lt;/b&amp;gt; сделайте то, что написано выше.&lt;br /&gt;
&lt;br /&gt;
После этого нам потребуется специальный образ с необходимыми для курса библиотеками и программами. &lt;br /&gt;
Создайте файл с именем Dockerfile и следующим содержанием:&lt;br /&gt;
&amp;lt;pre&amp;gt;FROM ubuntu:latest&lt;br /&gt;
&lt;br /&gt;
RUN apt update &amp;amp;&amp;amp; apt install -y gcc-multilib gdb make cmake g++&lt;br /&gt;
WORKDIR /caos&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В директории с этим запустите эту команду чтобы собрать образ: &amp;lt;code&amp;gt;docker build -t caos .&amp;lt;/code&amp;gt; и дождитесь пока она выполнится.&lt;br /&gt;
&lt;br /&gt;
После этого откройте окно настроек, перейдите в пункт Build, Execution, Deployment -&amp;gt; Toolchains и добавьте новый Toolchain с типом Docker.&lt;br /&gt;
В поле Image укажите &amp;lt;code&amp;gt;caos:latest&amp;lt;/code&amp;gt;, а остальные поля должны определиться автоматически. Поместите этот Toolchain первым в списке сделав его default&#039;ным.&lt;br /&gt;
&lt;br /&gt;
====Если у вас не linux: вар. 2 - wsl (Windows only)====&lt;br /&gt;
&lt;br /&gt;
Установите wsl 2, выберите дистрибутив Ubuntu.&lt;br /&gt;
Внутри wsl 2 поставьте необходимые пакеты (&amp;lt;code&amp;gt;sudo apt install gcc-multilib make cmake g++ gdb&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
После этого откройте окно настроек, перейдите в пункт Build, Execution, Deployment -&amp;gt; Toolchains и добавьте новый Toolchain с типом WSL.&lt;br /&gt;
Все поля должны определиться автоматически. Поместите этот Toolchain первым в списке сделав его default&#039;ным.&lt;br /&gt;
&lt;br /&gt;
====Далее====&lt;br /&gt;
Создайте проект (можете выбрать C Executable, но это не особо принципиально)&lt;br /&gt;
Скачайте simpleio_i686.S и поместите в корень проекта.&lt;br /&gt;
&lt;br /&gt;
В &amp;lt;code&amp;gt;CMakeLists.txt&amp;lt;/code&amp;gt; удалите всё и вставьте это:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake_minimum_required(VERSION 3.10)&lt;br /&gt;
project(caos ASM)&lt;br /&gt;
&lt;br /&gt;
add_compile_options(-m32)&lt;br /&gt;
add_link_options(-m32)&lt;br /&gt;
&lt;br /&gt;
file(GLOB_RECURSE sources_list LIST_DIRECTORIES true ./*)&lt;br /&gt;
foreach(file ${sources_list})&lt;br /&gt;
    IF(${file} MATCHES &amp;quot;.S$&amp;quot; AND NOT ${file} MATCHES &amp;quot;simpleio_i686.S&amp;quot;)&lt;br /&gt;
        get_filename_component(X ${file} NAME)&lt;br /&gt;
        add_executable(${X} ${file} simpleio_i686.S)&lt;br /&gt;
    endif()&lt;br /&gt;
endforeach()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сделайте Reload Cmake project (Внизу выберите вкладку Cmake и нажмите слева на кнопку обновления с двумя стрелочками).&lt;br /&gt;
&lt;br /&gt;
Этот конфиг написан таким образом, чтобы эффективно работать совместно с kks. На каждый .S файл (кроме библиотеке simpleio_i686.S) он создаст цель для сборки. &lt;br /&gt;
После того как у вас в проекте появляется новый файл (например после &amp;lt;code&amp;gt;kks sync&amp;lt;/code&amp;gt;) нужно делать Reload Cmake project.&lt;br /&gt;
Выберите справа сверху интересующий вас файл и запускайте. &lt;br /&gt;
&lt;br /&gt;
====Подсветка синтаксиса====&lt;br /&gt;
Если она работает не правильно, откройте файл &amp;lt;code&amp;gt;simpleio_i686.S&amp;lt;/code&amp;gt;, нажмите на его вкладку в списке открытых файлов сверху правой кнопкой мыши и выберите &amp;quot;Associate file type&amp;quot;. В списке выберите Assembly Language.&lt;br /&gt;
&lt;br /&gt;
====Дебагер====&lt;br /&gt;
Дебагер работает из-коробки.&lt;br /&gt;
&lt;br /&gt;
Чтобы узнать значения регистра напишите в поле снизу строку $eax и нажмите на кнопку &amp;quot;+&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Yabloko ===&lt;br /&gt;
Для того чтобы собрать Yabloko вам потребуется &lt;br /&gt;
* Компилятор, который умеет собирать elf-файлы под архитектуру x86. В мире линукса для такого традиционно собирают ещё одну копию &amp;lt;code&amp;gt;gcc&amp;lt;/code&amp;gt; (и называют &amp;lt;code&amp;gt;x86_64-elf-gcc&amp;lt;/code&amp;gt;, чтобы не путаться), однако &amp;lt;code&amp;gt;clang&amp;lt;/code&amp;gt;, в отличие от &amp;lt;code&amp;gt;gcc&amp;lt;/code&amp;gt;, в стандартной поставке уже имеет кросс-компилятор и кросс-линкер, так что можно (пока в теории) использовать его.&lt;br /&gt;
* [https://www.qemu.org/download/ QEMU]&lt;br /&gt;
&lt;br /&gt;
Всё это вы можете получить локально, не зависимо от того, на какой вы ОС.&lt;br /&gt;
Если вы по какой-то причине решили использовать учебный (или любой другой) сервер, то не забывайте добавлять к команде ssh опцию -X, которая пробрасывает X-сервер, а также по настроению опцию -C, которая сжимает передаваемые данные. Если у вас не линукс, то в таком случае вам потребуется ещё и скачать и установить X-сервер. Для [https://www.xquartz.org/ MacOs]. Для [https://sourceforge.net/projects/xming/ windows]. Если вы пользуетесь Putty, то поставьте галочку в Connection -&amp;gt; SSH -&amp;gt; X11 -&amp;gt; Enable X11 forwarding.&lt;br /&gt;
&lt;br /&gt;
= Как устроен курс =&lt;br /&gt;
== Контрольные мероприятия ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Когда !! Что&lt;br /&gt;
|-&lt;br /&gt;
| В конце 1-го модуля || контрольная в формате экзамена&lt;br /&gt;
|-&lt;br /&gt;
| В конце 2-го модуля || экзамен&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Формула оценки ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;O&amp;lt;sub&amp;gt;АК&amp;lt;/sub&amp;gt; = 0.5 * H&amp;lt;sub&amp;gt;ejudge&amp;lt;/sub&amp;gt; + 0.05 * H&amp;lt;sub&amp;gt;семинары&amp;lt;/sub&amp;gt; + 0.15 * H&amp;lt;sub&amp;gt;контрольная&amp;lt;/sub&amp;gt; + 0.3 * Э&#039;&#039;&#039;&lt;br /&gt;
Все оценки кроме итоговой дробные с округлением до 2х знаков после запятой. Итоговая оценка округляется арифметически.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;H&amp;lt;sub&amp;gt;ejudge&amp;lt;/sub&amp;gt;&#039;&#039;&#039; - оценка за сданные задания в тестирующей системе Ejudge, выставляется согласно описанию ниже. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;H&amp;lt;sub&amp;gt;семинары&amp;lt;/sub&amp;gt;&#039;&#039;&#039; - оценка за семинары, выставляется согласно правилам озвученным вашим семинаристом.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;H&amp;lt;sub&amp;gt;контрольная&amp;lt;/sub&amp;gt;&#039;&#039;&#039; - оценка за контрольную работу в модуле 1.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Автомат&amp;quot;&#039;&#039;&#039; выдаётся, если оценки за ДЗ, контрольные и семинары не ниже некоторых пороговых значений, которые будут объявлены дополнительно.&lt;br /&gt;
&lt;br /&gt;
=== Формула рассчета оценки Ejudge ===&lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
== Прокторинг ==&lt;br /&gt;
&lt;br /&gt;
На контрольной работе и экзамене применяется селф-прокторинг (даже если вы находитесь в аудитории): необходимо сделать видеозапись, на которой видны ваш экран и ваше лицо во время решения задач. Микрофон тоже должен быть включён. В начале записи, пожалуйста, представьтесь. Запись необходимо будет выложить в любое облачное хранилище и сдать в ejudge ссылку на неё в течении нескольких часов после. Запись нужно хранить до выставления оценки за курс. Размер файла записи не должен сильно превышать 250 МБ. Помните, запись это ваше доказательство честности написанной работы. Инструкция по настройке ОБС появится позднее на вики. Рекомендуется качество не выше 720р и не ниже 360р&lt;br /&gt;
&lt;br /&gt;
На контрольной работе можно пользоваться любыми материалами, веб-сайтами и т. д., за исключением интерактивного общения с кем-либо (гуглить можно, а вот советоваться нельзя). Телеграм-канал курса, а также официальные чаты курса также явно разрешены. В канале могут появляться важные объявления, за ним рекомендуется следить.&lt;br /&gt;
&lt;br /&gt;
= Записи лекций =&lt;br /&gt;
&lt;br /&gt;
TODO&lt;/div&gt;</summary>
		<author><name>Objatie groba</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=CAOS-2023/24&amp;diff=79835</id>
		<title>CAOS-2023/24</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=CAOS-2023/24&amp;diff=79835"/>
		<updated>2023-09-15T21:40:30Z</updated>

		<summary type="html">&lt;p&gt;Objatie groba: /* Библиотека ввода-вывода */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Вход в тестирующую систему: https://caos2023.myltsev.ru&lt;br /&gt;
&lt;br /&gt;
Материалы лекций: https://caos2023.myltsev.ru/lectures/&lt;br /&gt;
&lt;br /&gt;
[https://caos2023.myltsev.ru/style.html Стиль оформления программ на Си]&lt;br /&gt;
&lt;br /&gt;
[https://t.me/+-RJj6i7NMaE1MWIy Чатик курса] &lt;br /&gt;
&lt;br /&gt;
[https://t.me/+duw-cU1uT4FjNzYy Канал с объявлениями]&lt;br /&gt;
&lt;br /&gt;
[https://forms.gle/AMBwLvi9mNPqvUjU7 Форма для фидбека]&lt;br /&gt;
&lt;br /&gt;
[https://exuberant-arthropod-be8.notion.site/21-22-0f236f7d03c74dfbbd945f93651758a2 Конспект лекций 2021 года от студентов]&lt;br /&gt;
&lt;br /&gt;
== Чатики и преподаватели по группам ==&lt;br /&gt;
Лектор — Александр Мыльцев [https://t.me/myltsev @myltsev]&lt;br /&gt;
&lt;br /&gt;
Старший семинарист - Игорь Минеев [https://t.me/objatie_groba @objatie_groba]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Группа !! Чатик !! Преподаватель !! Ассистенты&lt;br /&gt;
|-&lt;br /&gt;
| 221 || https://t.me/+CjBn9f0EY3ZiMmEy || [https://t.me/grphil Филипп Грибов] || [https://t.me/ddubrovin Дмитрий Дубровин], [https://t.me/gmusya Герман Перов]&lt;br /&gt;
|-&lt;br /&gt;
| 222 || https://t.me/+uCLKSieZ3z8zNjk6 || [https://t.me/objatie_groba Игорь Минеев] || [https://t.me/l0i4b Арсений Болотников], [https://t.me/dikirillov Даниил Кириллов]&lt;br /&gt;
|-&lt;br /&gt;
| 223 || https://t.me/+-kqneBWoAC1hZDEy || [https://t.me/youagain Сафронов Евгений]|| [https://t.me/Mathew_K Матвей Кривда], [https://t.me/sidorenko_ivan Иван Сидоренко]&lt;br /&gt;
|-&lt;br /&gt;
| 224 || https://t.me/+JGp5STNu3WYzOTRi || TODO || TODO&lt;br /&gt;
|-&lt;br /&gt;
| 225 || https://t.me/+98tf6UWUIGM1MmYy || TODO || TODO&lt;br /&gt;
|-&lt;br /&gt;
| 226 || https://t.me/cool_caos_226 || [https://t.me/iiixphillxiii Миша Филитов] || [https://t.me/Holpow Фёдор], [https://t.me/igreetyou Денис]&lt;br /&gt;
|-&lt;br /&gt;
| 227 || TODO || TODO || TODO&lt;br /&gt;
|-&lt;br /&gt;
| 228 || TODO || TODO || TODO&lt;br /&gt;
|-&lt;br /&gt;
| 229 || TODO || TODO || TODO&lt;br /&gt;
|-&lt;br /&gt;
| 2210 || https://t.me/+Is6t2SMMTptmMWUy || [https://t.me/atgshkasan Шитов Александр] || [https://t.me/JustUserOff Тигран], [https://t.me/idt005 Игорь]&lt;br /&gt;
|-&lt;br /&gt;
| СПБ ПМИ || https://t.me/+AC9G7J5_AS8zMjJi || [https://t.me/evlinsky Евгений Линский] || [https://t.me/mkornaukhov Михаил Корнаухов] [https://t.me/fizmat_sila Иван Пешков] [https://t.me/rusterrxd Александр Виноградов] [https://t.me/fonarmeister Илья Саранцев]&lt;br /&gt;
|-&lt;br /&gt;
| СПБ ПАДИИ || https://t.me/+BE67Oaii9G5hZGJi || [https://t.me/evlinsky Евгений Линский] || [https://t.me/mkornaukhov Михаил Корнаухов] [https://t.me/fizmat_sila Иван Пешков] [https://t.me/rusterrxd Александр Виноградов] [https://t.me/fonarmeister Илья Саранцев]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Настройка рабочего окружения =&lt;br /&gt;
===kks===&lt;br /&gt;
https://github.com/darkkeks/kks&lt;br /&gt;
&lt;br /&gt;
kks это консольная утилитка для курса, выполняющая много вещей, среди которых можно выделить несколько основных:&lt;br /&gt;
# Скачивание задач/сэмплов/контрольных с помощью одной команды. То же самое со сдачей задач: можно сдать и получить сразу результат. &lt;br /&gt;
# Генерация тестов с помощью скриптов и их тестирование.&lt;br /&gt;
# Просмотр рейтинга (как общего, так и по группам) в удобном формате&lt;br /&gt;
&lt;br /&gt;
Пример использования:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;kks sync  # скачивание задач&lt;br /&gt;
# тут вы написали свой код&lt;br /&gt;
kks test --sample  # тестирование&lt;br /&gt;
kks submit&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Больше примеров можно посмотреть в репозитории&lt;br /&gt;
===Библиотека ввода-вывода===&lt;br /&gt;
Библиотека ввода-вывода для ассемблера x86: [https://caos2023.myltsev.ru/simpleio_i686.S simpleio_i686.S]&lt;br /&gt;
&lt;br /&gt;
Все библиотечные функции не меняют значения регистров кроме указанных&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
call writei32   // напечатать на экране значение eax&lt;br /&gt;
                // как знаковое десятичное число&lt;br /&gt;
call readi32    // ввести с клавиатуры число и сохранить в eax&lt;br /&gt;
call readi64    // ввести с клавиатуры число и сохранить в edx:eax&lt;br /&gt;
call writei64   // вывести edx:eax&lt;br /&gt;
call finish     // завершить исполнение программы&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Внутри виртуальной машины её можно скачать командой &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;wget https://caos2023.myltsev.ru/simpleio_i686.S&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если получаете сообщение, что Wget не установлен на вашей системе (на Ubuntu Desktop по умолчанию нет), то установите его следующей командой: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;sudo apt install wget&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Виртуальная машина (VirtualBox)===&lt;br /&gt;
[https://caos2023.myltsev.ru/hse-caos-xubuntu.ova Образ виртуальной машины]&lt;br /&gt;
&lt;br /&gt;
Рекомендуется скачать образ и установить его в эмулятор [https://www.virtualbox.org/ VirtualBox]. Логин-пароль xubuntu/xubuntu, можно делать sudo.&lt;br /&gt;
&lt;br /&gt;
===Docker для пользователей MacOS (intel based)===&lt;br /&gt;
&#039;&#039;&#039;Проверялось на MacOS BigSur и Monterey&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Загрузить сам докер можно отсюда: [https://docs.docker.com/get-docker/ тык]&lt;br /&gt;
&lt;br /&gt;
Команда для запуска: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;docker run -it --rm -v `pwd`:/caos -w /caos ubuntu&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В терминале заходите в свою папку с акосом и запускаете эту команду. После нее вы начинаете работать с контейнером Ubuntu в папке /caos, где будет все содержимое вашей папки в основной ОС. &lt;br /&gt;
Изменять содержимое внутри /caos можно и изнутри контейнера, и снаружи, изменения будут видны и там и там.&lt;br /&gt;
&lt;br /&gt;
Внутри контейнера стоит установить gcc-multilib, без неё не заведётся: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;apt update &amp;amp;&amp;amp; apt install -y gcc-multilib&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь вы можете писать код внутри своей любимой IDE (запущенной напрямую в вашей ОС, например VSCode), а компилить и запускать в докере через терминал.&lt;br /&gt;
&lt;br /&gt;
===Docker для пользователей MacOS на Apple Silicon===&lt;br /&gt;
Добавьте в .bashrc или .zshrc:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;export DOCKER_DEFAULT_PLATFORM=linux/amd64&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После этого перезапустите Docker.&lt;br /&gt;
&lt;br /&gt;
Вариант2: &lt;br /&gt;
* Скачиваем docker.&lt;br /&gt;
* Переходим в папку с задачами в терминале.&lt;br /&gt;
* Выполняем &amp;lt;code&amp;gt;docker run --platform linux/amd64 -it --rm -v `pwd`:/caos -w /caos ubuntu&amp;lt;/code&amp;gt;&lt;br /&gt;
* Делаем &amp;lt;code&amp;gt;apt update&amp;lt;/code&amp;gt;&lt;br /&gt;
* Делаем &amp;lt;code&amp;gt; apt -y install build-essential gcc-multilib &amp;lt;/code&amp;gt;&lt;br /&gt;
* Собираем задачки командой &amp;lt;code&amp;gt;gcc -m32 -g задача.S simpleio_i686.S&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===CLion===&lt;br /&gt;
Для начала скачайте CLion с официального сайта и устанавите его.&lt;br /&gt;
====Если у вас не linux: вар. 1 - docker====&lt;br /&gt;
Скачайте и установите docker desktop. Добейтесь того, чтобы у вас заработал docker hello world (&amp;lt;code&amp;gt;docker run --rm hello-world&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Если у вас MacOs на арме&amp;lt;/b&amp;gt; сделайте то, что написано выше.&lt;br /&gt;
&lt;br /&gt;
После этого нам потребуется специальный образ с необходимыми для курса библиотеками и программами. &lt;br /&gt;
Создайте файл с именем Dockerfile и следующим содержанием:&lt;br /&gt;
&amp;lt;pre&amp;gt;FROM ubuntu:latest&lt;br /&gt;
&lt;br /&gt;
RUN apt update &amp;amp;&amp;amp; apt install -y gcc-multilib gdb make cmake g++&lt;br /&gt;
WORKDIR /caos&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В директории с этим запустите эту команду чтобы собрать образ: &amp;lt;code&amp;gt;docker build -t caos .&amp;lt;/code&amp;gt; и дождитесь пока она выполнится.&lt;br /&gt;
&lt;br /&gt;
После этого откройте окно настроек, перейдите в пункт Build, Execution, Deployment -&amp;gt; Toolchains и добавьте новый Toolchain с типом Docker.&lt;br /&gt;
В поле Image укажите &amp;lt;code&amp;gt;caos:latest&amp;lt;/code&amp;gt;, а остальные поля должны определиться автоматически. Поместите этот Toolchain первым в списке сделав его default&#039;ным.&lt;br /&gt;
&lt;br /&gt;
====Если у вас не linux: вар. 2 - wsl (Windows only)====&lt;br /&gt;
&lt;br /&gt;
Установите wsl 2, выберите дистрибутив Ubuntu.&lt;br /&gt;
Внутри wsl 2 поставьте необходимые пакеты (&amp;lt;code&amp;gt;sudo apt install gcc-multilib make cmake g++ gdb&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
После этого откройте окно настроек, перейдите в пункт Build, Execution, Deployment -&amp;gt; Toolchains и добавьте новый Toolchain с типом WSL.&lt;br /&gt;
Все поля должны определиться автоматически. Поместите этот Toolchain первым в списке сделав его default&#039;ным.&lt;br /&gt;
&lt;br /&gt;
====Далее====&lt;br /&gt;
Создайте проект (можете выбрать C Executable, но это не особо принципиально)&lt;br /&gt;
Скачайте simpleio_i686.S и поместите в корень проекта.&lt;br /&gt;
&lt;br /&gt;
В &amp;lt;code&amp;gt;CMakeLists.txt&amp;lt;/code&amp;gt; удалите всё и вставьте это:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake_minimum_required(VERSION 3.10)&lt;br /&gt;
project(caos ASM)&lt;br /&gt;
&lt;br /&gt;
add_compile_options(-m32)&lt;br /&gt;
add_link_options(-m32)&lt;br /&gt;
&lt;br /&gt;
file(GLOB_RECURSE sources_list LIST_DIRECTORIES true ./*)&lt;br /&gt;
foreach(file ${sources_list})&lt;br /&gt;
    IF(${file} MATCHES &amp;quot;.S$&amp;quot; AND NOT ${file} MATCHES &amp;quot;simpleio_i686.S&amp;quot;)&lt;br /&gt;
        get_filename_component(X ${file} NAME)&lt;br /&gt;
        add_executable(${X} ${file} simpleio_i686.S)&lt;br /&gt;
    endif()&lt;br /&gt;
endforeach()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сделайте Reload Cmake project (Внизу выберите вкладку Cmake и нажмите слева на кнопку обновления с двумя стрелочками).&lt;br /&gt;
&lt;br /&gt;
Этот конфиг написан таким образом, чтобы эффективно работать совместно с kks. На каждый .S файл (кроме библиотеке simpleio_i686.S) он создаст цель для сборки. &lt;br /&gt;
После того как у вас в проекте появляется новый файл (например после &amp;lt;code&amp;gt;kks sync&amp;lt;/code&amp;gt;) нужно делать Reload Cmake project.&lt;br /&gt;
Выберите справа сверху интересующий вас файл и запускайте. &lt;br /&gt;
&lt;br /&gt;
====Подсветка синтаксиса====&lt;br /&gt;
Если она работает не правильно, откройте файл &amp;lt;code&amp;gt;simpleio_i686.S&amp;lt;/code&amp;gt;, нажмите на его вкладку в списке открытых файлов сверху правой кнопкой мыши и выберите &amp;quot;Associate file type&amp;quot;. В списке выберите Assembly Language.&lt;br /&gt;
&lt;br /&gt;
====Дебагер====&lt;br /&gt;
Дебагер работает из-коробки.&lt;br /&gt;
&lt;br /&gt;
Чтобы узнать значения регистра напишите в поле снизу строку $eax и нажмите на кнопку &amp;quot;+&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Yabloko ===&lt;br /&gt;
Для того чтобы собрать Yabloko вам потребуется &lt;br /&gt;
* Компилятор, который умеет собирать elf-файлы под архитектуру x86. В мире линукса для такого традиционно собирают ещё одну копию &amp;lt;code&amp;gt;gcc&amp;lt;/code&amp;gt; (и называют &amp;lt;code&amp;gt;x86_64-elf-gcc&amp;lt;/code&amp;gt;, чтобы не путаться), однако &amp;lt;code&amp;gt;clang&amp;lt;/code&amp;gt;, в отличие от &amp;lt;code&amp;gt;gcc&amp;lt;/code&amp;gt;, в стандартной поставке уже имеет кросс-компилятор и кросс-линкер, так что можно (пока в теории) использовать его.&lt;br /&gt;
* [https://www.qemu.org/download/ QEMU]&lt;br /&gt;
&lt;br /&gt;
Всё это вы можете получить локально, не зависимо от того, на какой вы ОС.&lt;br /&gt;
Если вы по какой-то причине решили использовать учебный (или любой другой) сервер, то не забывайте добавлять к команде ssh опцию -X, которая пробрасывает X-сервер, а также по настроению опцию -C, которая сжимает передаваемые данные. Если у вас не линукс, то в таком случае вам потребуется ещё и скачать и установить X-сервер. Для [https://www.xquartz.org/ MacOs]. Для [https://sourceforge.net/projects/xming/ windows]. Если вы пользуетесь Putty, то поставьте галочку в Connection -&amp;gt; SSH -&amp;gt; X11 -&amp;gt; Enable X11 forwarding.&lt;br /&gt;
&lt;br /&gt;
= Как устроен курс =&lt;br /&gt;
== Контрольные мероприятия ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Когда !! Что&lt;br /&gt;
|-&lt;br /&gt;
| В конце 1-го модуля || контрольная в формате экзамена&lt;br /&gt;
|-&lt;br /&gt;
| В конце 2-го модуля || экзамен&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Формула оценки ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;O&amp;lt;sub&amp;gt;АК&amp;lt;/sub&amp;gt; = 0.5 * H&amp;lt;sub&amp;gt;ejudge&amp;lt;/sub&amp;gt; + 0.05 * H&amp;lt;sub&amp;gt;семинары&amp;lt;/sub&amp;gt; + 0.15 * H&amp;lt;sub&amp;gt;контрольная&amp;lt;/sub&amp;gt; + 0.3 * Э&#039;&#039;&#039;&lt;br /&gt;
Все оценки кроме итоговой дробные с округлением до 2х знаков после запятой. Итоговая оценка округляется арифметически.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;H&amp;lt;sub&amp;gt;ejudge&amp;lt;/sub&amp;gt;&#039;&#039;&#039; - оценка за сданные задания в тестирующей системе Ejudge, выставляется согласно описанию ниже. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;H&amp;lt;sub&amp;gt;семинары&amp;lt;/sub&amp;gt;&#039;&#039;&#039; - оценка за семинары, выставляется согласно правилам озвученным вашим семинаристом.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;H&amp;lt;sub&amp;gt;контрольная&amp;lt;/sub&amp;gt;&#039;&#039;&#039; - оценка за контрольную работу в модуле 1.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Автомат&amp;quot;&#039;&#039;&#039; выдаётся, если оценки за ДЗ, контрольные и семинары не ниже некоторых пороговых значений, которые будут объявлены дополнительно.&lt;br /&gt;
&lt;br /&gt;
=== Формула рассчета оценки Ejudge ===&lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
== Прокторинг ==&lt;br /&gt;
&lt;br /&gt;
На контрольной работе и экзамене применяется селф-прокторинг (даже если вы находитесь в аудитории): необходимо сделать видеозапись, на которой видны ваш экран и ваше лицо во время решения задач. Микрофон тоже должен быть включён. В начале записи, пожалуйста, представьтесь. Запись необходимо будет выложить в любое облачное хранилище и сдать в ejudge ссылку на неё в течении нескольких часов после. Запись нужно хранить до выставления оценки за курс. Размер файла записи не должен сильно превышать 250 МБ. Помните, запись это ваше доказательство честности написанной работы. Инструкция по настройке ОБС появится позднее на вики. Рекомендуется качество не выше 720р и не ниже 360р&lt;br /&gt;
&lt;br /&gt;
На контрольной работе можно пользоваться любыми материалами, веб-сайтами и т. д., за исключением интерактивного общения с кем-либо (гуглить можно, а вот советоваться нельзя). Телеграм-канал курса, а также официальные чаты курса также явно разрешены. В канале могут появляться важные объявления, за ним рекомендуется следить.&lt;br /&gt;
&lt;br /&gt;
= Записи лекций =&lt;br /&gt;
&lt;br /&gt;
TODO&lt;/div&gt;</summary>
		<author><name>Objatie groba</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=CAOS-2023/24&amp;diff=79834</id>
		<title>CAOS-2023/24</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=CAOS-2023/24&amp;diff=79834"/>
		<updated>2023-09-15T21:37:45Z</updated>

		<summary type="html">&lt;p&gt;Objatie groba: /* Библиотека ввода-вывода */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Вход в тестирующую систему: https://caos2023.myltsev.ru&lt;br /&gt;
&lt;br /&gt;
Материалы лекций: https://caos2023.myltsev.ru/lectures/&lt;br /&gt;
&lt;br /&gt;
[https://caos2023.myltsev.ru/style.html Стиль оформления программ на Си]&lt;br /&gt;
&lt;br /&gt;
[https://t.me/+-RJj6i7NMaE1MWIy Чатик курса] &lt;br /&gt;
&lt;br /&gt;
[https://t.me/+duw-cU1uT4FjNzYy Канал с объявлениями]&lt;br /&gt;
&lt;br /&gt;
[https://forms.gle/AMBwLvi9mNPqvUjU7 Форма для фидбека]&lt;br /&gt;
&lt;br /&gt;
[https://exuberant-arthropod-be8.notion.site/21-22-0f236f7d03c74dfbbd945f93651758a2 Конспект лекций 2021 года от студентов]&lt;br /&gt;
&lt;br /&gt;
== Чатики и преподаватели по группам ==&lt;br /&gt;
Лектор — Александр Мыльцев [https://t.me/myltsev @myltsev]&lt;br /&gt;
&lt;br /&gt;
Старший семинарист - Игорь Минеев [https://t.me/objatie_groba @objatie_groba]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Группа !! Чатик !! Преподаватель !! Ассистенты&lt;br /&gt;
|-&lt;br /&gt;
| 221 || https://t.me/+CjBn9f0EY3ZiMmEy || [https://t.me/grphil Филипп Грибов] || [https://t.me/ddubrovin Дмитрий Дубровин], [https://t.me/gmusya Герман Перов]&lt;br /&gt;
|-&lt;br /&gt;
| 222 || https://t.me/+uCLKSieZ3z8zNjk6 || [https://t.me/objatie_groba Игорь Минеев] || [https://t.me/l0i4b Арсений Болотников], [https://t.me/dikirillov Даниил Кириллов]&lt;br /&gt;
|-&lt;br /&gt;
| 223 || https://t.me/+-kqneBWoAC1hZDEy || [https://t.me/youagain Сафронов Евгений]|| [https://t.me/Mathew_K Матвей Кривда], [https://t.me/sidorenko_ivan Иван Сидоренко]&lt;br /&gt;
|-&lt;br /&gt;
| 224 || https://t.me/+JGp5STNu3WYzOTRi || TODO || TODO&lt;br /&gt;
|-&lt;br /&gt;
| 225 || https://t.me/+98tf6UWUIGM1MmYy || TODO || TODO&lt;br /&gt;
|-&lt;br /&gt;
| 226 || https://t.me/cool_caos_226 || [https://t.me/iiixphillxiii Миша Филитов] || [https://t.me/Holpow Фёдор], [https://t.me/igreetyou Денис]&lt;br /&gt;
|-&lt;br /&gt;
| 227 || TODO || TODO || TODO&lt;br /&gt;
|-&lt;br /&gt;
| 228 || TODO || TODO || TODO&lt;br /&gt;
|-&lt;br /&gt;
| 229 || TODO || TODO || TODO&lt;br /&gt;
|-&lt;br /&gt;
| 2210 || https://t.me/+Is6t2SMMTptmMWUy || [https://t.me/atgshkasan Шитов Александр] || [https://t.me/JustUserOff Тигран], [https://t.me/idt005 Игорь]&lt;br /&gt;
|-&lt;br /&gt;
| СПБ ПМИ || https://t.me/+AC9G7J5_AS8zMjJi || [https://t.me/evlinsky Евгений Линский] || [https://t.me/mkornaukhov Михаил Корнаухов] [https://t.me/fizmat_sila Иван Пешков] [https://t.me/rusterrxd Александр Виноградов] [https://t.me/fonarmeister Илья Саранцев]&lt;br /&gt;
|-&lt;br /&gt;
| СПБ ПАДИИ || https://t.me/+BE67Oaii9G5hZGJi || [https://t.me/evlinsky Евгений Линский] || [https://t.me/mkornaukhov Михаил Корнаухов] [https://t.me/fizmat_sila Иван Пешков] [https://t.me/rusterrxd Александр Виноградов] [https://t.me/fonarmeister Илья Саранцев]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Настройка рабочего окружения =&lt;br /&gt;
===kks===&lt;br /&gt;
https://github.com/darkkeks/kks&lt;br /&gt;
&lt;br /&gt;
kks это консольная утилитка для курса, выполняющая много вещей, среди которых можно выделить несколько основных:&lt;br /&gt;
# Скачивание задач/сэмплов/контрольных с помощью одной команды. То же самое со сдачей задач: можно сдать и получить сразу результат. &lt;br /&gt;
# Генерация тестов с помощью скриптов и их тестирование.&lt;br /&gt;
# Просмотр рейтинга (как общего, так и по группам) в удобном формате&lt;br /&gt;
&lt;br /&gt;
Пример использования:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;kks sync  # скачивание задач&lt;br /&gt;
# тут вы написали свой код&lt;br /&gt;
kks test --sample  # тестирование&lt;br /&gt;
kks submit&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Больше примеров можно посмотреть в репозитории&lt;br /&gt;
===Библиотека ввода-вывода===&lt;br /&gt;
Библиотека ввода-вывода для ассемблера x86: [https://caos2023.myltsev.ru/simpleio_i686.S simpleio_i686.S]&lt;br /&gt;
&lt;br /&gt;
Все библиотечные функции не меняют значения регистров кроме указанных&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
call writei32   // напечатать на экране значение eax&lt;br /&gt;
                // как знаковое десятичное число&lt;br /&gt;
call readi32    // ввести с клавиатуры число и сохранить в eax&lt;br /&gt;
call readi64    // ввести с клавиатуры число и сохранить в edx:eax&lt;br /&gt;
call writei64   // вывести edx:eax&lt;br /&gt;
call finish     // завершить исполнение программы&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Внутри виртуальной машины её можно скачать командой &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;wget https://caos2023.myltsev.ru/simpleio_i686.S&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если получаете сообщение, что Wget не установлен на вашей системе (на Ubuntu Desktop по умолчанию нет), то установите его следующей командой: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;sudo apt install wget&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Виртуальная машина (VirtualBox)===&lt;br /&gt;
[https://caos2023.myltsev.ru/hse-caos-xubuntu.ova Образ виртуальной машины]&lt;br /&gt;
&lt;br /&gt;
Рекомендуется скачать образ и установить его в эмулятор [https://www.virtualbox.org/ VirtualBox]. Логин-пароль xubuntu/xubuntu, можно делать sudo.&lt;br /&gt;
&lt;br /&gt;
===Docker для пользователей MacOS (intel based)===&lt;br /&gt;
&#039;&#039;&#039;Проверялось на MacOS BigSur и Monterey&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Загрузить сам докер можно отсюда: [https://docs.docker.com/get-docker/ тык]&lt;br /&gt;
&lt;br /&gt;
Команда для запуска: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;docker run -it --rm -v `pwd`:/caos -w /caos ubuntu&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В терминале заходите в свою папку с акосом и запускаете эту команду. После нее вы начинаете работать с контейнером Ubuntu в папке /caos, где будет все содержимое вашей папки в основной ОС. &lt;br /&gt;
Изменять содержимое внутри /caos можно и изнутри контейнера, и снаружи, изменения будут видны и там и там.&lt;br /&gt;
&lt;br /&gt;
Внутри контейнера стоит установить gcc-multilib, без неё не заведётся: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;apt update &amp;amp;&amp;amp; apt install -y gcc-multilib&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь вы можете писать код внутри своей любимой IDE (запущенной напрямую в вашей ОС, например VSCode), а компилить и запускать в докере через терминал.&lt;br /&gt;
&lt;br /&gt;
===Docker для пользователей MacOS на Apple Silicon===&lt;br /&gt;
Добавьте в .bashrc или .zshrc:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;export DOCKER_DEFAULT_PLATFORM=linux/amd64&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После этого перезапустите Docker.&lt;br /&gt;
&lt;br /&gt;
Вариант2: &lt;br /&gt;
* Скачиваем docker.&lt;br /&gt;
* Переходим в папку с задачами в терминале.&lt;br /&gt;
* Выполняем &amp;lt;code&amp;gt;docker run --platform linux/amd64 -it --rm -v `pwd`:/caos -w /caos ubuntu&amp;lt;/code&amp;gt;&lt;br /&gt;
* Делаем &amp;lt;code&amp;gt;apt update&amp;lt;/code&amp;gt;&lt;br /&gt;
* Делаем &amp;lt;code&amp;gt; apt -y install build-essential gcc-multilib &amp;lt;/code&amp;gt;&lt;br /&gt;
* Собираем задачки командой &amp;lt;code&amp;gt;gcc -m32 -g задача.S simpleio_i686.S&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===CLion===&lt;br /&gt;
Для начала скачайте CLion с официального сайта и устанавите его.&lt;br /&gt;
====Если у вас не linux: вар. 1 - docker====&lt;br /&gt;
Скачайте и установите docker desktop. Добейтесь того, чтобы у вас заработал docker hello world (&amp;lt;code&amp;gt;docker run --rm hello-world&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Если у вас MacOs на арме&amp;lt;/b&amp;gt; сделайте то, что написано выше.&lt;br /&gt;
&lt;br /&gt;
После этого нам потребуется специальный образ с необходимыми для курса библиотеками и программами. &lt;br /&gt;
Создайте файл с именем Dockerfile и следующим содержанием:&lt;br /&gt;
&amp;lt;pre&amp;gt;FROM ubuntu:latest&lt;br /&gt;
&lt;br /&gt;
RUN apt update &amp;amp;&amp;amp; apt install -y gcc-multilib gdb make cmake g++&lt;br /&gt;
WORKDIR /caos&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В директории с этим запустите эту команду чтобы собрать образ: &amp;lt;code&amp;gt;docker build -t caos .&amp;lt;/code&amp;gt; и дождитесь пока она выполнится.&lt;br /&gt;
&lt;br /&gt;
После этого откройте окно настроек, перейдите в пункт Build, Execution, Deployment -&amp;gt; Toolchains и добавьте новый Toolchain с типом Docker.&lt;br /&gt;
В поле Image укажите &amp;lt;code&amp;gt;caos:latest&amp;lt;/code&amp;gt;, а остальные поля должны определиться автоматически. Поместите этот Toolchain первым в списке сделав его default&#039;ным.&lt;br /&gt;
&lt;br /&gt;
====Если у вас не linux: вар. 2 - wsl (Windows only)====&lt;br /&gt;
&lt;br /&gt;
Установите wsl 2, выберите дистрибутив Ubuntu.&lt;br /&gt;
Внутри wsl 2 поставьте необходимые пакеты (&amp;lt;code&amp;gt;sudo apt install gcc-multilib make cmake g++ gdb&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
После этого откройте окно настроек, перейдите в пункт Build, Execution, Deployment -&amp;gt; Toolchains и добавьте новый Toolchain с типом WSL.&lt;br /&gt;
Все поля должны определиться автоматически. Поместите этот Toolchain первым в списке сделав его default&#039;ным.&lt;br /&gt;
&lt;br /&gt;
====Далее====&lt;br /&gt;
Создайте проект (можете выбрать C Executable, но это не особо принципиально)&lt;br /&gt;
Скачайте simpleio_i686.S и поместите в корень проекта.&lt;br /&gt;
&lt;br /&gt;
В &amp;lt;code&amp;gt;CMakeLists.txt&amp;lt;/code&amp;gt; удалите всё и вставьте это:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake_minimum_required(VERSION 3.10)&lt;br /&gt;
project(caos ASM)&lt;br /&gt;
&lt;br /&gt;
add_compile_options(-m32)&lt;br /&gt;
add_link_options(-m32)&lt;br /&gt;
&lt;br /&gt;
file(GLOB_RECURSE sources_list LIST_DIRECTORIES true ./*)&lt;br /&gt;
foreach(file ${sources_list})&lt;br /&gt;
    IF(${file} MATCHES &amp;quot;.S$&amp;quot; AND NOT ${file} MATCHES &amp;quot;simpleio_i686.S&amp;quot;)&lt;br /&gt;
        get_filename_component(X ${file} NAME)&lt;br /&gt;
        add_executable(${X} ${file} simpleio_i686.S)&lt;br /&gt;
    endif()&lt;br /&gt;
endforeach()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сделайте Reload Cmake project (Внизу выберите вкладку Cmake и нажмите слева на кнопку обновления с двумя стрелочками).&lt;br /&gt;
&lt;br /&gt;
Этот конфиг написан таким образом, чтобы эффективно работать совместно с kks. На каждый .S файл (кроме библиотеке simpleio_i686.S) он создаст цель для сборки. &lt;br /&gt;
После того как у вас в проекте появляется новый файл (например после &amp;lt;code&amp;gt;kks sync&amp;lt;/code&amp;gt;) нужно делать Reload Cmake project.&lt;br /&gt;
Выберите справа сверху интересующий вас файл и запускайте. &lt;br /&gt;
&lt;br /&gt;
====Подсветка синтаксиса====&lt;br /&gt;
Если она работает не правильно, откройте файл &amp;lt;code&amp;gt;simpleio_i686.S&amp;lt;/code&amp;gt;, нажмите на его вкладку в списке открытых файлов сверху правой кнопкой мыши и выберите &amp;quot;Associate file type&amp;quot;. В списке выберите Assembly Language.&lt;br /&gt;
&lt;br /&gt;
====Дебагер====&lt;br /&gt;
Дебагер работает из-коробки.&lt;br /&gt;
&lt;br /&gt;
Чтобы узнать значения регистра напишите в поле снизу строку $eax и нажмите на кнопку &amp;quot;+&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Yabloko ===&lt;br /&gt;
Для того чтобы собрать Yabloko вам потребуется &lt;br /&gt;
* Компилятор, который умеет собирать elf-файлы под архитектуру x86. В мире линукса для такого традиционно собирают ещё одну копию &amp;lt;code&amp;gt;gcc&amp;lt;/code&amp;gt; (и называют &amp;lt;code&amp;gt;x86_64-elf-gcc&amp;lt;/code&amp;gt;, чтобы не путаться), однако &amp;lt;code&amp;gt;clang&amp;lt;/code&amp;gt;, в отличие от &amp;lt;code&amp;gt;gcc&amp;lt;/code&amp;gt;, в стандартной поставке уже имеет кросс-компилятор и кросс-линкер, так что можно (пока в теории) использовать его.&lt;br /&gt;
* [https://www.qemu.org/download/ QEMU]&lt;br /&gt;
&lt;br /&gt;
Всё это вы можете получить локально, не зависимо от того, на какой вы ОС.&lt;br /&gt;
Если вы по какой-то причине решили использовать учебный (или любой другой) сервер, то не забывайте добавлять к команде ssh опцию -X, которая пробрасывает X-сервер, а также по настроению опцию -C, которая сжимает передаваемые данные. Если у вас не линукс, то в таком случае вам потребуется ещё и скачать и установить X-сервер. Для [https://www.xquartz.org/ MacOs]. Для [https://sourceforge.net/projects/xming/ windows]. Если вы пользуетесь Putty, то поставьте галочку в Connection -&amp;gt; SSH -&amp;gt; X11 -&amp;gt; Enable X11 forwarding.&lt;br /&gt;
&lt;br /&gt;
= Как устроен курс =&lt;br /&gt;
== Контрольные мероприятия ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Когда !! Что&lt;br /&gt;
|-&lt;br /&gt;
| В конце 1-го модуля || контрольная в формате экзамена&lt;br /&gt;
|-&lt;br /&gt;
| В конце 2-го модуля || экзамен&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Формула оценки ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;O&amp;lt;sub&amp;gt;АК&amp;lt;/sub&amp;gt; = 0.5 * H&amp;lt;sub&amp;gt;ejudge&amp;lt;/sub&amp;gt; + 0.05 * H&amp;lt;sub&amp;gt;семинары&amp;lt;/sub&amp;gt; + 0.15 * H&amp;lt;sub&amp;gt;контрольная&amp;lt;/sub&amp;gt; + 0.3 * Э&#039;&#039;&#039;&lt;br /&gt;
Все оценки кроме итоговой дробные с округлением до 2х знаков после запятой. Итоговая оценка округляется арифметически.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;H&amp;lt;sub&amp;gt;ejudge&amp;lt;/sub&amp;gt;&#039;&#039;&#039; - оценка за сданные задания в тестирующей системе Ejudge, выставляется согласно описанию ниже. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;H&amp;lt;sub&amp;gt;семинары&amp;lt;/sub&amp;gt;&#039;&#039;&#039; - оценка за семинары, выставляется согласно правилам озвученным вашим семинаристом.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;H&amp;lt;sub&amp;gt;контрольная&amp;lt;/sub&amp;gt;&#039;&#039;&#039; - оценка за контрольную работу в модуле 1.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Автомат&amp;quot;&#039;&#039;&#039; выдаётся, если оценки за ДЗ, контрольные и семинары не ниже некоторых пороговых значений, которые будут объявлены дополнительно.&lt;br /&gt;
&lt;br /&gt;
=== Формула рассчета оценки Ejudge ===&lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
== Прокторинг ==&lt;br /&gt;
&lt;br /&gt;
На контрольной работе и экзамене применяется селф-прокторинг (даже если вы находитесь в аудитории): необходимо сделать видеозапись, на которой видны ваш экран и ваше лицо во время решения задач. Микрофон тоже должен быть включён. В начале записи, пожалуйста, представьтесь. Запись необходимо будет выложить в любое облачное хранилище и сдать в ejudge ссылку на неё в течении нескольких часов после. Запись нужно хранить до выставления оценки за курс. Размер файла записи не должен сильно превышать 250 МБ. Помните, запись это ваше доказательство честности написанной работы. Инструкция по настройке ОБС появится позднее на вики. Рекомендуется качество не выше 720р и не ниже 360р&lt;br /&gt;
&lt;br /&gt;
На контрольной работе можно пользоваться любыми материалами, веб-сайтами и т. д., за исключением интерактивного общения с кем-либо (гуглить можно, а вот советоваться нельзя). Телеграм-канал курса, а также официальные чаты курса также явно разрешены. В канале могут появляться важные объявления, за ним рекомендуется следить.&lt;br /&gt;
&lt;br /&gt;
= Записи лекций =&lt;br /&gt;
&lt;br /&gt;
TODO&lt;/div&gt;</summary>
		<author><name>Objatie groba</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=CAOS-2023/24&amp;diff=79832</id>
		<title>CAOS-2023/24</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=CAOS-2023/24&amp;diff=79832"/>
		<updated>2023-09-15T21:14:58Z</updated>

		<summary type="html">&lt;p&gt;Objatie groba: /* Чатики и преподаватели по группам */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Вход в тестирующую систему: https://caos2023.myltsev.ru&lt;br /&gt;
&lt;br /&gt;
Материалы лекций: https://caos2023.myltsev.ru/lectures/&lt;br /&gt;
&lt;br /&gt;
[https://caos2023.myltsev.ru/style.html Стиль оформления программ на Си]&lt;br /&gt;
&lt;br /&gt;
[https://t.me/+-RJj6i7NMaE1MWIy Чатик курса] &lt;br /&gt;
&lt;br /&gt;
[https://t.me/+duw-cU1uT4FjNzYy Канал с объявлениями]&lt;br /&gt;
&lt;br /&gt;
[https://forms.gle/AMBwLvi9mNPqvUjU7 Форма для фидбека]&lt;br /&gt;
&lt;br /&gt;
[https://exuberant-arthropod-be8.notion.site/21-22-0f236f7d03c74dfbbd945f93651758a2 Конспект лекций 2021 года от студентов]&lt;br /&gt;
&lt;br /&gt;
== Чатики и преподаватели по группам ==&lt;br /&gt;
Лектор — Александр Мыльцев [https://t.me/myltsev @myltsev]&lt;br /&gt;
&lt;br /&gt;
Старший семинарист - Игорь Минеев [https://t.me/objatie_groba @objatie_groba]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Группа !! Чатик !! Преподаватель !! Ассистенты&lt;br /&gt;
|-&lt;br /&gt;
| 221 || https://t.me/+CjBn9f0EY3ZiMmEy || [https://t.me/grphil Филипп Грибов] || [https://t.me/ddubrovin Дмитрий Дубровин], [https://t.me/gmusya Герман Перов]&lt;br /&gt;
|-&lt;br /&gt;
| 222 || https://t.me/+uCLKSieZ3z8zNjk6 || [https://t.me/objatie_groba Игорь Минеев] || [https://t.me/l0i4b Арсений Болотников], [https://t.me/dikirillov Даниил Кириллов]&lt;br /&gt;
|-&lt;br /&gt;
| 223 || https://t.me/+-kqneBWoAC1hZDEy || [https://t.me/youagain Сафронов Евгений]|| [https://t.me/Mathew_K Матвей Кривда], [https://t.me/sidorenko_ivan Иван Сидоренко]&lt;br /&gt;
|-&lt;br /&gt;
| 224 || https://t.me/+JGp5STNu3WYzOTRi || TODO || TODO&lt;br /&gt;
|-&lt;br /&gt;
| 225 || https://t.me/+98tf6UWUIGM1MmYy || TODO || TODO&lt;br /&gt;
|-&lt;br /&gt;
| 226 || https://t.me/cool_caos_226 || [https://t.me/iiixphillxiii Миша Филитов] || [https://t.me/Holpow Фёдор], [https://t.me/igreetyou Денис]&lt;br /&gt;
|-&lt;br /&gt;
| 227 || TODO || TODO || TODO&lt;br /&gt;
|-&lt;br /&gt;
| 228 || TODO || TODO || TODO&lt;br /&gt;
|-&lt;br /&gt;
| 229 || TODO || TODO || TODO&lt;br /&gt;
|-&lt;br /&gt;
| 2210 || https://t.me/+Is6t2SMMTptmMWUy || [https://t.me/atgshkasan Шитов Александр] || [https://t.me/JustUserOff Тигран], [https://t.me/idt005 Игорь]&lt;br /&gt;
|-&lt;br /&gt;
| СПБ ПМИ || https://t.me/+AC9G7J5_AS8zMjJi || [https://t.me/evlinsky Евгений Линский] || [https://t.me/mkornaukhov Михаил Корнаухов] [https://t.me/fizmat_sila Иван Пешков] [https://t.me/rusterrxd Александр Виноградов] [https://t.me/fonarmeister Илья Саранцев]&lt;br /&gt;
|-&lt;br /&gt;
| СПБ ПАДИИ || https://t.me/+BE67Oaii9G5hZGJi || [https://t.me/evlinsky Евгений Линский] || [https://t.me/mkornaukhov Михаил Корнаухов] [https://t.me/fizmat_sila Иван Пешков] [https://t.me/rusterrxd Александр Виноградов] [https://t.me/fonarmeister Илья Саранцев]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Настройка рабочего окружения =&lt;br /&gt;
===kks===&lt;br /&gt;
https://github.com/darkkeks/kks&lt;br /&gt;
&lt;br /&gt;
kks это консольная утилитка для курса, выполняющая много вещей, среди которых можно выделить несколько основных:&lt;br /&gt;
# Скачивание задач/сэмплов/контрольных с помощью одной команды. То же самое со сдачей задач: можно сдать и получить сразу результат. &lt;br /&gt;
# Генерация тестов с помощью скриптов и их тестирование.&lt;br /&gt;
# Просмотр рейтинга (как общего, так и по группам) в удобном формате&lt;br /&gt;
&lt;br /&gt;
Пример использования:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;kks sync  # скачивание задач&lt;br /&gt;
# тут вы написали свой код&lt;br /&gt;
kks test --sample  # тестирование&lt;br /&gt;
kks submit&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Больше примеров можно посмотреть в репозитории&lt;br /&gt;
===Библиотека ввода-вывода===&lt;br /&gt;
Библиотека ввода-вывода для ассемблера x86: [https://caos2023.myltsev.ru/simpleio_i686.S simpleio_i686.S]&lt;br /&gt;
&lt;br /&gt;
Внутри виртуальной машины её можно скачать командой &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;wget https://caos2023.myltsev.ru/simpleio_i686.S&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если получаете сообщение, что Wget не установлен на вашей системе (на Ubuntu Desktop по умолчанию нет), то установите его следующей командой: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;sudo apt install wget&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Виртуальная машина (VirtualBox)===&lt;br /&gt;
[https://caos2023.myltsev.ru/hse-caos-xubuntu.ova Образ виртуальной машины]&lt;br /&gt;
&lt;br /&gt;
Рекомендуется скачать образ и установить его в эмулятор [https://www.virtualbox.org/ VirtualBox]. Логин-пароль xubuntu/xubuntu, можно делать sudo.&lt;br /&gt;
&lt;br /&gt;
===Docker для пользователей MacOS (intel based)===&lt;br /&gt;
&#039;&#039;&#039;Проверялось на MacOS BigSur и Monterey&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Загрузить сам докер можно отсюда: [https://docs.docker.com/get-docker/ тык]&lt;br /&gt;
&lt;br /&gt;
Команда для запуска: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;docker run -it --rm -v `pwd`:/caos -w /caos ubuntu&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В терминале заходите в свою папку с акосом и запускаете эту команду. После нее вы начинаете работать с контейнером Ubuntu в папке /caos, где будет все содержимое вашей папки в основной ОС. &lt;br /&gt;
Изменять содержимое внутри /caos можно и изнутри контейнера, и снаружи, изменения будут видны и там и там.&lt;br /&gt;
&lt;br /&gt;
Внутри контейнера стоит установить gcc-multilib, без неё не заведётся: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;apt update &amp;amp;&amp;amp; apt install -y gcc-multilib&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь вы можете писать код внутри своей любимой IDE (запущенной напрямую в вашей ОС, например VSCode), а компилить и запускать в докере через терминал.&lt;br /&gt;
&lt;br /&gt;
===Docker для пользователей MacOS на Apple Silicon===&lt;br /&gt;
Добавьте в .bashrc или .zshrc:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;export DOCKER_DEFAULT_PLATFORM=linux/amd64&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После этого перезапустите Docker.&lt;br /&gt;
&lt;br /&gt;
Вариант2: &lt;br /&gt;
* Скачиваем docker.&lt;br /&gt;
* Переходим в папку с задачами в терминале.&lt;br /&gt;
* Выполняем &amp;lt;code&amp;gt;docker run --platform linux/amd64 -it --rm -v `pwd`:/caos -w /caos ubuntu&amp;lt;/code&amp;gt;&lt;br /&gt;
* Делаем &amp;lt;code&amp;gt;apt update&amp;lt;/code&amp;gt;&lt;br /&gt;
* Делаем &amp;lt;code&amp;gt; apt -y install build-essential gcc-multilib &amp;lt;/code&amp;gt;&lt;br /&gt;
* Собираем задачки командой &amp;lt;code&amp;gt;gcc -m32 -g задача.S simpleio_i686.S&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===CLion===&lt;br /&gt;
Для начала скачайте CLion с официального сайта и устанавите его.&lt;br /&gt;
====Если у вас не linux: вар. 1 - docker====&lt;br /&gt;
Скачайте и установите docker desktop. Добейтесь того, чтобы у вас заработал docker hello world (&amp;lt;code&amp;gt;docker run --rm hello-world&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Если у вас MacOs на арме&amp;lt;/b&amp;gt; сделайте то, что написано выше.&lt;br /&gt;
&lt;br /&gt;
После этого нам потребуется специальный образ с необходимыми для курса библиотеками и программами. &lt;br /&gt;
Создайте файл с именем Dockerfile и следующим содержанием:&lt;br /&gt;
&amp;lt;pre&amp;gt;FROM ubuntu:latest&lt;br /&gt;
&lt;br /&gt;
RUN apt update &amp;amp;&amp;amp; apt install -y gcc-multilib gdb make cmake g++&lt;br /&gt;
WORKDIR /caos&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В директории с этим запустите эту команду чтобы собрать образ: &amp;lt;code&amp;gt;docker build -t caos .&amp;lt;/code&amp;gt; и дождитесь пока она выполнится.&lt;br /&gt;
&lt;br /&gt;
После этого откройте окно настроек, перейдите в пункт Build, Execution, Deployment -&amp;gt; Toolchains и добавьте новый Toolchain с типом Docker.&lt;br /&gt;
В поле Image укажите &amp;lt;code&amp;gt;caos:latest&amp;lt;/code&amp;gt;, а остальные поля должны определиться автоматически. Поместите этот Toolchain первым в списке сделав его default&#039;ным.&lt;br /&gt;
&lt;br /&gt;
====Если у вас не linux: вар. 2 - wsl (Windows only)====&lt;br /&gt;
&lt;br /&gt;
Установите wsl 2, выберите дистрибутив Ubuntu.&lt;br /&gt;
Внутри wsl 2 поставьте необходимые пакеты (&amp;lt;code&amp;gt;sudo apt install gcc-multilib make cmake g++ gdb&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
После этого откройте окно настроек, перейдите в пункт Build, Execution, Deployment -&amp;gt; Toolchains и добавьте новый Toolchain с типом WSL.&lt;br /&gt;
Все поля должны определиться автоматически. Поместите этот Toolchain первым в списке сделав его default&#039;ным.&lt;br /&gt;
&lt;br /&gt;
====Далее====&lt;br /&gt;
Создайте проект (можете выбрать C Executable, но это не особо принципиально)&lt;br /&gt;
Скачайте simpleio_i686.S и поместите в корень проекта.&lt;br /&gt;
&lt;br /&gt;
В &amp;lt;code&amp;gt;CMakeLists.txt&amp;lt;/code&amp;gt; удалите всё и вставьте это:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake_minimum_required(VERSION 3.10)&lt;br /&gt;
project(caos ASM)&lt;br /&gt;
&lt;br /&gt;
add_compile_options(-m32)&lt;br /&gt;
add_link_options(-m32)&lt;br /&gt;
&lt;br /&gt;
file(GLOB_RECURSE sources_list LIST_DIRECTORIES true ./*)&lt;br /&gt;
foreach(file ${sources_list})&lt;br /&gt;
    IF(${file} MATCHES &amp;quot;.S$&amp;quot; AND NOT ${file} MATCHES &amp;quot;simpleio_i686.S&amp;quot;)&lt;br /&gt;
        get_filename_component(X ${file} NAME)&lt;br /&gt;
        add_executable(${X} ${file} simpleio_i686.S)&lt;br /&gt;
    endif()&lt;br /&gt;
endforeach()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сделайте Reload Cmake project (Внизу выберите вкладку Cmake и нажмите слева на кнопку обновления с двумя стрелочками).&lt;br /&gt;
&lt;br /&gt;
Этот конфиг написан таким образом, чтобы эффективно работать совместно с kks. На каждый .S файл (кроме библиотеке simpleio_i686.S) он создаст цель для сборки. &lt;br /&gt;
После того как у вас в проекте появляется новый файл (например после &amp;lt;code&amp;gt;kks sync&amp;lt;/code&amp;gt;) нужно делать Reload Cmake project.&lt;br /&gt;
Выберите справа сверху интересующий вас файл и запускайте. &lt;br /&gt;
&lt;br /&gt;
====Подсветка синтаксиса====&lt;br /&gt;
Если она работает не правильно, откройте файл &amp;lt;code&amp;gt;simpleio_i686.S&amp;lt;/code&amp;gt;, нажмите на его вкладку в списке открытых файлов сверху правой кнопкой мыши и выберите &amp;quot;Associate file type&amp;quot;. В списке выберите Assembly Language.&lt;br /&gt;
&lt;br /&gt;
====Дебагер====&lt;br /&gt;
Дебагер работает из-коробки.&lt;br /&gt;
&lt;br /&gt;
Чтобы узнать значения регистра напишите в поле снизу строку $eax и нажмите на кнопку &amp;quot;+&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Yabloko ===&lt;br /&gt;
Для того чтобы собрать Yabloko вам потребуется &lt;br /&gt;
* Компилятор, который умеет собирать elf-файлы под архитектуру x86. В мире линукса для такого традиционно собирают ещё одну копию &amp;lt;code&amp;gt;gcc&amp;lt;/code&amp;gt; (и называют &amp;lt;code&amp;gt;x86_64-elf-gcc&amp;lt;/code&amp;gt;, чтобы не путаться), однако &amp;lt;code&amp;gt;clang&amp;lt;/code&amp;gt;, в отличие от &amp;lt;code&amp;gt;gcc&amp;lt;/code&amp;gt;, в стандартной поставке уже имеет кросс-компилятор и кросс-линкер, так что можно (пока в теории) использовать его.&lt;br /&gt;
* [https://www.qemu.org/download/ QEMU]&lt;br /&gt;
&lt;br /&gt;
Всё это вы можете получить локально, не зависимо от того, на какой вы ОС.&lt;br /&gt;
Если вы по какой-то причине решили использовать учебный (или любой другой) сервер, то не забывайте добавлять к команде ssh опцию -X, которая пробрасывает X-сервер, а также по настроению опцию -C, которая сжимает передаваемые данные. Если у вас не линукс, то в таком случае вам потребуется ещё и скачать и установить X-сервер. Для [https://www.xquartz.org/ MacOs]. Для [https://sourceforge.net/projects/xming/ windows]. Если вы пользуетесь Putty, то поставьте галочку в Connection -&amp;gt; SSH -&amp;gt; X11 -&amp;gt; Enable X11 forwarding.&lt;br /&gt;
&lt;br /&gt;
= Как устроен курс =&lt;br /&gt;
== Контрольные мероприятия ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Когда !! Что&lt;br /&gt;
|-&lt;br /&gt;
| В конце 1-го модуля || контрольная в формате экзамена&lt;br /&gt;
|-&lt;br /&gt;
| В конце 2-го модуля || экзамен&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Формула оценки ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;O&amp;lt;sub&amp;gt;АК&amp;lt;/sub&amp;gt; = 0.5 * H&amp;lt;sub&amp;gt;ejudge&amp;lt;/sub&amp;gt; + 0.05 * H&amp;lt;sub&amp;gt;семинары&amp;lt;/sub&amp;gt; + 0.15 * H&amp;lt;sub&amp;gt;контрольная&amp;lt;/sub&amp;gt; + 0.3 * Э&#039;&#039;&#039;&lt;br /&gt;
Все оценки кроме итоговой дробные с округлением до 2х знаков после запятой. Итоговая оценка округляется арифметически.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;H&amp;lt;sub&amp;gt;ejudge&amp;lt;/sub&amp;gt;&#039;&#039;&#039; - оценка за сданные задания в тестирующей системе Ejudge, выставляется согласно описанию ниже. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;H&amp;lt;sub&amp;gt;семинары&amp;lt;/sub&amp;gt;&#039;&#039;&#039; - оценка за семинары, выставляется согласно правилам озвученным вашим семинаристом.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;H&amp;lt;sub&amp;gt;контрольная&amp;lt;/sub&amp;gt;&#039;&#039;&#039; - оценка за контрольную работу в модуле 1.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Автомат&amp;quot;&#039;&#039;&#039; выдаётся, если оценки за ДЗ, контрольные и семинары не ниже некоторых пороговых значений, которые будут объявлены дополнительно.&lt;br /&gt;
&lt;br /&gt;
=== Формула рассчета оценки Ejudge ===&lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
== Прокторинг ==&lt;br /&gt;
&lt;br /&gt;
На контрольной работе и экзамене применяется селф-прокторинг (даже если вы находитесь в аудитории): необходимо сделать видеозапись, на которой видны ваш экран и ваше лицо во время решения задач. Микрофон тоже должен быть включён. В начале записи, пожалуйста, представьтесь. Запись необходимо будет выложить в любое облачное хранилище и сдать в ejudge ссылку на неё в течении нескольких часов после. Запись нужно хранить до выставления оценки за курс. Размер файла записи не должен сильно превышать 250 МБ. Помните, запись это ваше доказательство честности написанной работы. Инструкция по настройке ОБС появится позднее на вики. Рекомендуется качество не выше 720р и не ниже 360р&lt;br /&gt;
&lt;br /&gt;
На контрольной работе можно пользоваться любыми материалами, веб-сайтами и т. д., за исключением интерактивного общения с кем-либо (гуглить можно, а вот советоваться нельзя). Телеграм-канал курса, а также официальные чаты курса также явно разрешены. В канале могут появляться важные объявления, за ним рекомендуется следить.&lt;br /&gt;
&lt;br /&gt;
= Записи лекций =&lt;br /&gt;
&lt;br /&gt;
TODO&lt;/div&gt;</summary>
		<author><name>Objatie groba</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=CAOS-2023/24&amp;diff=79715</id>
		<title>CAOS-2023/24</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=CAOS-2023/24&amp;diff=79715"/>
		<updated>2023-09-13T17:38:56Z</updated>

		<summary type="html">&lt;p&gt;Objatie groba: /* Чатики и преподаватели по группам */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Вход в тестирующую систему: https://caos2023.myltsev.ru&lt;br /&gt;
&lt;br /&gt;
Материалы лекций: https://caos2023.myltsev.ru/lectures/&lt;br /&gt;
&lt;br /&gt;
[https://caos2023.myltsev.ru/style.html Стиль оформления программ на Си]&lt;br /&gt;
&lt;br /&gt;
[https://t.me/+-RJj6i7NMaE1MWIy Чатик курса] &lt;br /&gt;
&lt;br /&gt;
[https://t.me/+duw-cU1uT4FjNzYy Канал с объявлениями]&lt;br /&gt;
&lt;br /&gt;
[https://forms.gle/AMBwLvi9mNPqvUjU7 Форма для фидбека]&lt;br /&gt;
&lt;br /&gt;
[https://exuberant-arthropod-be8.notion.site/21-22-0f236f7d03c74dfbbd945f93651758a2 Конспект лекций 2021 года от студентов]&lt;br /&gt;
&lt;br /&gt;
== Чатики и преподаватели по группам ==&lt;br /&gt;
Лектор — Александр Мыльцев [https://t.me/myltsev @myltsev]&lt;br /&gt;
&lt;br /&gt;
Старший семинарист - Игорь Минеев [https://t.me/objatie_groba @objatie_groba]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Группа !! Чатик !! Преподаватель !! Ассистенты&lt;br /&gt;
|-&lt;br /&gt;
| 221 || https://t.me/+CjBn9f0EY3ZiMmEy || [https://t.me/grphil Филипп Грибов] || [https://t.me/ddubrovin Дмитрий Дубровин], [https://t.me/gmusya Герман Перов]&lt;br /&gt;
|-&lt;br /&gt;
| 222 || https://t.me/+uCLKSieZ3z8zNjk6 || [https://t.me/objatie_groba Игорь Минеев] || [https://t.me/l0i4b Арсений Болотников], [https://t.me/dikirillov Даниил Кириллов]&lt;br /&gt;
|-&lt;br /&gt;
| 223 || https://t.me/+-kqneBWoAC1hZDEy || [https://t.me/youagain Сафронов Евгений]|| [https://t.me/Mathew_K Матвей Кривда], [https://t.me/sidorenko_ivan Иван Сидоренко]&lt;br /&gt;
|-&lt;br /&gt;
| 224 || TODO || TODO || TODO&lt;br /&gt;
|-&lt;br /&gt;
| 225 || https://t.me/+98tf6UWUIGM1MmYy || TODO || TODO&lt;br /&gt;
|-&lt;br /&gt;
| 226 || https://t.me/cool_caos_226 || [https://t.me/iiixphillxiii Миша Филитов] || [https://t.me/Holpow Фёдор], [https://t.me/igreetyou Денис]&lt;br /&gt;
|-&lt;br /&gt;
| 227 || TODO || TODO || TODO&lt;br /&gt;
|-&lt;br /&gt;
| 228 || TODO || TODO || TODO&lt;br /&gt;
|-&lt;br /&gt;
| 229 || TODO || TODO || TODO&lt;br /&gt;
|-&lt;br /&gt;
| 2210 || TODO || TODO || TODO&lt;br /&gt;
|-&lt;br /&gt;
| СПБ ПМИ || https://t.me/+AC9G7J5_AS8zMjJi || [https://t.me/evlinsky Евгений Линский] || [https://t.me/mkornaukhov Михаил Корнаухов] [https://t.me/fizmat_sila Иван Пешков] [https://t.me/rusterrxd Александр Виноградов] [https://t.me/fonarmeister Илья Саранцев]&lt;br /&gt;
|-&lt;br /&gt;
| СПБ ПАДИИ || https://t.me/+BE67Oaii9G5hZGJi || [https://t.me/evlinsky Евгений Линский] || [https://t.me/mkornaukhov Михаил Корнаухов] [https://t.me/fizmat_sila Иван Пешков] [https://t.me/rusterrxd Александр Виноградов] [https://t.me/fonarmeister Илья Саранцев]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Настройка рабочего окружения =&lt;br /&gt;
===kks===&lt;br /&gt;
https://github.com/darkkeks/kks&lt;br /&gt;
&lt;br /&gt;
kks это консольная утилитка для курса, выполняющая много вещей, среди которых можно выделить несколько основных:&lt;br /&gt;
# Скачивание задач/сэмплов/контрольных с помощью одной команды. То же самое со сдачей задач: можно сдать и получить сразу результат. &lt;br /&gt;
# Генерация тестов с помощью скриптов и их тестирование.&lt;br /&gt;
# Просмотр рейтинга (как общего, так и по группам) в удобном формате&lt;br /&gt;
&lt;br /&gt;
Пример использования:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;kks sync  # скачивание задач&lt;br /&gt;
# тут вы написали свой код&lt;br /&gt;
kks test --sample  # тестирование&lt;br /&gt;
kks submit&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Больше примеров можно посмотреть в репозитории&lt;br /&gt;
===Библиотека ввода-вывода===&lt;br /&gt;
Библиотека ввода-вывода для ассемблера x86: [https://caos2023.myltsev.ru/simpleio_i686.S simpleio_i686.S]&lt;br /&gt;
&lt;br /&gt;
Внутри виртуальной машины её можно скачать командой &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;wget https://caos2023.myltsev.ru/simpleio_i686.S&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если получаете сообщение, что Wget не установлен на вашей системе (на Ubuntu Desktop по умолчанию нет), то установите его следующей командой: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;sudo apt install wget&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Виртуальная машина (VirtualBox)===&lt;br /&gt;
[https://caos2023.myltsev.ru/hse-caos-xubuntu.ova Образ виртуальной машины]&lt;br /&gt;
&lt;br /&gt;
Рекомендуется скачать образ и установить его в эмулятор [https://www.virtualbox.org/ VirtualBox]. Логин-пароль xubuntu/xubuntu, можно делать sudo.&lt;br /&gt;
&lt;br /&gt;
===Docker для пользователей MacOS (intel based)===&lt;br /&gt;
&#039;&#039;&#039;Проверялось на MacOS BigSur и Monterey&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Загрузить сам докер можно отсюда: [https://docs.docker.com/get-docker/ тык]&lt;br /&gt;
&lt;br /&gt;
Команда для запуска: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;docker run -it --rm -v `pwd`:/caos -w /caos ubuntu&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В терминале заходите в свою папку с акосом и запускаете эту команду. После нее вы начинаете работать с контейнером Ubuntu в папке /caos, где будет все содержимое вашей папки в основной ОС. &lt;br /&gt;
Изменять содержимое внутри /caos можно и изнутри контейнера, и снаружи, изменения будут видны и там и там.&lt;br /&gt;
&lt;br /&gt;
Внутри контейнера стоит установить gcc-multilib, без неё не заведётся: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;apt update &amp;amp;&amp;amp; apt install -y gcc-multilib&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь вы можете писать код внутри своей любимой IDE (запущенной напрямую в вашей ОС, например VSCode), а компилить и запускать в докере через терминал.&lt;br /&gt;
&lt;br /&gt;
===Docker для пользователей MacOS на Apple Silicon===&lt;br /&gt;
Добавьте в .bashrc или .zshrc:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;export DOCKER_DEFAULT_PLATFORM=linux/amd64&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После этого перезапустите Docker.&lt;br /&gt;
&lt;br /&gt;
Вариант2: &lt;br /&gt;
* Скачиваем docker.&lt;br /&gt;
* Переходим в папку с задачами в терминале.&lt;br /&gt;
* Выполняем &amp;lt;code&amp;gt;docker run --platform linux/amd64 -it --rm -v `pwd`:/caos -w /caos ubuntu&amp;lt;/code&amp;gt;&lt;br /&gt;
* Делаем &amp;lt;code&amp;gt;apt update&amp;lt;/code&amp;gt;&lt;br /&gt;
* Делаем &amp;lt;code&amp;gt; apt -y install build-essential gcc-multilib &amp;lt;/code&amp;gt;&lt;br /&gt;
* Собираем задачки командой &amp;lt;code&amp;gt;gcc -m32 -g задача.S simpleio_i686.S&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===CLion===&lt;br /&gt;
Для начала скачайте CLion с официального сайта и устанавите его.&lt;br /&gt;
====Если у вас не linux: вар. 1 - docker====&lt;br /&gt;
Скачайте и установите docker desktop. Добейтесь того, чтобы у вас заработал docker hello world (&amp;lt;code&amp;gt;docker run --rm hello-world&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Если у вас MacOs на арме&amp;lt;/b&amp;gt; сделайте то, что написано выше.&lt;br /&gt;
&lt;br /&gt;
После этого нам потребуется специальный образ с необходимыми для курса библиотеками и программами. &lt;br /&gt;
Создайте файл с именем Dockerfile и следующим содержанием:&lt;br /&gt;
&amp;lt;pre&amp;gt;FROM ubuntu:latest&lt;br /&gt;
&lt;br /&gt;
RUN apt update &amp;amp;&amp;amp; apt install -y gcc-multilib gdb make cmake g++&lt;br /&gt;
WORKDIR /caos&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В директории с этим запустите эту команду чтобы собрать образ: &amp;lt;code&amp;gt;docker build -t caos .&amp;lt;/code&amp;gt; и дождитесь пока она выполнится.&lt;br /&gt;
&lt;br /&gt;
После этого откройте окно настроек, перейдите в пункт Build, Execution, Deployment -&amp;gt; Toolchains и добавьте новый Toolchain с типом Docker.&lt;br /&gt;
В поле Image укажите &amp;lt;code&amp;gt;caos:latest&amp;lt;/code&amp;gt;, а остальные поля должны определиться автоматически. Поместите этот Toolchain первым в списке сделав его default&#039;ным.&lt;br /&gt;
&lt;br /&gt;
====Если у вас не linux: вар. 2 - wsl (Windows only)====&lt;br /&gt;
&lt;br /&gt;
Установите wsl 2, выберите дистрибутив Ubuntu.&lt;br /&gt;
Внутри wsl 2 поставьте необходимые пакеты (&amp;lt;code&amp;gt;sudo apt install gcc-multilib make cmake g++ gdb&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
После этого откройте окно настроек, перейдите в пункт Build, Execution, Deployment -&amp;gt; Toolchains и добавьте новый Toolchain с типом WSL.&lt;br /&gt;
Все поля должны определиться автоматически. Поместите этот Toolchain первым в списке сделав его default&#039;ным.&lt;br /&gt;
&lt;br /&gt;
====Далее====&lt;br /&gt;
Создайте проект (можете выбрать C Executable, но это не особо принципиально)&lt;br /&gt;
Скачайте simpleio_i686.S и поместите в корень проекта.&lt;br /&gt;
&lt;br /&gt;
В &amp;lt;code&amp;gt;CMakeLists.txt&amp;lt;/code&amp;gt; удалите всё и вставьте это:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake_minimum_required(VERSION 3.10)&lt;br /&gt;
project(caos ASM)&lt;br /&gt;
&lt;br /&gt;
add_compile_options(-m32)&lt;br /&gt;
add_link_options(-m32)&lt;br /&gt;
&lt;br /&gt;
file(GLOB_RECURSE sources_list LIST_DIRECTORIES true ./*)&lt;br /&gt;
foreach(file ${sources_list})&lt;br /&gt;
    IF(${file} MATCHES &amp;quot;.S$&amp;quot; AND NOT ${file} MATCHES &amp;quot;simpleio_i686.S&amp;quot;)&lt;br /&gt;
        get_filename_component(X ${file} NAME)&lt;br /&gt;
        add_executable(${X} ${file} simpleio_i686.S)&lt;br /&gt;
    endif()&lt;br /&gt;
endforeach()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сделайте Reload Cmake project (Внизу выберите вкладку Cmake и нажмите слева на кнопку обновления с двумя стрелочками).&lt;br /&gt;
&lt;br /&gt;
Этот конфиг написан таким образом, чтобы эффективно работать совместно с kks. На каждый .S файл (кроме библиотеке simpleio_i686.S) он создаст цель для сборки. &lt;br /&gt;
После того как у вас в проекте появляется новый файл (например после &amp;lt;code&amp;gt;kks sync&amp;lt;/code&amp;gt;) нужно делать Reload Cmake project.&lt;br /&gt;
Выберите справа сверху интересующий вас файл и запускайте. &lt;br /&gt;
&lt;br /&gt;
====Подсветка синтаксиса====&lt;br /&gt;
Если она работает не правильно, откройте файл &amp;lt;code&amp;gt;simpleio_i686.S&amp;lt;/code&amp;gt;, нажмите на его вкладку в списке открытых файлов сверху правой кнопкой мыши и выберите &amp;quot;Associate file type&amp;quot;. В списке выберите Assembly Language.&lt;br /&gt;
&lt;br /&gt;
====Дебагер====&lt;br /&gt;
Дебагер работает из-коробки.&lt;br /&gt;
&lt;br /&gt;
Чтобы узнать значения регистра напишите в поле снизу строку $eax и нажмите на кнопку &amp;quot;+&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Yabloko ===&lt;br /&gt;
Для того чтобы собрать Yabloko вам потребуется &lt;br /&gt;
* Компилятор, который умеет собирать elf-файлы под архитектуру x86. В мире линукса для такого традиционно собирают ещё одну копию &amp;lt;code&amp;gt;gcc&amp;lt;/code&amp;gt; (и называют &amp;lt;code&amp;gt;x86_64-elf-gcc&amp;lt;/code&amp;gt;, чтобы не путаться), однако &amp;lt;code&amp;gt;clang&amp;lt;/code&amp;gt;, в отличие от &amp;lt;code&amp;gt;gcc&amp;lt;/code&amp;gt;, в стандартной поставке уже имеет кросс-компилятор и кросс-линкер, так что можно (пока в теории) использовать его.&lt;br /&gt;
* [https://www.qemu.org/download/ QEMU]&lt;br /&gt;
&lt;br /&gt;
Всё это вы можете получить локально, не зависимо от того, на какой вы ОС.&lt;br /&gt;
Если вы по какой-то причине решили использовать учебный (или любой другой) сервер, то не забывайте добавлять к команде ssh опцию -X, которая пробрасывает X-сервер, а также по настроению опцию -C, которая сжимает передаваемые данные. Если у вас не линукс, то в таком случае вам потребуется ещё и скачать и установить X-сервер. Для [https://www.xquartz.org/ MacOs]. Для [https://sourceforge.net/projects/xming/ windows]. Если вы пользуетесь Putty, то поставьте галочку в Connection -&amp;gt; SSH -&amp;gt; X11 -&amp;gt; Enable X11 forwarding.&lt;br /&gt;
&lt;br /&gt;
= Как устроен курс =&lt;br /&gt;
== Контрольные мероприятия ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Когда !! Что&lt;br /&gt;
|-&lt;br /&gt;
| В конце 1-го модуля || контрольная в формате экзамена&lt;br /&gt;
|-&lt;br /&gt;
| В конце 2-го модуля || экзамен&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Формула оценки ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;O&amp;lt;sub&amp;gt;АК&amp;lt;/sub&amp;gt; = 0.5 * H&amp;lt;sub&amp;gt;ejudge&amp;lt;/sub&amp;gt; + 0.05 * H&amp;lt;sub&amp;gt;семинары&amp;lt;/sub&amp;gt; + 0.15 * H&amp;lt;sub&amp;gt;контрольная&amp;lt;/sub&amp;gt; + 0.3 * Э&#039;&#039;&#039;&lt;br /&gt;
Все оценки кроме итоговой дробные с округлением до 2х знаков после запятой. Итоговая оценка округляется арифметически.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;H&amp;lt;sub&amp;gt;ejudge&amp;lt;/sub&amp;gt;&#039;&#039;&#039; - оценка за сданные задания в тестирующей системе Ejudge, выставляется согласно описанию ниже. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;H&amp;lt;sub&amp;gt;семинары&amp;lt;/sub&amp;gt;&#039;&#039;&#039; - оценка за семинары, выставляется согласно правилам озвученным вашим семинаристом.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;H&amp;lt;sub&amp;gt;контрольная&amp;lt;/sub&amp;gt;&#039;&#039;&#039; - оценка за контрольную работу в модуле 1.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Автомат&amp;quot;&#039;&#039;&#039; выдаётся, если оценки за ДЗ, контрольные и семинары не ниже некоторых пороговых значений, которые будут объявлены дополнительно.&lt;br /&gt;
&lt;br /&gt;
=== Формула рассчета оценки Ejudge ===&lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
== Прокторинг ==&lt;br /&gt;
&lt;br /&gt;
На контрольной работе и экзамене применяется селф-прокторинг (даже если вы находитесь в аудитории): необходимо сделать видеозапись, на которой видны ваш экран и ваше лицо во время решения задач. Микрофон тоже должен быть включён. В начале записи, пожалуйста, представьтесь. Запись необходимо будет выложить в любое облачное хранилище и сдать в ejudge ссылку на неё в течении нескольких часов после. Запись нужно хранить до выставления оценки за курс. Размер файла записи не должен сильно превышать 250 МБ. Помните, запись это ваше доказательство честности написанной работы. Инструкция по настройке ОБС появится позднее на вики. Рекомендуется качество не выше 720р и не ниже 360р&lt;br /&gt;
&lt;br /&gt;
На контрольной работе можно пользоваться любыми материалами, веб-сайтами и т. д., за исключением интерактивного общения с кем-либо (гуглить можно, а вот советоваться нельзя). Телеграм-канал курса, а также официальные чаты курса также явно разрешены. В канале могут появляться важные объявления, за ним рекомендуется следить.&lt;br /&gt;
&lt;br /&gt;
= Записи лекций =&lt;br /&gt;
&lt;br /&gt;
TODO&lt;/div&gt;</summary>
		<author><name>Objatie groba</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=CAOS-2023/24&amp;diff=79652</id>
		<title>CAOS-2023/24</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=CAOS-2023/24&amp;diff=79652"/>
		<updated>2023-09-12T18:12:20Z</updated>

		<summary type="html">&lt;p&gt;Objatie groba: /* Формула оценки */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Вход в тестирующую систему: https://caos2023.myltsev.ru&lt;br /&gt;
&lt;br /&gt;
Материалы лекций: https://caos2023.myltsev.ru/lectures/&lt;br /&gt;
&lt;br /&gt;
[https://caos2023.myltsev.ru/style.html Стиль оформления программ на Си]&lt;br /&gt;
&lt;br /&gt;
[https://t.me/+-RJj6i7NMaE1MWIy Чатик курса] &lt;br /&gt;
&lt;br /&gt;
[https://t.me/+duw-cU1uT4FjNzYy Канал с объявлениями]&lt;br /&gt;
&lt;br /&gt;
[https://forms.gle/AMBwLvi9mNPqvUjU7 Форма для фидбека]&lt;br /&gt;
&lt;br /&gt;
[https://exuberant-arthropod-be8.notion.site/21-22-0f236f7d03c74dfbbd945f93651758a2 Конспект лекций 2021 года от студентов]&lt;br /&gt;
&lt;br /&gt;
== Чатики и преподаватели по группам ==&lt;br /&gt;
Лектор — Александр Мыльцев [https://t.me/myltsev @myltsev]&lt;br /&gt;
&lt;br /&gt;
Старший семинарист - Игорь Минеев [https://t.me/objatie_groba @objatie_groba]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Группа !! Чатик !! Преподаватель !! Ассистенты&lt;br /&gt;
|-&lt;br /&gt;
| 221 || https://t.me/+CjBn9f0EY3ZiMmEy || [https://t.me/grphil Филипп Грибов] || [https://t.me/ddubrovin Дмитрий Дубровин], [https://t.me/gmusya Герман Перов]&lt;br /&gt;
|-&lt;br /&gt;
| 222 || https://t.me/+uCLKSieZ3z8zNjk6 || [https://t.me/objatie_groba Игорь Минеев] || [https://t.me/l0i4b Арсений Болотников], [https://t.me/dikirillov Даниил Кириллов]&lt;br /&gt;
|-&lt;br /&gt;
| 223 || https://t.me/+-kqneBWoAC1hZDEy || [https://t.me/youagain Сафронов Евгений]|| [https://t.me/Mathew_K Матвей Кривда], [https://t.me/sidorenko_ivan Иван Сидоренко]&lt;br /&gt;
|-&lt;br /&gt;
| 224 || TODO || TODO || TODO&lt;br /&gt;
|-&lt;br /&gt;
| 225 || https://t.me/+98tf6UWUIGM1MmYy || TODO || TODO&lt;br /&gt;
|-&lt;br /&gt;
| 226 || https://t.me/cool_caos_226 || [https://t.me/iiixphillxiii Миша Филитов] || [https://t.me/Holpow Фёдор], [https://t.me/igreetyou Денис]&lt;br /&gt;
|-&lt;br /&gt;
| 227 || TODO || TODO || TODO&lt;br /&gt;
|-&lt;br /&gt;
| 228 || TODO || TODO || TODO&lt;br /&gt;
|-&lt;br /&gt;
| 229 || TODO || TODO || TODO&lt;br /&gt;
|-&lt;br /&gt;
| 2210 || TODO || TODO || TODO&lt;br /&gt;
|-&lt;br /&gt;
| СПБ ПМИ || https://t.me/+AC9G7J5_AS8zMjJi || [https://t.me/evlinsky Евгений Линский] || TODO&lt;br /&gt;
|-&lt;br /&gt;
| СПБ ПАДИИ || https://t.me/+BE67Oaii9G5hZGJi || [https://t.me/evlinsky Евгений Линский] || TODO&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Настройка рабочего окружения =&lt;br /&gt;
===kks===&lt;br /&gt;
https://github.com/darkkeks/kks&lt;br /&gt;
&lt;br /&gt;
kks это консольная утилитка для курса, выполняющая много вещей, среди которых можно выделить несколько основных:&lt;br /&gt;
# Скачивание задач/сэмплов/контрольных с помощью одной команды. То же самое со сдачей задач: можно сдать и получить сразу результат. &lt;br /&gt;
# Генерация тестов с помощью скриптов и их тестирование.&lt;br /&gt;
# Просмотр рейтинга (как общего, так и по группам) в удобном формате&lt;br /&gt;
&lt;br /&gt;
Пример использования:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;kks sync  # скачивание задач&lt;br /&gt;
# тут вы написали свой код&lt;br /&gt;
kks test --sample  # тестирование&lt;br /&gt;
kks submit&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Больше примеров можно посмотреть в репозитории&lt;br /&gt;
===Библиотека ввода-вывода===&lt;br /&gt;
Библиотека ввода-вывода для ассемблера x86: [https://caos2023.myltsev.ru/simpleio_i686.S simpleio_i686.S]&lt;br /&gt;
&lt;br /&gt;
Внутри виртуальной машины её можно скачать командой &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;wget https://caos2023.myltsev.ru/simpleio_i686.S&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если получаете сообщение, что Wget не установлен на вашей системе (на Ubuntu Desktop по умолчанию нет), то установите его следующей командой: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;sudo apt install wget&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Виртуальная машина (VirtualBox)===&lt;br /&gt;
[https://caos2023.myltsev.ru/hse-caos-xubuntu.ova Образ виртуальной машины]&lt;br /&gt;
&lt;br /&gt;
Рекомендуется скачать образ и установить его в эмулятор [https://www.virtualbox.org/ VirtualBox]. Логин-пароль xubuntu/xubuntu, можно делать sudo.&lt;br /&gt;
&lt;br /&gt;
===Docker для пользователей MacOS (intel based)===&lt;br /&gt;
&#039;&#039;&#039;Проверялось на MacOS BigSur и Monterey&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Загрузить сам докер можно отсюда: [https://docs.docker.com/get-docker/ тык]&lt;br /&gt;
&lt;br /&gt;
Команда для запуска: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;docker run -it --rm -v `pwd`:/caos -w /caos ubuntu&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В терминале заходите в свою папку с акосом и запускаете эту команду. После нее вы начинаете работать с контейнером Ubuntu в папке /caos, где будет все содержимое вашей папки в основной ОС. &lt;br /&gt;
Изменять содержимое внутри /caos можно и изнутри контейнера, и снаружи, изменения будут видны и там и там.&lt;br /&gt;
&lt;br /&gt;
Внутри контейнера стоит установить gcc-multilib, без неё не заведётся: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;apt update &amp;amp;&amp;amp; apt install -y gcc-multilib&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь вы можете писать код внутри своей любимой IDE (запущенной напрямую в вашей ОС, например VSCode), а компилить и запускать в докере через терминал.&lt;br /&gt;
&lt;br /&gt;
===Docker для пользователей MacOS на Apple Silicon===&lt;br /&gt;
Добавьте в .bashrc или .zshrc:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;export DOCKER_DEFAULT_PLATFORM=linux/amd64&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После этого перезапустите Docker.&lt;br /&gt;
&lt;br /&gt;
Вариант2: &lt;br /&gt;
* Скачиваем docker.&lt;br /&gt;
* Переходим в папку с задачами в терминале.&lt;br /&gt;
* Выполняем &amp;lt;code&amp;gt;docker run --platform linux/amd64 -it --rm -v `pwd`:/caos -w /caos ubuntu&amp;lt;/code&amp;gt;&lt;br /&gt;
* Делаем &amp;lt;code&amp;gt;apt update&amp;lt;/code&amp;gt;&lt;br /&gt;
* Делаем &amp;lt;code&amp;gt; apt -y install build-essential gcc-multilib &amp;lt;/code&amp;gt;&lt;br /&gt;
* Собираем задачки командой &amp;lt;code&amp;gt;gcc -m32 -g задача.S simpleio_i686.S&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===CLion===&lt;br /&gt;
Для начала скачайте CLion с официального сайта и устанавите его.&lt;br /&gt;
====Если у вас не linux: вар. 1 - docker====&lt;br /&gt;
Скачайте и установите docker desktop. Добейтесь того, чтобы у вас заработал docker hello world (&amp;lt;code&amp;gt;docker run --rm hello-world&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Если у вас MacOs на арме&amp;lt;/b&amp;gt; сделайте то, что написано выше.&lt;br /&gt;
&lt;br /&gt;
После этого нам потребуется специальный образ с необходимыми для курса библиотеками и программами. &lt;br /&gt;
Создайте файл с именем Dockerfile и следующим содержанием:&lt;br /&gt;
&amp;lt;pre&amp;gt;FROM ubuntu:latest&lt;br /&gt;
&lt;br /&gt;
RUN apt update &amp;amp;&amp;amp; apt install -y gcc-multilib gdb make cmake g++&lt;br /&gt;
WORKDIR /caos&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В директории с этим запустите эту команду чтобы собрать образ: &amp;lt;code&amp;gt;docker build -t caos .&amp;lt;/code&amp;gt; и дождитесь пока она выполнится.&lt;br /&gt;
&lt;br /&gt;
После этого откройте окно настроек, перейдите в пункт Build, Execution, Deployment -&amp;gt; Toolchains и добавьте новый Toolchain с типом Docker.&lt;br /&gt;
В поле Image укажите &amp;lt;code&amp;gt;caos:latest&amp;lt;/code&amp;gt;, а остальные поля должны определиться автоматически. Поместите этот Toolchain первым в списке сделав его default&#039;ным.&lt;br /&gt;
&lt;br /&gt;
====Если у вас не linux: вар. 2 - wsl (Windows only)====&lt;br /&gt;
&lt;br /&gt;
Установите wsl 2, выберите дистрибутив Ubuntu.&lt;br /&gt;
Внутри wsl 2 поставьте необходимые пакеты (&amp;lt;code&amp;gt;sudo apt install gcc-multilib make cmake g++ gdb&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
После этого откройте окно настроек, перейдите в пункт Build, Execution, Deployment -&amp;gt; Toolchains и добавьте новый Toolchain с типом WSL.&lt;br /&gt;
Все поля должны определиться автоматически. Поместите этот Toolchain первым в списке сделав его default&#039;ным.&lt;br /&gt;
&lt;br /&gt;
====Далее====&lt;br /&gt;
Создайте проект (можете выбрать C Executable, но это не особо принципиально)&lt;br /&gt;
Скачайте simpleio_i686.S и поместите в корень проекта.&lt;br /&gt;
&lt;br /&gt;
В &amp;lt;code&amp;gt;CMakeLists.txt&amp;lt;/code&amp;gt; удалите всё и вставьте это:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake_minimum_required(VERSION 3.10)&lt;br /&gt;
project(caos ASM)&lt;br /&gt;
&lt;br /&gt;
add_compile_options(-m32)&lt;br /&gt;
add_link_options(-m32)&lt;br /&gt;
&lt;br /&gt;
file(GLOB_RECURSE sources_list LIST_DIRECTORIES true ./*)&lt;br /&gt;
foreach(file ${sources_list})&lt;br /&gt;
    IF(${file} MATCHES &amp;quot;.S$&amp;quot; AND NOT ${file} MATCHES &amp;quot;simpleio_i686.S&amp;quot;)&lt;br /&gt;
        get_filename_component(X ${file} NAME)&lt;br /&gt;
        add_executable(${X} ${file} simpleio_i686.S)&lt;br /&gt;
    endif()&lt;br /&gt;
endforeach()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сделайте Reload Cmake project (Внизу выберите вкладку Cmake и нажмите слева на кнопку обновления с двумя стрелочками).&lt;br /&gt;
&lt;br /&gt;
Этот конфиг написан таким образом, чтобы эффективно работать совместно с kks. На каждый .S файл (кроме библиотеке simpleio_i686.S) он создаст цель для сборки. &lt;br /&gt;
После того как у вас в проекте появляется новый файл (например после &amp;lt;code&amp;gt;kks sync&amp;lt;/code&amp;gt;) нужно делать Reload Cmake project.&lt;br /&gt;
Выберите справа сверху интересующий вас файл и запускайте. &lt;br /&gt;
&lt;br /&gt;
====Подсветка синтаксиса====&lt;br /&gt;
Если она работает не правильно, откройте файл &amp;lt;code&amp;gt;simpleio_i686.S&amp;lt;/code&amp;gt;, нажмите на его вкладку в списке открытых файлов сверху правой кнопкой мыши и выберите &amp;quot;Associate file type&amp;quot;. В списке выберите Assembly Language.&lt;br /&gt;
&lt;br /&gt;
====Дебагер====&lt;br /&gt;
Дебагер работает из-коробки.&lt;br /&gt;
&lt;br /&gt;
Чтобы узнать значения регистра напишите в поле снизу строку $eax и нажмите на кнопку &amp;quot;+&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Yabloko ===&lt;br /&gt;
Для того чтобы собрать Yabloko вам потребуется &lt;br /&gt;
* Компилятор, который умеет собирать elf-файлы под архитектуру x86. В мире линукса для такого традиционно собирают ещё одну копию &amp;lt;code&amp;gt;gcc&amp;lt;/code&amp;gt; (и называют &amp;lt;code&amp;gt;x86_64-elf-gcc&amp;lt;/code&amp;gt;, чтобы не путаться), однако &amp;lt;code&amp;gt;clang&amp;lt;/code&amp;gt;, в отличие от &amp;lt;code&amp;gt;gcc&amp;lt;/code&amp;gt;, в стандартной поставке уже имеет кросс-компилятор и кросс-линкер, так что можно (пока в теории) использовать его.&lt;br /&gt;
* [https://www.qemu.org/download/ QEMU]&lt;br /&gt;
&lt;br /&gt;
Всё это вы можете получить локально, не зависимо от того, на какой вы ОС.&lt;br /&gt;
Если вы по какой-то причине решили использовать учебный (или любой другой) сервер, то не забывайте добавлять к команде ssh опцию -X, которая пробрасывает X-сервер, а также по настроению опцию -C, которая сжимает передаваемые данные. Если у вас не линукс, то в таком случае вам потребуется ещё и скачать и установить X-сервер. Для [https://www.xquartz.org/ MacOs]. Для [https://sourceforge.net/projects/xming/ windows]. Если вы пользуетесь Putty, то поставьте галочку в Connection -&amp;gt; SSH -&amp;gt; X11 -&amp;gt; Enable X11 forwarding.&lt;br /&gt;
&lt;br /&gt;
= Как устроен курс =&lt;br /&gt;
== Контрольные мероприятия ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Когда !! Что&lt;br /&gt;
|-&lt;br /&gt;
| В конце 1-го модуля || контрольная в формате экзамена&lt;br /&gt;
|-&lt;br /&gt;
| В конце 2-го модуля || экзамен&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Формула оценки ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;O&amp;lt;sub&amp;gt;АК&amp;lt;/sub&amp;gt; = 0.5 * H&amp;lt;sub&amp;gt;ejudge&amp;lt;/sub&amp;gt; + 0.05 * H&amp;lt;sub&amp;gt;семинары&amp;lt;/sub&amp;gt; + 0.15 * H&amp;lt;sub&amp;gt;контрольная&amp;lt;/sub&amp;gt; + 0.3 * Э&#039;&#039;&#039;&lt;br /&gt;
Все оценки кроме итоговой дробные с округлением до 2х знаков после запятой. Итоговая оценка округляется арифметически.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;H&amp;lt;sub&amp;gt;ejudge&amp;lt;/sub&amp;gt;&#039;&#039;&#039; - оценка за сданные задания в тестирующей системе Ejudge, выставляется согласно описанию ниже. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;H&amp;lt;sub&amp;gt;семинары&amp;lt;/sub&amp;gt;&#039;&#039;&#039; - оценка за семинары, выставляется согласно правилам озвученным вашим семинаристом.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;H&amp;lt;sub&amp;gt;контрольная&amp;lt;/sub&amp;gt;&#039;&#039;&#039; - оценка за контрольную работу в модуле 1.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Автомат&amp;quot;&#039;&#039;&#039; выдаётся, если оценки за ДЗ, контрольные и семинары не ниже некоторых пороговых значений, которые будут объявлены дополнительно.&lt;br /&gt;
&lt;br /&gt;
=== Формула рассчета оценки Ejudge ===&lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
== Прокторинг ==&lt;br /&gt;
&lt;br /&gt;
На контрольной работе и экзамене применяется селф-прокторинг (даже если вы находитесь в аудитории): необходимо сделать видеозапись, на которой видны ваш экран и ваше лицо во время решения задач. Микрофон тоже должен быть включён. В начале записи, пожалуйста, представьтесь. Запись необходимо будет выложить в любое облачное хранилище и сдать в ejudge ссылку на неё в течении нескольких часов после. Запись нужно хранить до выставления оценки за курс. Размер файла записи не должен сильно превышать 250 МБ. Помните, запись это ваше доказательство честности написанной работы. Инструкция по настройке ОБС появится позднее на вики. Рекомендуется качество не выше 720р и не ниже 360р&lt;br /&gt;
&lt;br /&gt;
На контрольной работе можно пользоваться любыми материалами, веб-сайтами и т. д., за исключением интерактивного общения с кем-либо (гуглить можно, а вот советоваться нельзя). Телеграм-канал курса, а также официальные чаты курса также явно разрешены. В канале могут появляться важные объявления, за ним рекомендуется следить.&lt;br /&gt;
&lt;br /&gt;
= Записи лекций =&lt;br /&gt;
&lt;br /&gt;
TODO&lt;/div&gt;</summary>
		<author><name>Objatie groba</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=CAOS-2023/24&amp;diff=79627</id>
		<title>CAOS-2023/24</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=CAOS-2023/24&amp;diff=79627"/>
		<updated>2023-09-12T14:23:34Z</updated>

		<summary type="html">&lt;p&gt;Objatie groba: /* Чатики и преподаватели по группам */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Вход в тестирующую систему: https://caos2023.myltsev.ru&lt;br /&gt;
&lt;br /&gt;
Материалы лекций: https://caos2023.myltsev.ru/lectures/&lt;br /&gt;
&lt;br /&gt;
[https://caos2023.myltsev.ru/style.html Стиль оформления программ на Си]&lt;br /&gt;
&lt;br /&gt;
[https://t.me/+-RJj6i7NMaE1MWIy Чатик курса] &lt;br /&gt;
&lt;br /&gt;
[https://t.me/+duw-cU1uT4FjNzYy Канал с объявлениями]&lt;br /&gt;
&lt;br /&gt;
[https://forms.gle/AMBwLvi9mNPqvUjU7 Форма для фидбека]&lt;br /&gt;
&lt;br /&gt;
[https://exuberant-arthropod-be8.notion.site/21-22-0f236f7d03c74dfbbd945f93651758a2 Конспект лекций 2021 года от студентов]&lt;br /&gt;
&lt;br /&gt;
== Чатики и преподаватели по группам ==&lt;br /&gt;
Лектор — Александр Мыльцев [https://t.me/myltsev @myltsev]&lt;br /&gt;
&lt;br /&gt;
Старший семинарист - Игорь Минеев [https://t.me/objatie_groba @objatie_groba]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Группа !! Чатик !! Преподаватель !! Ассистенты&lt;br /&gt;
|-&lt;br /&gt;
| 221 || https://t.me/+CjBn9f0EY3ZiMmEy || [https://t.me/grphil Филипп Грибов] || [https://t.me/ddubrovin Дмитрий Дубровин], [https://t.me/gmusya Герман Перов]&lt;br /&gt;
|-&lt;br /&gt;
| 222 || https://t.me/+uCLKSieZ3z8zNjk6 || [https://t.me/objatie_groba Игорь Минеев] || [https://t.me/l0i4b Арсений Болотников], [https://t.me/dikirillov Даниил Кириллов]&lt;br /&gt;
|-&lt;br /&gt;
| 223 || https://t.me/+-kqneBWoAC1hZDEy || [https://t.me/youagain Сафронов Евгений]|| [https://t.me/Mathew_K Матвей Кривда], [https://t.me/sidorenko_ivan Иван Сидоренко]&lt;br /&gt;
|-&lt;br /&gt;
| 224 || TODO || TODO || TODO&lt;br /&gt;
|-&lt;br /&gt;
| 225 || https://t.me/+98tf6UWUIGM1MmYy || TODO || TODO&lt;br /&gt;
|-&lt;br /&gt;
| 226 || https://t.me/cool_caos_226 || [https://t.me/iiixphillxiii Миша Филитов] || [https://t.me/Holpow Фёдор], [https://t.me/igreetyou Денис]&lt;br /&gt;
|-&lt;br /&gt;
| 227 || TODO || TODO || TODO&lt;br /&gt;
|-&lt;br /&gt;
| 228 || TODO || TODO || TODO&lt;br /&gt;
|-&lt;br /&gt;
| 229 || TODO || TODO || TODO&lt;br /&gt;
|-&lt;br /&gt;
| 2210 || TODO || TODO || TODO&lt;br /&gt;
|-&lt;br /&gt;
| СПБ ПМИ || https://t.me/+AC9G7J5_AS8zMjJi || [https://t.me/evlinsky Евгений Линский] || TODO&lt;br /&gt;
|-&lt;br /&gt;
| СПБ ПАДИИ || https://t.me/+BE67Oaii9G5hZGJi || [https://t.me/evlinsky Евгений Линский] || TODO&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Настройка рабочего окружения =&lt;br /&gt;
===kks===&lt;br /&gt;
https://github.com/darkkeks/kks&lt;br /&gt;
&lt;br /&gt;
kks это консольная утилитка для курса, выполняющая много вещей, среди которых можно выделить несколько основных:&lt;br /&gt;
# Скачивание задач/сэмплов/контрольных с помощью одной команды. То же самое со сдачей задач: можно сдать и получить сразу результат. &lt;br /&gt;
# Генерация тестов с помощью скриптов и их тестирование.&lt;br /&gt;
# Просмотр рейтинга (как общего, так и по группам) в удобном формате&lt;br /&gt;
&lt;br /&gt;
Пример использования:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;kks sync  # скачивание задач&lt;br /&gt;
# тут вы написали свой код&lt;br /&gt;
kks test --sample  # тестирование&lt;br /&gt;
kks submit&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Больше примеров можно посмотреть в репозитории&lt;br /&gt;
===Библиотека ввода-вывода===&lt;br /&gt;
Библиотека ввода-вывода для ассемблера x86: [https://caos2023.myltsev.ru/simpleio_i686.S simpleio_i686.S]&lt;br /&gt;
&lt;br /&gt;
Внутри виртуальной машины её можно скачать командой &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;wget https://caos2023.myltsev.ru/simpleio_i686.S&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если получаете сообщение, что Wget не установлен на вашей системе (на Ubuntu Desktop по умолчанию нет), то установите его следующей командой: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;sudo apt install wget&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Виртуальная машина (VirtualBox)===&lt;br /&gt;
[https://caos2023.myltsev.ru/hse-caos-xubuntu.ova Образ виртуальной машины]&lt;br /&gt;
&lt;br /&gt;
Рекомендуется скачать образ и установить его в эмулятор [https://www.virtualbox.org/ VirtualBox]. Логин-пароль xubuntu/xubuntu, можно делать sudo.&lt;br /&gt;
&lt;br /&gt;
===Docker для пользователей MacOS (intel based)===&lt;br /&gt;
&#039;&#039;&#039;Проверялось на MacOS BigSur и Monterey&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Загрузить сам докер можно отсюда: [https://docs.docker.com/get-docker/ тык]&lt;br /&gt;
&lt;br /&gt;
Команда для запуска: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;docker run -it --rm -v `pwd`:/caos -w /caos ubuntu&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В терминале заходите в свою папку с акосом и запускаете эту команду. После нее вы начинаете работать с контейнером Ubuntu в папке /caos, где будет все содержимое вашей папки в основной ОС. &lt;br /&gt;
Изменять содержимое внутри /caos можно и изнутри контейнера, и снаружи, изменения будут видны и там и там.&lt;br /&gt;
&lt;br /&gt;
Внутри контейнера стоит установить gcc-multilib, без неё не заведётся: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;apt update &amp;amp;&amp;amp; apt install -y gcc-multilib&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь вы можете писать код внутри своей любимой IDE (запущенной напрямую в вашей ОС, например VSCode), а компилить и запускать в докере через терминал.&lt;br /&gt;
&lt;br /&gt;
===Docker для пользователей MacOS на Apple Silicon===&lt;br /&gt;
Добавьте в .bashrc или .zshrc:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;export DOCKER_DEFAULT_PLATFORM=linux/amd64&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После этого перезапустите Docker.&lt;br /&gt;
&lt;br /&gt;
Вариант2: &lt;br /&gt;
* Скачиваем docker.&lt;br /&gt;
* Переходим в папку с задачами в терминале.&lt;br /&gt;
* Выполняем &amp;lt;code&amp;gt;docker run --platform linux/amd64 -it --rm -v `pwd`:/caos -w /caos ubuntu&amp;lt;/code&amp;gt;&lt;br /&gt;
* Делаем &amp;lt;code&amp;gt;apt update&amp;lt;/code&amp;gt;&lt;br /&gt;
* Делаем &amp;lt;code&amp;gt; apt -y install build-essential gcc-multilib &amp;lt;/code&amp;gt;&lt;br /&gt;
* Собираем задачки командой &amp;lt;code&amp;gt;gcc -m32 -g задача.S simpleio_i686.S&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===CLion===&lt;br /&gt;
Для начала скачайте CLion с официального сайта и устанавите его.&lt;br /&gt;
====Если у вас не linux: вар. 1 - docker====&lt;br /&gt;
Скачайте и установите docker desktop. Добейтесь того, чтобы у вас заработал docker hello world (&amp;lt;code&amp;gt;docker run --rm hello-world&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Если у вас MacOs на арме&amp;lt;/b&amp;gt; сделайте то, что написано выше.&lt;br /&gt;
&lt;br /&gt;
После этого нам потребуется специальный образ с необходимыми для курса библиотеками и программами. &lt;br /&gt;
Создайте файл с именем Dockerfile и следующим содержанием:&lt;br /&gt;
&amp;lt;pre&amp;gt;FROM ubuntu:latest&lt;br /&gt;
&lt;br /&gt;
RUN apt update &amp;amp;&amp;amp; apt install -y gcc-multilib gdb make cmake g++&lt;br /&gt;
WORKDIR /caos&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В директории с этим запустите эту команду чтобы собрать образ: &amp;lt;code&amp;gt;docker build -t caos .&amp;lt;/code&amp;gt; и дождитесь пока она выполнится.&lt;br /&gt;
&lt;br /&gt;
После этого откройте окно настроек, перейдите в пункт Build, Execution, Deployment -&amp;gt; Toolchains и добавьте новый Toolchain с типом Docker.&lt;br /&gt;
В поле Image укажите &amp;lt;code&amp;gt;caos:latest&amp;lt;/code&amp;gt;, а остальные поля должны определиться автоматически. Поместите этот Toolchain первым в списке сделав его default&#039;ным.&lt;br /&gt;
&lt;br /&gt;
====Если у вас не linux: вар. 2 - wsl (Windows only)====&lt;br /&gt;
&lt;br /&gt;
Установите wsl 2, выберите дистрибутив Ubuntu.&lt;br /&gt;
Внутри wsl 2 поставьте необходимые пакеты (&amp;lt;code&amp;gt;sudo apt install gcc-multilib make cmake g++ gdb&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
После этого откройте окно настроек, перейдите в пункт Build, Execution, Deployment -&amp;gt; Toolchains и добавьте новый Toolchain с типом WSL.&lt;br /&gt;
Все поля должны определиться автоматически. Поместите этот Toolchain первым в списке сделав его default&#039;ным.&lt;br /&gt;
&lt;br /&gt;
====Далее====&lt;br /&gt;
Создайте проект (можете выбрать C Executable, но это не особо принципиально)&lt;br /&gt;
Скачайте simpleio_i686.S и поместите в корень проекта.&lt;br /&gt;
&lt;br /&gt;
В &amp;lt;code&amp;gt;CMakeLists.txt&amp;lt;/code&amp;gt; удалите всё и вставьте это:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake_minimum_required(VERSION 3.10)&lt;br /&gt;
project(caos ASM)&lt;br /&gt;
&lt;br /&gt;
add_compile_options(-m32)&lt;br /&gt;
add_link_options(-m32)&lt;br /&gt;
&lt;br /&gt;
file(GLOB_RECURSE sources_list LIST_DIRECTORIES true ./*)&lt;br /&gt;
foreach(file ${sources_list})&lt;br /&gt;
    IF(${file} MATCHES &amp;quot;.S$&amp;quot; AND NOT ${file} MATCHES &amp;quot;simpleio_i686.S&amp;quot;)&lt;br /&gt;
        get_filename_component(X ${file} NAME)&lt;br /&gt;
        add_executable(${X} ${file} simpleio_i686.S)&lt;br /&gt;
    endif()&lt;br /&gt;
endforeach()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сделайте Reload Cmake project (Внизу выберите вкладку Cmake и нажмите слева на кнопку обновления с двумя стрелочками).&lt;br /&gt;
&lt;br /&gt;
Этот конфиг написан таким образом, чтобы эффективно работать совместно с kks. На каждый .S файл (кроме библиотеке simpleio_i686.S) он создаст цель для сборки. &lt;br /&gt;
После того как у вас в проекте появляется новый файл (например после &amp;lt;code&amp;gt;kks sync&amp;lt;/code&amp;gt;) нужно делать Reload Cmake project.&lt;br /&gt;
Выберите справа сверху интересующий вас файл и запускайте. &lt;br /&gt;
&lt;br /&gt;
====Подсветка синтаксиса====&lt;br /&gt;
Если она работает не правильно, откройте файл &amp;lt;code&amp;gt;simpleio_i686.S&amp;lt;/code&amp;gt;, нажмите на его вкладку в списке открытых файлов сверху правой кнопкой мыши и выберите &amp;quot;Associate file type&amp;quot;. В списке выберите Assembly Language.&lt;br /&gt;
&lt;br /&gt;
====Дебагер====&lt;br /&gt;
Дебагер работает из-коробки.&lt;br /&gt;
&lt;br /&gt;
Чтобы узнать значения регистра напишите в поле снизу строку $eax и нажмите на кнопку &amp;quot;+&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Yabloko ===&lt;br /&gt;
Для того чтобы собрать Yabloko вам потребуется &lt;br /&gt;
* Компилятор, который умеет собирать elf-файлы под архитектуру x86. В мире линукса для такого традиционно собирают ещё одну копию &amp;lt;code&amp;gt;gcc&amp;lt;/code&amp;gt; (и называют &amp;lt;code&amp;gt;x86_64-elf-gcc&amp;lt;/code&amp;gt;, чтобы не путаться), однако &amp;lt;code&amp;gt;clang&amp;lt;/code&amp;gt;, в отличие от &amp;lt;code&amp;gt;gcc&amp;lt;/code&amp;gt;, в стандартной поставке уже имеет кросс-компилятор и кросс-линкер, так что можно (пока в теории) использовать его.&lt;br /&gt;
* [https://www.qemu.org/download/ QEMU]&lt;br /&gt;
&lt;br /&gt;
Всё это вы можете получить локально, не зависимо от того, на какой вы ОС.&lt;br /&gt;
Если вы по какой-то причине решили использовать учебный (или любой другой) сервер, то не забывайте добавлять к команде ssh опцию -X, которая пробрасывает X-сервер, а также по настроению опцию -C, которая сжимает передаваемые данные. Если у вас не линукс, то в таком случае вам потребуется ещё и скачать и установить X-сервер. Для [https://www.xquartz.org/ MacOs]. Для [https://sourceforge.net/projects/xming/ windows]. Если вы пользуетесь Putty, то поставьте галочку в Connection -&amp;gt; SSH -&amp;gt; X11 -&amp;gt; Enable X11 forwarding.&lt;br /&gt;
&lt;br /&gt;
= Как устроен курс =&lt;br /&gt;
== Контрольные мероприятия ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Когда !! Что&lt;br /&gt;
|-&lt;br /&gt;
| В конце 1-го модуля || контрольная в формате экзамена&lt;br /&gt;
|-&lt;br /&gt;
| В конце 2-го модуля || экзамен&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Формула оценки ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;O&amp;lt;sub&amp;gt;АК&amp;lt;/sub&amp;gt; = 0.5 * H&amp;lt;sub&amp;gt;ejudge&amp;lt;/sub&amp;gt; + 0.05 * H&amp;lt;sub&amp;gt;семинары&amp;lt;/sub&amp;gt; + 0.15 * H&amp;lt;sub&amp;gt;контрольная&amp;lt;/sub&amp;gt; + 0.3 * Э&#039;&#039;&#039;&lt;br /&gt;
Все оценки кроме итоговой дробные с округлением до 2х знаков после запятой. Итоговая оценка округляется арифметически.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;H&amp;lt;sub&amp;gt;ejudge&amp;lt;/sub&amp;gt;&#039;&#039;&#039; - оценка за сданные задания в тестирующей системе Ejudge, выставляется согласно описанию ниже. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;H&amp;lt;sub&amp;gt;семинары&amp;lt;/sub&amp;gt;&#039;&#039;&#039; - оценка за семинары, выставляется согласно правилам озвученным вашим семинаристом.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;H&amp;lt;sub&amp;gt;контрольная&amp;lt;/sub&amp;gt;&#039;&#039;&#039; - оценка за контрольную работу в модуле 1.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Автомат&amp;quot;&#039;&#039;&#039; выдаётся, если оценки за ДЗ и семинары не ниже некоторых пороговых значений, которые будут объявлены дополнительно.&lt;br /&gt;
&lt;br /&gt;
=== Формула рассчета оценки Ejudge ===&lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
== Прокторинг ==&lt;br /&gt;
&lt;br /&gt;
На контрольной работе и экзамене применяется селф-прокторинг (даже если вы находитесь в аудитории): необходимо сделать видеозапись, на которой видны ваш экран и ваше лицо во время решения задач. Микрофон тоже должен быть включён. В начале записи, пожалуйста, представьтесь. Запись необходимо будет выложить в любое облачное хранилище и сдать в ejudge ссылку на неё в течении нескольких часов после. Запись нужно хранить до выставления оценки за курс. Размер файла записи не должен сильно превышать 250 МБ. Помните, запись это ваше доказательство честности написанной работы. Инструкция по настройке ОБС появится позднее на вики. Рекомендуется качество не выше 720р и не ниже 360р&lt;br /&gt;
&lt;br /&gt;
На контрольной работе можно пользоваться любыми материалами, веб-сайтами и т. д., за исключением интерактивного общения с кем-либо (гуглить можно, а вот советоваться нельзя). Телеграм-канал курса, а также официальные чаты курса также явно разрешены. В канале могут появляться важные объявления, за ним рекомендуется следить.&lt;br /&gt;
&lt;br /&gt;
= Записи лекций =&lt;br /&gt;
&lt;br /&gt;
TODO&lt;/div&gt;</summary>
		<author><name>Objatie groba</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=CAOS-2023/24&amp;diff=79341</id>
		<title>CAOS-2023/24</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=CAOS-2023/24&amp;diff=79341"/>
		<updated>2023-09-07T12:21:24Z</updated>

		<summary type="html">&lt;p&gt;Objatie groba: /* Чатики и преподаватели по группам */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Вход в тестирующую систему: https://caos2023.myltsev.ru&lt;br /&gt;
&lt;br /&gt;
Материалы лекций: https://caos2023.myltsev.ru/lectures/&lt;br /&gt;
&lt;br /&gt;
[https://caos2023.myltsev.ru/style.html Стиль оформления программ на Си]&lt;br /&gt;
&lt;br /&gt;
[https://t.me/+-RJj6i7NMaE1MWIy Чатик курса] &lt;br /&gt;
&lt;br /&gt;
[https://t.me/+duw-cU1uT4FjNzYy Канал с объявлениями]&lt;br /&gt;
&lt;br /&gt;
[https://forms.gle/AMBwLvi9mNPqvUjU7 Форма для фидбека]&lt;br /&gt;
&lt;br /&gt;
[https://exuberant-arthropod-be8.notion.site/21-22-0f236f7d03c74dfbbd945f93651758a2 Конспект лекций 2021 года от студентов]&lt;br /&gt;
&lt;br /&gt;
== Чатики и преподаватели по группам ==&lt;br /&gt;
Лектор — Александр Мыльцев [https://t.me/myltsev @myltsev]&lt;br /&gt;
&lt;br /&gt;
Старший семинарист - Игорь Минеев [https://t.me/objatie_groba @objatie_groba]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Группа !! Чатик !! Преподаватель !! Ассистенты&lt;br /&gt;
|-&lt;br /&gt;
| 221 || TODO || TODO || TODO&lt;br /&gt;
|-&lt;br /&gt;
| 222 || https://t.me/+uCLKSieZ3z8zNjk6 || [https://t.me/objatie_groba Игорь Минеев] || [https://t.me/l0i4b Арсений Болотников], [https://t.me/dikirillov Даниил Кириллов]&lt;br /&gt;
|-&lt;br /&gt;
| 223 || TODO || TODO || TODO&lt;br /&gt;
|-&lt;br /&gt;
| 224 || TODO || TODO || TODO&lt;br /&gt;
|-&lt;br /&gt;
| 225 || TODO || TODO || TODO&lt;br /&gt;
|-&lt;br /&gt;
| 226 || https://t.me/cool_caos_226 || [https://t.me/iiixphillxiii Миша Филитов] || [https://t.me/Holpow Фёдор], [https://t.me/igreetyou Денис]&lt;br /&gt;
|-&lt;br /&gt;
| 227 || TODO || TODO || TODO&lt;br /&gt;
|-&lt;br /&gt;
| 228 || TODO || TODO || TODO&lt;br /&gt;
|-&lt;br /&gt;
| 229 || TODO || TODO || TODO&lt;br /&gt;
|-&lt;br /&gt;
| 2210 || TODO || TODO || TODO&lt;br /&gt;
|-&lt;br /&gt;
| СПБ ПМИ || https://t.me/+AC9G7J5_AS8zMjJi || [https://t.me/evlinsky Евгений Линский] || TODO&lt;br /&gt;
|-&lt;br /&gt;
| СПБ ПАДИИ || https://t.me/+BE67Oaii9G5hZGJi || [https://t.me/evlinsky Евгений Линский] || TODO&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Настройка рабочего окружения =&lt;br /&gt;
===kks===&lt;br /&gt;
https://github.com/darkkeks/kks&lt;br /&gt;
&lt;br /&gt;
kks это консольная утилитка для курса, выполняющая много вещей, среди которых можно выделить несколько основных:&lt;br /&gt;
# Скачивание задач/сэмплов/контрольных с помощью одной команды. То же самое со сдачей задач: можно сдать и получить сразу результат. &lt;br /&gt;
# Генерация тестов с помощью скриптов и их тестирование.&lt;br /&gt;
# Просмотр рейтинга (как общего, так и по группам) в удобном формате&lt;br /&gt;
&lt;br /&gt;
Пример использования:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;kks sync  # скачивание задач&lt;br /&gt;
# тут вы написали свой код&lt;br /&gt;
kks test --sample  # тестирование&lt;br /&gt;
kks submit&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Больше примеров можно посмотреть в репозитории&lt;br /&gt;
===Библиотека ввода-вывода===&lt;br /&gt;
Библиотека ввода-вывода для ассемблера x86: [https://caos2023.myltsev.ru/simpleio_i686.S simpleio_i686.S]&lt;br /&gt;
&lt;br /&gt;
Внутри виртуальной машины её можно скачать командой &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;wget https://caos2023.myltsev.ru/simpleio_i686.S&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если получаете сообщение, что Wget не установлен на вашей системе (на Ubuntu Desktop по умолчанию нет), то установите его следующей командой: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;sudo apt install wget&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Виртуальная машина (VirtualBox)===&lt;br /&gt;
[https://caos2023.myltsev.ru/hse-caos-xubuntu.ova Образ виртуальной машины]&lt;br /&gt;
&lt;br /&gt;
Рекомендуется скачать образ и установить его в эмулятор [https://www.virtualbox.org/ VirtualBox]. Логин-пароль xubuntu/xubuntu, можно делать sudo.&lt;br /&gt;
&lt;br /&gt;
===Docker для пользователей MacOS (intel based)===&lt;br /&gt;
&#039;&#039;&#039;Проверялось на MacOS BigSur и Monterey&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Загрузить сам докер можно отсюда: [https://docs.docker.com/get-docker/ тык]&lt;br /&gt;
&lt;br /&gt;
Команда для запуска: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;docker run -it --rm -v `pwd`:/caos -w /caos ubuntu&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В терминале заходите в свою папку с акосом и запускаете эту команду. После нее вы начинаете работать с контейнером Ubuntu в папке /caos, где будет все содержимое вашей папки в основной ОС. &lt;br /&gt;
Изменять содержимое внутри /caos можно и изнутри контейнера, и снаружи, изменения будут видны и там и там.&lt;br /&gt;
&lt;br /&gt;
Внутри контейнера стоит установить gcc-multilib, без неё не заведётся: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;apt update &amp;amp;&amp;amp; apt install -y gcc-multilib&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь вы можете писать код внутри своей любимой IDE (запущенной напрямую в вашей ОС, например VSCode), а компилить и запускать в докере через терминал.&lt;br /&gt;
&lt;br /&gt;
===Docker для пользователей MacOS на Apple Silicon===&lt;br /&gt;
Добавьте в .bashrc или .zshrc:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;export DOCKER_DEFAULT_PLATFORM=linux/amd64&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После этого перезапустите Docker.&lt;br /&gt;
&lt;br /&gt;
Вариант2: &lt;br /&gt;
* Скачиваем docker.&lt;br /&gt;
* Переходим в папку с задачами в терминале.&lt;br /&gt;
* Выполняем &amp;lt;code&amp;gt;docker run --platform linux/amd64 -it --rm -v `pwd`:/caos -w /caos ubuntu&amp;lt;/code&amp;gt;&lt;br /&gt;
* Делаем &amp;lt;code&amp;gt;apt update&amp;lt;/code&amp;gt;&lt;br /&gt;
* Делаем &amp;lt;code&amp;gt; apt -y install build-essential gcc-multilib &amp;lt;/code&amp;gt;&lt;br /&gt;
* Собираем задачки командой &amp;lt;code&amp;gt;gcc -m32 -g задача.S simpleio_i686.S&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===CLion===&lt;br /&gt;
Для начала скачайте CLion с официального сайта и устанавите его.&lt;br /&gt;
====Если у вас не linux: вар. 1 - docker====&lt;br /&gt;
Скачайте и установите docker desktop. Добейтесь того, чтобы у вас заработал docker hello world (&amp;lt;code&amp;gt;docker run --rm hello-world&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Если у вас MacOs на арме&amp;lt;/b&amp;gt; сделайте то, что написано выше.&lt;br /&gt;
&lt;br /&gt;
После этого нам потребуется специальный образ с необходимыми для курса библиотеками и программами. &lt;br /&gt;
Создайте файл с именем Dockerfile и следующим содержанием:&lt;br /&gt;
&amp;lt;pre&amp;gt;FROM ubuntu:latest&lt;br /&gt;
&lt;br /&gt;
RUN apt update &amp;amp;&amp;amp; apt install -y gcc-multilib gdb make cmake g++&lt;br /&gt;
WORKDIR /caos&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В директории с этим запустите эту команду чтобы собрать образ: &amp;lt;code&amp;gt;docker build -t caos .&amp;lt;/code&amp;gt; и дождитесь пока она выполнится.&lt;br /&gt;
&lt;br /&gt;
После этого откройте окно настроек, перейдите в пункт Build, Execution, Deployment -&amp;gt; Toolchains и добавьте новый Toolchain с типом Docker.&lt;br /&gt;
В поле Image укажите &amp;lt;code&amp;gt;caos:latest&amp;lt;/code&amp;gt;, а остальные поля должны определиться автоматически. Поместите этот Toolchain первым в списке сделав его default&#039;ным.&lt;br /&gt;
&lt;br /&gt;
====Если у вас не linux: вар. 2 - wsl (Windows only)====&lt;br /&gt;
&lt;br /&gt;
Установите wsl 2, выберите дистрибутив Ubuntu.&lt;br /&gt;
Внутри wsl 2 поставьте необходимые пакеты (&amp;lt;code&amp;gt;sudo apt install gcc-multilib make cmake g++ gdb&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
После этого откройте окно настроек, перейдите в пункт Build, Execution, Deployment -&amp;gt; Toolchains и добавьте новый Toolchain с типом WSL.&lt;br /&gt;
Все поля должны определиться автоматически. Поместите этот Toolchain первым в списке сделав его default&#039;ным.&lt;br /&gt;
&lt;br /&gt;
====Далее====&lt;br /&gt;
Создайте проект (можете выбрать C Executable, но это не особо принципиально)&lt;br /&gt;
Скачайте simpleio_i686.S и поместите в корень проекта.&lt;br /&gt;
&lt;br /&gt;
В &amp;lt;code&amp;gt;CMakeLists.txt&amp;lt;/code&amp;gt; удалите всё и вставьте это:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake_minimum_required(VERSION 3.10)&lt;br /&gt;
project(caos ASM)&lt;br /&gt;
&lt;br /&gt;
add_compile_options(-m32)&lt;br /&gt;
add_link_options(-m32)&lt;br /&gt;
&lt;br /&gt;
file(GLOB_RECURSE sources_list LIST_DIRECTORIES true ./*)&lt;br /&gt;
foreach(file ${sources_list})&lt;br /&gt;
    IF(${file} MATCHES &amp;quot;.S$&amp;quot; AND NOT ${file} MATCHES &amp;quot;simpleio_i686.S&amp;quot;)&lt;br /&gt;
        get_filename_component(X ${file} NAME)&lt;br /&gt;
        add_executable(${X} ${file} simpleio_i686.S)&lt;br /&gt;
    endif()&lt;br /&gt;
endforeach()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сделайте Reload Cmake project (Внизу выберите вкладку Cmake и нажмите слева на кнопку обновления с двумя стрелочками).&lt;br /&gt;
&lt;br /&gt;
Этот конфиг написан таким образом, чтобы эффективно работать совместно с kks. На каждый .S файл (кроме библиотеке simpleio_i686.S) он создаст цель для сборки. &lt;br /&gt;
После того как у вас в проекте появляется новый файл (например после &amp;lt;code&amp;gt;kks sync&amp;lt;/code&amp;gt;) нужно делать Reload Cmake project.&lt;br /&gt;
Выберите справа сверху интересующий вас файл и запускайте. &lt;br /&gt;
&lt;br /&gt;
====Подсветка синтаксиса====&lt;br /&gt;
Если она работает не правильно, откройте файл &amp;lt;code&amp;gt;simpleio_i686.S&amp;lt;/code&amp;gt;, нажмите на его вкладку в списке открытых файлов сверху правой кнопкой мыши и выберите &amp;quot;Associate file type&amp;quot;. В списке выберите Assembly Language.&lt;br /&gt;
&lt;br /&gt;
====Дебагер====&lt;br /&gt;
Дебагер работает из-коробки.&lt;br /&gt;
&lt;br /&gt;
Чтобы узнать значения регистра напишите в поле снизу строку $eax и нажмите на кнопку &amp;quot;+&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Yabloko ===&lt;br /&gt;
Для того чтобы собрать Yabloko вам потребуется &lt;br /&gt;
* Компилятор, который умеет собирать elf-файлы под архитектуру x86. В мире линукса для такого традиционно собирают ещё одну копию &amp;lt;code&amp;gt;gcc&amp;lt;/code&amp;gt; (и называют &amp;lt;code&amp;gt;x86_64-elf-gcc&amp;lt;/code&amp;gt;, чтобы не путаться), однако &amp;lt;code&amp;gt;clang&amp;lt;/code&amp;gt;, в отличие от &amp;lt;code&amp;gt;gcc&amp;lt;/code&amp;gt;, в стандартной поставке уже имеет кросс-компилятор и кросс-линкер, так что можно (пока в теории) использовать его.&lt;br /&gt;
* [https://www.qemu.org/download/ QEMU]&lt;br /&gt;
&lt;br /&gt;
Всё это вы можете получить локально, не зависимо от того, на какой вы ОС.&lt;br /&gt;
Если вы по какой-то причине решили использовать учебный (или любой другой) сервер, то не забывайте добавлять к команде ssh опцию -X, которая пробрасывает X-сервер, а также по настроению опцию -C, которая сжимает передаваемые данные. Если у вас не линукс, то в таком случае вам потребуется ещё и скачать и установить X-сервер. Для [https://www.xquartz.org/ MacOs]. Для [https://sourceforge.net/projects/xming/ windows]. Если вы пользуетесь Putty, то поставьте галочку в Connection -&amp;gt; SSH -&amp;gt; X11 -&amp;gt; Enable X11 forwarding.&lt;br /&gt;
&lt;br /&gt;
= Как устроен курс =&lt;br /&gt;
== Контрольные мероприятия ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Когда !! Что&lt;br /&gt;
|-&lt;br /&gt;
| В конце 1-го модуля || контрольная в формате экзамена&lt;br /&gt;
|-&lt;br /&gt;
| В конце 2-го модуля || экзамен&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Формула оценки ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;O&amp;lt;sub&amp;gt;АК&amp;lt;/sub&amp;gt; = 0.5 * H&amp;lt;sub&amp;gt;ejudge&amp;lt;/sub&amp;gt; + 0.05 * H&amp;lt;sub&amp;gt;семинары&amp;lt;/sub&amp;gt; + 0.15 * H&amp;lt;sub&amp;gt;контрольная&amp;lt;/sub&amp;gt; + 0.3 * Э&#039;&#039;&#039;&lt;br /&gt;
Все оценки кроме итоговой дробные с округлением до 2х знаков после запятой. Итоговая оценка округляется арифметически.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;H&amp;lt;sub&amp;gt;ejudge&amp;lt;/sub&amp;gt;&#039;&#039;&#039; - оценка за сданные задания в тестирующей системе Ejudge, выставляется согласно описанию ниже. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;H&amp;lt;sub&amp;gt;семинары&amp;lt;/sub&amp;gt;&#039;&#039;&#039; - оценка за семинары, выставляется согласно правилам озвученным вашим семинаристом.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;H&amp;lt;sub&amp;gt;контрольная&amp;lt;/sub&amp;gt;&#039;&#039;&#039; - оценка за контрольную работу в модуле 1.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Автомат&amp;quot;&#039;&#039;&#039; выдаётся, если оценки за ДЗ и семинары не ниже некоторых пороговых значений, которые будут объявлены дополнительно.&lt;br /&gt;
&lt;br /&gt;
=== Формула рассчета оценки Ejudge ===&lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
== Прокторинг ==&lt;br /&gt;
&lt;br /&gt;
На контрольной работе и экзамене применяется селф-прокторинг (даже если вы находитесь в аудитории): необходимо сделать видеозапись, на которой видны ваш экран и ваше лицо во время решения задач. Микрофон тоже должен быть включён. В начале записи, пожалуйста, представьтесь. Запись необходимо будет выложить в любое облачное хранилище и сдать в ejudge ссылку на неё в течении нескольких часов после. Запись нужно хранить до выставления оценки за курс. Размер файла записи не должен сильно превышать 250 МБ. Помните, запись это ваше доказательство честности написанной работы. Инструкция по настройке ОБС появится позднее на вики. Рекомендуется качество не выше 720р и не ниже 360р&lt;br /&gt;
&lt;br /&gt;
На контрольной работе можно пользоваться любыми материалами, веб-сайтами и т. д., за исключением интерактивного общения с кем-либо (гуглить можно, а вот советоваться нельзя). Телеграм-канал курса, а также официальные чаты курса также явно разрешены. В канале могут появляться важные объявления, за ним рекомендуется следить.&lt;br /&gt;
&lt;br /&gt;
= Записи лекций =&lt;br /&gt;
&lt;br /&gt;
TODO&lt;/div&gt;</summary>
		<author><name>Objatie groba</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=%D0%AF%D0%B7%D1%8B%D0%BA_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F_Python_2023/24_(%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D0%BE%D0%B9_%D0%BF%D0%BE%D1%82%D0%BE%D0%BA)&amp;diff=79322</id>
		<title>Язык программирования Python 2023/24 (основной поток)</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=%D0%AF%D0%B7%D1%8B%D0%BA_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F_Python_2023/24_(%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D0%BE%D0%B9_%D0%BF%D0%BE%D1%82%D0%BE%D0%BA)&amp;diff=79322"/>
		<updated>2023-09-07T09:59:44Z</updated>

		<summary type="html">&lt;p&gt;Objatie groba: /* Преподаватели и учебные ассистенты */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Telegram-канал: https://t.me/+S6XtwyGWbDoxMDAy (чат - в обсуждении к каналу)&lt;br /&gt;
&lt;br /&gt;
== Преподаватели и учебные ассистенты ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Группа !! БПМИ233-1 !! БПМИ233-2 !! БПМИ234-1 !! БПМИ234-2 !! БПМИ236-1 !! БПМИ236-2 !! БПМИ237-1 !! БПМИ237-2 !! БПМИ238-1 !! БПМИ238-2 !! БПМИ239-1 !! БПМИ239-2 !! БПМИ2310-1 !! БПМИ2310-2 !! БПМИ2311-1 !! БПМИ2311-2 !! БПМИ2312-1 !! БПМИ2312-2 !! БЭАД231 !! БЭАД232 !! БЭАД233&lt;br /&gt;
|-&lt;br /&gt;
|| Лектор ||colspan=&amp;quot;21&amp;quot;| [https://t.me/palladain Тимур Петров]&lt;br /&gt;
|- &lt;br /&gt;
|| Семинарист || [https://t.me/Mr_galitskii Борис Галицкий] || [https://t.me/ydubn Юрий Дубнов] || [https://t.me/pankova_mg Марина Панькова] || [https://t.me/Fading_Soul Кирилл Шахматов] || [https://t.me/Mr_galitskii Борис Галицкий] || [https://t.me/Mr_galitskii Борис Галицкий] || [https://t.me/ydubn Юрий Дубнов] || [https://t.me/kiDaniel Даниэль Хайбулин] || [https://t.me/Ch0p1k Иван Лущ] || [https://t.me/objatie_groba Игорь Минеев] || [https://t.me/MrDredD Азиз Темирханов] || [https://t.me/MrDredD Азиз Темирханов] || [https://t.me/spnechaev Сергей Нечаев] || [https://t.me/spnechaev Сергей Нечаев] || [https://t.me/leskiv Олеся Васина] / [https://t.me/al_plo Алексей Плотников] || [https://t.me/paiflare Андрей Петров] || [https://t.me/evgen1997 Евгений Хомутов] || [https://t.me/mil_ev Евгения Милюта] || [https://t.me/GogolevaMA Мария Гоголева] || [https://t.me/GogolevaMA Мария Гоголева] / [https://t.me/Ni_Mans Никита Мануйленко] || [https://t.me/Ni_Mans Никита Мануйленко]&lt;br /&gt;
|-&lt;br /&gt;
|| Ассистент || [https://t.me/lfgetl Фаргат Гарипов] || [https://t.me/a_ri_sha_sha Арина Шайдеман] || [https://t.me/Femistoclus1 Никита Глебский] || [https://t.me/sinfillo Дарья Фомина] || [https://t.me/sodora Дарья Гвоздева] || [https://t.me/qwrnsqlx Данила Энгель] || [https://t.me/mishasvintus Михаил Гончаров] || [https://t.me/oleja_shpep Олег Рябов] || [https://t.me/dahbka_lis Даниил Тимижев] || [https://t.me/pchelka_zh Никита Шевердов] || [https://t.me/hoshicasia Наталья Михайловская] || [https://t.me/IlyaMazaev Илья Мазаев] || [https://t.me/govzman Илья Говзман] || [https://t.me/be_my_fire Дарья Прихач] || [https://t.me/h1de0us Екатерина Козлова] || [https://t.me/volyachka Ольга Турчина] || [https://t.me/ekhuf Эрика Пастухова] || [https://t.me/zendyxx Юлия Павлова] || [https://t.me/uletelanamars Ника Прокудина] || [https://t.me/SpV16 Владислав Гарбуз] || [https://t.me/malov_pavel Павел Малов] ||&lt;br /&gt;
|-&lt;br /&gt;
|| Ассистент курса ||colspan=&amp;quot;21&amp;quot;| [https://t.me/on1kova Дарья Оникова]&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;О_итог = 0,3 * О_экз + 0,7 * О_накоп&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;О_накоп = 0,3 * О_сем + 0,7 * О_дз&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Округление оценки - округляется &#039;&#039;&#039;только&#039;&#039;&#039; итог. Округление арифметическое, блокирующих оценок нет.&lt;br /&gt;
&lt;br /&gt;
Возможно получение оценки за курс &amp;quot;автоматом&amp;quot; (не сдавать экзамен) при условии:&lt;br /&gt;
&lt;br /&gt;
1) накопленная оценка &amp;gt;= 8&lt;br /&gt;
&lt;br /&gt;
2) оценка за работу на семинаре &amp;gt;=8&lt;br /&gt;
&lt;br /&gt;
Домашние задания = контест после каждой пары. Каждый контест имеет 2 дедлайна: мягкий и жесткий. Первая неделя - мягкий дедлайн (все задачи имеют полный балл), вторая неделя - жесткий дедлайн (имеют вес 0.7). После жесткого дедлайна задачи не оцениваются. О_дз высчитывается как средняя оценка за домашние контесты&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;
Необходимо установить интерпретатор Python под свою ОС - https://www.python.org/downloads/&lt;br /&gt;
&lt;br /&gt;
и по желанию какую-либо среду разработки: &lt;br /&gt;
* JetBrains PyCharm Community: https://www.jetbrains.com/pycharm/download/&lt;br /&gt;
&lt;br /&gt;
* Visual Studio Code: https://code.visualstudio.com/&lt;br /&gt;
# Скачать [https://code.visualstudio.com/#alt-downloads VS Code]&lt;br /&gt;
# Установить расширения (extensions) - &#039;&#039;&#039;Python, autopep8, Python Indent, Jupyter&#039;&#039;&#039;&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;
== Ссылки на чаты групп ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Группа !! БПМИ231 !! БПМИ232 !! БПМИ233 !! БПМИ234 !! БПМИ235 !! БПМИ236 !! БПМИ237 !! БПМИ238 !! БПМИ239 !! БПМИ2310 !! БПМИ2311 !! БПМИ2312&lt;br /&gt;
|-&lt;br /&gt;
|| Ссылка || [Тык] [Тык] || [Тык] [Тык] || [Тык] [Тык] || [Тык] [Тык] || [Тык] [Тык] || [Тык] [Тык] || [Тык] [Тык] || [Тык] [https://t.me/+iO5uV8JNCf05ZGUy 238-2] || [Тык] [Тык] || [Тык] [Тык] || [Тык] [https://t.me/+YaGkx7zVSBJkZTky Тык] || [Тык] [Тык]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Objatie groba</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=%D0%AF%D0%B7%D1%8B%D0%BA_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F_Python_2023/24_(%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D0%BE%D0%B9_%D0%BF%D0%BE%D1%82%D0%BE%D0%BA)&amp;diff=79321</id>
		<title>Язык программирования Python 2023/24 (основной поток)</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=%D0%AF%D0%B7%D1%8B%D0%BA_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F_Python_2023/24_(%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D0%BE%D0%B9_%D0%BF%D0%BE%D1%82%D0%BE%D0%BA)&amp;diff=79321"/>
		<updated>2023-09-07T09:56:41Z</updated>

		<summary type="html">&lt;p&gt;Objatie groba: /* Ссылки на чаты групп */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Telegram-канал: https://t.me/+S6XtwyGWbDoxMDAy (чат - в обсуждении к каналу)&lt;br /&gt;
&lt;br /&gt;
== Преподаватели и учебные ассистенты ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Группа !! БПМИ233-1 !! БПМИ233-2 !! БПМИ234-1 !! БПМИ234-2 !! БПМИ236-1 !! БПМИ236-2 !! БПМИ237-1 !! БПМИ237-2 !! БПМИ238-1 !! БПМИ238-1 !! БПМИ239-1 !! БПМИ239-2 !! БПМИ2310-1 !! БПМИ2310-2 !! БПМИ2311-1 !! БПМИ2311-2 !! БПМИ2312-1 !! БПМИ2312-2 !! БЭАД231 !! БЭАД232 !! БЭАД233&lt;br /&gt;
|-&lt;br /&gt;
|| Лектор ||colspan=&amp;quot;21&amp;quot;| [https://t.me/palladain Тимур Петров]&lt;br /&gt;
|- &lt;br /&gt;
|| Семинарист || [https://t.me/Mr_galitskii Борис Галицкий] || [https://t.me/ydubn Юрий Дубнов] || [https://t.me/pankova_mg Марина Панькова] || [https://t.me/Fading_Soul Кирилл Шахматов] || [https://t.me/Mr_galitskii Борис Галицкий] || [https://t.me/Mr_galitskii Борис Галицкий] || [https://t.me/ydubn Юрий Дубнов] || [https://t.me/kiDaniel Даниэль Хайбулин] || [https://t.me/Ch0p1k Иван Лущ] || [https://t.me/objatie_groba Игорь Минеев] || [https://t.me/MrDredD Азиз Темирханов] || [https://t.me/MrDredD Азиз Темирханов] || [https://t.me/spnechaev Сергей Нечаев] || [https://t.me/spnechaev Сергей Нечаев] || [https://t.me/leskiv Олеся Васина] / [https://t.me/al_plo Алексей Плотников] || [https://t.me/paiflare Андрей Петров] || [https://t.me/evgen1997 Евгений Хомутов] || [https://t.me/mil_ev Евгения Милюта] || [https://t.me/GogolevaMA Мария Гоголева] || [https://t.me/GogolevaMA Мария Гоголева] / [https://t.me/Ni_Mans Никита Мануйленко] || [https://t.me/Ni_Mans Никита Мануйленко]&lt;br /&gt;
|-&lt;br /&gt;
|| Ассистент || [https://t.me/lfgetl Фаргат Гарипов] || [https://t.me/a_ri_sha_sha Арина Шайдеман] || [https://t.me/Femistoclus1 Никита Глебский] || [https://t.me/sinfillo Дарья Фомина] || [https://t.me/sodora Дарья Гвоздева] || [https://t.me/qwrnsqlx Данила Энгель] || [https://t.me/mishasvintus Михаил Гончаров] || [https://t.me/oleja_shpep Олег Рябов] || [https://t.me/dahbka_lis Даниил Тимижев] || [https://t.me/pchelka_zh Никита Шевердов] || [https://t.me/hoshicasia Наталья Михайловская] || [https://t.me/IlyaMazaev Илья Мазаев] || [https://t.me/govzman Илья Говзман] || [https://t.me/be_my_fire Дарья Прихач] || [https://t.me/h1de0us Екатерина Козлова] || [https://t.me/volyachka Ольга Турчина] || [https://t.me/ekhuf Эрика Пастухова] || [https://t.me/zendyxx Юлия Павлова] || [https://t.me/uletelanamars Ника Прокудина] || [https://t.me/SpV16 Владислав Гарбуз] || [https://t.me/malov_pavel Павел Малов] ||&lt;br /&gt;
|-&lt;br /&gt;
|| Ассистент курса ||colspan=&amp;quot;21&amp;quot;| [https://t.me/on1kova Дарья Оникова]&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;О_итог = 0,3 * О_экз + 0,7 * О_накоп&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;О_накоп = 0,3 * О_сем + 0,7 * О_дз&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Округление оценки - округляется &#039;&#039;&#039;только&#039;&#039;&#039; итог. Округление арифметическое, блокирующих оценок нет.&lt;br /&gt;
&lt;br /&gt;
Возможно получение оценки за курс &amp;quot;автоматом&amp;quot; (не сдавать экзамен) при условии:&lt;br /&gt;
&lt;br /&gt;
1) накопленная оценка &amp;gt;= 8&lt;br /&gt;
&lt;br /&gt;
2) оценка за работу на семинаре &amp;gt;=8&lt;br /&gt;
&lt;br /&gt;
Домашние задания = контест после каждой пары. Каждый контест имеет 2 дедлайна: мягкий и жесткий. Первая неделя - мягкий дедлайн (все задачи имеют полный балл), вторая неделя - жесткий дедлайн (имеют вес 0.7). После жесткого дедлайна задачи не оцениваются. О_дз высчитывается как средняя оценка за домашние контесты&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;
Необходимо установить интерпретатор Python под свою ОС - https://www.python.org/downloads/&lt;br /&gt;
&lt;br /&gt;
и по желанию какую-либо среду разработки: &lt;br /&gt;
* JetBrains PyCharm Community: https://www.jetbrains.com/pycharm/download/&lt;br /&gt;
&lt;br /&gt;
* Visual Studio Code: https://code.visualstudio.com/&lt;br /&gt;
# Скачать [https://code.visualstudio.com/#alt-downloads VS Code]&lt;br /&gt;
# Установить расширения (extensions) - &#039;&#039;&#039;Python, autopep8, Python Indent, Jupyter&#039;&#039;&#039;&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;
== Ссылки на чаты групп ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Группа !! БПМИ231 !! БПМИ232 !! БПМИ233 !! БПМИ234 !! БПМИ235 !! БПМИ236 !! БПМИ237 !! БПМИ238 !! БПМИ239 !! БПМИ2310 !! БПМИ2311 !! БПМИ2312&lt;br /&gt;
|-&lt;br /&gt;
|| Ссылка || [Тык] [Тык] || [Тык] [Тык] || [Тык] [Тык] || [Тык] [Тык] || [Тык] [Тык] || [Тык] [Тык] || [Тык] [Тык] || [Тык] [https://t.me/+iO5uV8JNCf05ZGUy 238-2] || [Тык] [Тык] || [Тык] [Тык] || [Тык] [https://t.me/+YaGkx7zVSBJkZTky Тык] || [Тык] [Тык]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Objatie groba</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=CAOS-2023/24&amp;diff=79135</id>
		<title>CAOS-2023/24</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=CAOS-2023/24&amp;diff=79135"/>
		<updated>2023-09-05T12:35:05Z</updated>

		<summary type="html">&lt;p&gt;Objatie groba: /* Чатики и преподаватели по группам */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Вход в тестирующую систему: https://caos2023.myltsev.ru&lt;br /&gt;
&lt;br /&gt;
Материалы лекций: https://caos2023.myltsev.ru/lectures/&lt;br /&gt;
&lt;br /&gt;
[https://caos2023.myltsev.ru/style.html Стиль оформления программ на Си]&lt;br /&gt;
&lt;br /&gt;
[https://t.me/+-RJj6i7NMaE1MWIy Чатик курса] &lt;br /&gt;
&lt;br /&gt;
[https://t.me/+duw-cU1uT4FjNzYy Канал с объявлениями]&lt;br /&gt;
&lt;br /&gt;
[https://forms.gle/AMBwLvi9mNPqvUjU7 Форма для фидбека]&lt;br /&gt;
&lt;br /&gt;
[https://exuberant-arthropod-be8.notion.site/21-22-0f236f7d03c74dfbbd945f93651758a2 Конспект лекций 2021 года от студентов]&lt;br /&gt;
&lt;br /&gt;
== Чатики и преподаватели по группам ==&lt;br /&gt;
Лектор — Александр Мыльцев [https://t.me/myltsev @myltsev]&lt;br /&gt;
&lt;br /&gt;
Старший семинарист - Игорь Минеев [https://t.me/objatie_groba @objatie_groba]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Группа !! Чатик !! Преподаватель !! Ассистенты&lt;br /&gt;
|-&lt;br /&gt;
| 221 || TODO || TODO || TODO&lt;br /&gt;
|-&lt;br /&gt;
| 222 || https://t.me/+uCLKSieZ3z8zNjk6 || [https://t.me/objatie_groba Игорь Минеев] || [https://t.me/l0i4b Арсений Болотников], [https://t.me/dikirillov Даниил Кириллов]&lt;br /&gt;
|-&lt;br /&gt;
| 223 || TODO || TODO || TODO&lt;br /&gt;
|-&lt;br /&gt;
| 224 || TODO || TODO || TODO&lt;br /&gt;
|-&lt;br /&gt;
| 225 || TODO || TODO || TODO&lt;br /&gt;
|-&lt;br /&gt;
| 226 || TODO || TODO || TODO&lt;br /&gt;
|-&lt;br /&gt;
| 227 || TODO || TODO || TODO&lt;br /&gt;
|-&lt;br /&gt;
| 228 || TODO || TODO || TODO&lt;br /&gt;
|-&lt;br /&gt;
| 229 || TODO || TODO || TODO&lt;br /&gt;
|-&lt;br /&gt;
| 2210 || TODO || TODO || TODO&lt;br /&gt;
|-&lt;br /&gt;
| SPB || https://t.me/+AC9G7J5_AS8zMjJi || [https://t.me/evlinsky Евгений Линский] || TODO&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Настройка рабочего окружения =&lt;br /&gt;
===kks===&lt;br /&gt;
https://github.com/darkkeks/kks&lt;br /&gt;
&lt;br /&gt;
kks это консольная утилитка для курса, выполняющая много вещей, среди которых можно выделить несколько основных:&lt;br /&gt;
# Скачивание задач/сэмплов/контрольных с помощью одной команды. То же самое со сдачей задач: можно сдать и получить сразу результат. &lt;br /&gt;
# Генерация тестов с помощью скриптов и их тестирование.&lt;br /&gt;
# Просмотр рейтинга (как общего, так и по группам) в удобном формате&lt;br /&gt;
&lt;br /&gt;
Пример использования:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;kks sync  # скачивание задач&lt;br /&gt;
# тут вы написали свой код&lt;br /&gt;
kks test --sample  # тестирование&lt;br /&gt;
kks submit&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Больше примеров можно посмотреть в репозитории&lt;br /&gt;
===Библиотека ввода-вывода===&lt;br /&gt;
Библиотека ввода-вывода для ассемблера x86: [https://caos2023.myltsev.ru/simpleio_i686.S simpleio_i686.S]&lt;br /&gt;
&lt;br /&gt;
Внутри виртуальной машины её можно скачать командой &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;wget https://caos2023.myltsev.ru/simpleio_i686.S&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если получаете сообщение, что Wget не установлен на вашей системе (на Ubuntu Desktop по умолчанию нет), то установите его следующей командой: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;sudo apt install wget&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Виртуальная машина (VirtualBox)===&lt;br /&gt;
[https://caos2023.myltsev.ru/hse-caos-xubuntu.ova Образ виртуальной машины]&lt;br /&gt;
&lt;br /&gt;
Рекомендуется скачать образ и установить его в эмулятор [https://www.virtualbox.org/ VirtualBox]. Логин-пароль xubuntu/xubuntu, можно делать sudo.&lt;br /&gt;
&lt;br /&gt;
===Docker для пользователей MacOS (intel based)===&lt;br /&gt;
&#039;&#039;&#039;Проверялось на MacOS BigSur и Monterey&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Загрузить сам докер можно отсюда: [https://docs.docker.com/get-docker/ тык]&lt;br /&gt;
&lt;br /&gt;
Команда для запуска: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;docker run -it --rm -v `pwd`:/caos -w /caos ubuntu&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В терминале заходите в свою папку с акосом и запускаете эту команду. После нее вы начинаете работать с контейнером Ubuntu в папке /caos, где будет все содержимое вашей папки в основной ОС. &lt;br /&gt;
Изменять содержимое внутри /caos можно и изнутри контейнера, и снаружи, изменения будут видны и там и там.&lt;br /&gt;
&lt;br /&gt;
Внутри контейнера стоит установить gcc-multilib, без неё не заведётся: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;apt update &amp;amp;&amp;amp; apt install -y gcc-multilib&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь вы можете писать код внутри своей любимой IDE (запущенной напрямую в вашей ОС, например VSCode), а компилить и запускать в докере через терминал.&lt;br /&gt;
&lt;br /&gt;
===Docker для пользователей MacOS на Apple Silicon===&lt;br /&gt;
Добавьте в .bashrc или .zshrc:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;export DOCKER_DEFAULT_PLATFORM=linux/amd64&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После этого перезапустите Docker.&lt;br /&gt;
&lt;br /&gt;
Вариант2: &lt;br /&gt;
* Скачиваем docker.&lt;br /&gt;
* Переходим в папку с задачами в терминале.&lt;br /&gt;
* Выполняем &amp;lt;code&amp;gt;docker run --platform linux/amd64 -it --rm -v `pwd`:/caos -w /caos ubuntu&amp;lt;/code&amp;gt;&lt;br /&gt;
* Делаем &amp;lt;code&amp;gt;apt update&amp;lt;/code&amp;gt;&lt;br /&gt;
* Делаем &amp;lt;code&amp;gt; apt -y install build-essential gcc-multilib &amp;lt;/code&amp;gt;&lt;br /&gt;
* Собираем задачки командой &amp;lt;code&amp;gt;gcc -m32 -g задача.S simpleio_i686.S&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===CLion===&lt;br /&gt;
Для начала скачайте CLion с официального сайта и устанавите его.&lt;br /&gt;
====Если у вас не linux: вар. 1 - docker====&lt;br /&gt;
Скачайте и установите docker desktop. Добейтесь того, чтобы у вас заработал docker hello world (&amp;lt;code&amp;gt;docker run --rm hello-world&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Если у вас MacOs на арме&amp;lt;/b&amp;gt; сделайте то, что написано выше.&lt;br /&gt;
&lt;br /&gt;
После этого нам потребуется специальный образ с необходимыми для курса библиотеками и программами. &lt;br /&gt;
Создайте файл с именем Dockerfile и следующим содержанием:&lt;br /&gt;
&amp;lt;pre&amp;gt;FROM ubuntu:latest&lt;br /&gt;
&lt;br /&gt;
RUN apt update &amp;amp;&amp;amp; apt install -y gcc-multilib gdb make cmake g++&lt;br /&gt;
WORKDIR /caos&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В директории с этим запустите эту команду чтобы собрать образ: &amp;lt;code&amp;gt;docker build -t caos .&amp;lt;/code&amp;gt; и дождитесь пока она выполнится.&lt;br /&gt;
&lt;br /&gt;
После этого откройте окно настроек, перейдите в пункт Build, Execution, Deployment -&amp;gt; Toolchains и добавьте новый Toolchain с типом Docker.&lt;br /&gt;
В поле Image укажите &amp;lt;code&amp;gt;caos:latest&amp;lt;/code&amp;gt;, а остальные поля должны определиться автоматически. Поместите этот Toolchain первым в списке сделав его default&#039;ным.&lt;br /&gt;
&lt;br /&gt;
====Если у вас не linux: вар. 2 - wsl (Windows only)====&lt;br /&gt;
&lt;br /&gt;
Установите wsl 2, выберите дистрибутив Ubuntu.&lt;br /&gt;
Внутри wsl 2 поставьте необходимые пакеты (&amp;lt;code&amp;gt;sudo apt install gcc-multilib make cmake g++ gdb&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
После этого откройте окно настроек, перейдите в пункт Build, Execution, Deployment -&amp;gt; Toolchains и добавьте новый Toolchain с типом WSL.&lt;br /&gt;
Все поля должны определиться автоматически. Поместите этот Toolchain первым в списке сделав его default&#039;ным.&lt;br /&gt;
&lt;br /&gt;
====Далее====&lt;br /&gt;
Создайте проект (можете выбрать C Executable, но это не особо принципиально)&lt;br /&gt;
Скачайте simpleio_i686.S и поместите в корень проекта.&lt;br /&gt;
&lt;br /&gt;
В &amp;lt;code&amp;gt;CMakeLists.txt&amp;lt;/code&amp;gt; удалите всё и вставьте это:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake_minimum_required(VERSION 3.10)&lt;br /&gt;
project(caos ASM)&lt;br /&gt;
&lt;br /&gt;
add_compile_options(-m32)&lt;br /&gt;
add_link_options(-m32)&lt;br /&gt;
&lt;br /&gt;
file(GLOB_RECURSE sources_list LIST_DIRECTORIES true ./*)&lt;br /&gt;
foreach(file ${sources_list})&lt;br /&gt;
    IF(${file} MATCHES &amp;quot;.S$&amp;quot; AND NOT ${file} MATCHES &amp;quot;simpleio_i686.S&amp;quot;)&lt;br /&gt;
        get_filename_component(X ${file} NAME)&lt;br /&gt;
        add_executable(${X} ${file} simpleio_i686.S)&lt;br /&gt;
    endif()&lt;br /&gt;
endforeach()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сделайте Reload Cmake project (Внизу выберите вкладку Cmake и нажмите слева на кнопку обновления с двумя стрелочками).&lt;br /&gt;
&lt;br /&gt;
Этот конфиг написан таким образом, чтобы эффективно работать совместно с kks. На каждый .S файл (кроме библиотеке simpleio_i686.S) он создаст цель для сборки. &lt;br /&gt;
После того как у вас в проекте появляется новый файл (например после &amp;lt;code&amp;gt;kks sync&amp;lt;/code&amp;gt;) нужно делать Reload Cmake project.&lt;br /&gt;
Выберите справа сверху интересующий вас файл и запускайте. &lt;br /&gt;
&lt;br /&gt;
====Подсветка синтаксиса====&lt;br /&gt;
Если она работает не правильно, откройте файл &amp;lt;code&amp;gt;simpleio_i686.S&amp;lt;/code&amp;gt;, нажмите на его вкладку в списке открытых файлов сверху правой кнопкой мыши и выберите &amp;quot;Associate file type&amp;quot;. В списке выберите Assembly Language.&lt;br /&gt;
&lt;br /&gt;
====Дебагер====&lt;br /&gt;
Дебагер работает из-коробки.&lt;br /&gt;
&lt;br /&gt;
Чтобы узнать значения регистра напишите в поле снизу строку $eax и нажмите на кнопку &amp;quot;+&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Yabloko ===&lt;br /&gt;
Для того чтобы собрать Yabloko вам потребуется &lt;br /&gt;
* Компилятор, который умеет собирать elf-файлы под архитектуру x86. В мире линукса для такого традиционно собирают ещё одну копию &amp;lt;code&amp;gt;gcc&amp;lt;/code&amp;gt; (и называют &amp;lt;code&amp;gt;x86_64-elf-gcc&amp;lt;/code&amp;gt;, чтобы не путаться), однако &amp;lt;code&amp;gt;clang&amp;lt;/code&amp;gt;, в отличие от &amp;lt;code&amp;gt;gcc&amp;lt;/code&amp;gt;, в стандартной поставке уже имеет кросс-компилятор и кросс-линкер, так что можно (пока в теории) использовать его.&lt;br /&gt;
* [https://www.qemu.org/download/ QEMU]&lt;br /&gt;
&lt;br /&gt;
Всё это вы можете получить локально, не зависимо от того, на какой вы ОС.&lt;br /&gt;
Если вы по какой-то причине решили использовать учебный (или любой другой) сервер, то не забывайте добавлять к команде ssh опцию -X, которая пробрасывает X-сервер, а также по настроению опцию -C, которая сжимает передаваемые данные. Если у вас не линукс, то в таком случае вам потребуется ещё и скачать и установить X-сервер. Для [https://www.xquartz.org/ MacOs]. Для [https://sourceforge.net/projects/xming/ windows]. Если вы пользуетесь Putty, то поставьте галочку в Connection -&amp;gt; SSH -&amp;gt; X11 -&amp;gt; Enable X11 forwarding.&lt;br /&gt;
&lt;br /&gt;
= Как устроен курс =&lt;br /&gt;
== Контрольные мероприятия ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Когда !! Что&lt;br /&gt;
|-&lt;br /&gt;
| В конце 1-го модуля || контрольная в формате экзамена&lt;br /&gt;
|-&lt;br /&gt;
| В конце 2-го модуля || экзамен&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Формула оценки ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;O&amp;lt;sub&amp;gt;АК&amp;lt;/sub&amp;gt; = 0.5 * H&amp;lt;sub&amp;gt;ejudge&amp;lt;/sub&amp;gt; + 0.05 * H&amp;lt;sub&amp;gt;семинары&amp;lt;/sub&amp;gt; + 0.15 * H&amp;lt;sub&amp;gt;контрольная&amp;lt;/sub&amp;gt; + 0.3 * Э&#039;&#039;&#039;&lt;br /&gt;
Все оценки кроме итоговой дробные с округлением до 2х знаков после запятой. Итоговая оценка округляется арифметически.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;H&amp;lt;sub&amp;gt;ejudge&amp;lt;/sub&amp;gt;&#039;&#039;&#039; - оценка за сданные задания в тестирующей системе Ejudge, выставляется согласно описанию ниже. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;H&amp;lt;sub&amp;gt;семинары&amp;lt;/sub&amp;gt;&#039;&#039;&#039; - оценка за семинары, выставляется согласно правилам озвученным вашим семинаристом.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;H&amp;lt;sub&amp;gt;контрольная&amp;lt;/sub&amp;gt;&#039;&#039;&#039; - оценка за контрольную работу в модуле 1.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Автомат&amp;quot;&#039;&#039;&#039; выдаётся, если оценки за ДЗ и семинары не ниже некоторых пороговых значений, которые будут объявлены дополнительно.&lt;br /&gt;
&lt;br /&gt;
=== Формула рассчета оценки Ejudge ===&lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
== Прокторинг ==&lt;br /&gt;
&lt;br /&gt;
На контрольной работе и экзамене применяется селф-прокторинг (даже если вы находитесь в аудитории): необходимо сделать видеозапись, на которой видны ваш экран и ваше лицо во время решения задач. Микрофон тоже должен быть включён. В начале записи, пожалуйста, представьтесь. Запись необходимо будет выложить в любое облачное хранилище и сдать в ejudge ссылку на неё в течении нескольких часов после. Запись нужно хранить до выставления оценки за курс. Размер файла записи не должен сильно превышать 250 МБ. Помните, запись это ваше доказательство честности написанной работы. Инструкция по настройке ОБС появится позднее на вики. Рекомендуется качество не выше 720р и не ниже 360р&lt;br /&gt;
&lt;br /&gt;
На контрольной работе можно пользоваться любыми материалами, веб-сайтами и т. д., за исключением интерактивного общения с кем-либо (гуглить можно, а вот советоваться нельзя). Телеграм-канал курса, а также официальные чаты курса также явно разрешены. В канале могут появляться важные объявления, за ним рекомендуется следить.&lt;br /&gt;
&lt;br /&gt;
= Записи лекций =&lt;br /&gt;
&lt;br /&gt;
TODO&lt;/div&gt;</summary>
		<author><name>Objatie groba</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=CAOS-2023/24&amp;diff=78946</id>
		<title>CAOS-2023/24</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=CAOS-2023/24&amp;diff=78946"/>
		<updated>2023-09-03T10:52:37Z</updated>

		<summary type="html">&lt;p&gt;Objatie groba: caos -&amp;gt; caos2023&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Вход в тестирующую систему: https://caos2023.myltsev.ru&lt;br /&gt;
&lt;br /&gt;
Материалы лекций: https://caos2023.myltsev.ru/lectures/&lt;br /&gt;
&lt;br /&gt;
[https://caos2023.myltsev.ru/style.html Стиль оформления программ на Си]&lt;br /&gt;
&lt;br /&gt;
[https://t.me/+-RJj6i7NMaE1MWIy Чатик курса] &lt;br /&gt;
&lt;br /&gt;
[https://t.me/+duw-cU1uT4FjNzYy Канал с объявлениями]&lt;br /&gt;
&lt;br /&gt;
[https://forms.gle/AMBwLvi9mNPqvUjU7 Форма для фидбека]&lt;br /&gt;
&lt;br /&gt;
[https://exuberant-arthropod-be8.notion.site/21-22-0f236f7d03c74dfbbd945f93651758a2 Конспект лекций 2021 года от студентов]&lt;br /&gt;
&lt;br /&gt;
== Чатики и преподаватели по группам ==&lt;br /&gt;
Лектор — Александр Мыльцев [https://t.me/myltsev @myltsev]&lt;br /&gt;
&lt;br /&gt;
Старший семинарист - Игорь Минеев [https://t.me/objatie_groba @objatie_groba]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Группа !! Чатик !! Преподаватель !! Ассистенты&lt;br /&gt;
|-&lt;br /&gt;
| 221 || TODO || TODO || TODO&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Настройка рабочего окружения =&lt;br /&gt;
===kks===&lt;br /&gt;
https://github.com/darkkeks/kks&lt;br /&gt;
&lt;br /&gt;
kks это консольная утилитка для курса, выполняющая много вещей, среди которых можно выделить несколько основных:&lt;br /&gt;
# Скачивание задач/сэмплов/контрольных с помощью одной команды. То же самое со сдачей задач: можно сдать и получить сразу результат. &lt;br /&gt;
# Генерация тестов с помощью скриптов и их тестирование.&lt;br /&gt;
# Просмотр рейтинга (как общего, так и по группам) в удобном формате&lt;br /&gt;
&lt;br /&gt;
Пример использования:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;kks sync  # скачивание задач&lt;br /&gt;
# тут вы написали свой код&lt;br /&gt;
kks test --sample  # тестирование&lt;br /&gt;
kks submit&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Больше примеров можно посмотреть в репозитории&lt;br /&gt;
===Библиотека ввода-вывода===&lt;br /&gt;
Библиотека ввода-вывода для ассемблера x86: [https://caos2023.myltsev.ru/simpleio_i686.S simpleio_i686.S]&lt;br /&gt;
&lt;br /&gt;
Внутри виртуальной машины её можно скачать командой &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;wget https://caos2023.myltsev.ru/simpleio_i686.S&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если получаете сообщение, что Wget не установлен на вашей системе (на Ubuntu Desktop по умолчанию нет), то установите его следующей командой: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;sudo apt install wget&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Виртуальная машина (VirtualBox)===&lt;br /&gt;
[https://caos2023.myltsev.ru/hse-caos-xubuntu.ova Образ виртуальной машины]&lt;br /&gt;
&lt;br /&gt;
Рекомендуется скачать образ и установить его в эмулятор [https://www.virtualbox.org/ VirtualBox]. Логин-пароль xubuntu/xubuntu, можно делать sudo.&lt;br /&gt;
&lt;br /&gt;
===Docker для пользователей MacOS (intel based)===&lt;br /&gt;
&#039;&#039;&#039;Проверялось на MacOS BigSur и Monterey&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Загрузить сам докер можно отсюда: [https://docs.docker.com/get-docker/ тык]&lt;br /&gt;
&lt;br /&gt;
Команда для запуска: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;docker run -it --rm -v `pwd`:/caos -w /caos ubuntu&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В терминале заходите в свою папку с акосом и запускаете эту команду. После нее вы начинаете работать с контейнером Ubuntu в папке /caos, где будет все содержимое вашей папки в основной ОС. &lt;br /&gt;
Изменять содержимое внутри /caos можно и изнутри контейнера, и снаружи, изменения будут видны и там и там.&lt;br /&gt;
&lt;br /&gt;
Внутри контейнера стоит установить gcc-multilib, без неё не заведётся: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;apt update &amp;amp;&amp;amp; apt install -y gcc-multilib&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь вы можете писать код внутри своей любимой IDE (запущенной напрямую в вашей ОС, например VSCode), а компилить и запускать в докере через терминал.&lt;br /&gt;
&lt;br /&gt;
===Docker для пользователей MacOS на Apple Silicon===&lt;br /&gt;
Добавьте в .bashrc или .zshrc:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;export DOCKER_DEFAULT_PLATFORM=linux/amd64&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После этого перезапустите Docker.&lt;br /&gt;
&lt;br /&gt;
Вариант2: &lt;br /&gt;
* Скачиваем docker.&lt;br /&gt;
* Переходим в папку с задачами в терминале.&lt;br /&gt;
* Выполняем &amp;lt;code&amp;gt;docker run --platform linux/amd64 -it --rm -v `pwd`:/caos -w /caos ubuntu&amp;lt;/code&amp;gt;&lt;br /&gt;
* Делаем &amp;lt;code&amp;gt;apt update&amp;lt;/code&amp;gt;&lt;br /&gt;
* Делаем &amp;lt;code&amp;gt; apt -y install build-essential gcc-multilib &amp;lt;/code&amp;gt;&lt;br /&gt;
* Собираем задачки командой &amp;lt;code&amp;gt;gcc -m32 -g задача.S simpleio_i686.S&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===CLion===&lt;br /&gt;
Для начала скачайте CLion с официального сайта и устанавите его.&lt;br /&gt;
====Если у вас не linux: вар. 1 - docker====&lt;br /&gt;
Скачайте и установите docker desktop. Добейтесь того, чтобы у вас заработал docker hello world (&amp;lt;code&amp;gt;docker run --rm hello-world&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Если у вас MacOs на арме&amp;lt;/b&amp;gt; сделайте то, что написано выше.&lt;br /&gt;
&lt;br /&gt;
После этого нам потребуется специальный образ с необходимыми для курса библиотеками и программами. &lt;br /&gt;
Создайте файл с именем Dockerfile и следующим содержанием:&lt;br /&gt;
&amp;lt;pre&amp;gt;FROM ubuntu:latest&lt;br /&gt;
&lt;br /&gt;
RUN apt update &amp;amp;&amp;amp; apt install -y gcc-multilib gdb make cmake g++&lt;br /&gt;
WORKDIR /caos&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В директории с этим запустите эту команду чтобы собрать образ: &amp;lt;code&amp;gt;docker build -t caos .&amp;lt;/code&amp;gt; и дождитесь пока она выполнится.&lt;br /&gt;
&lt;br /&gt;
После этого откройте окно настроек, перейдите в пункт Build, Execution, Deployment -&amp;gt; Toolchains и добавьте новый Toolchain с типом Docker.&lt;br /&gt;
В поле Image укажите &amp;lt;code&amp;gt;caos:latest&amp;lt;/code&amp;gt;, а остальные поля должны определиться автоматически. Поместите этот Toolchain первым в списке сделав его default&#039;ным.&lt;br /&gt;
&lt;br /&gt;
====Если у вас не linux: вар. 2 - wsl (Windows only)====&lt;br /&gt;
&lt;br /&gt;
Установите wsl 2, выберите дистрибутив Ubuntu.&lt;br /&gt;
Внутри wsl 2 поставьте необходимые пакеты (&amp;lt;code&amp;gt;sudo apt install gcc-multilib make cmake g++ gdb&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
После этого откройте окно настроек, перейдите в пункт Build, Execution, Deployment -&amp;gt; Toolchains и добавьте новый Toolchain с типом WSL.&lt;br /&gt;
Все поля должны определиться автоматически. Поместите этот Toolchain первым в списке сделав его default&#039;ным.&lt;br /&gt;
&lt;br /&gt;
====Далее====&lt;br /&gt;
Создайте проект (можете выбрать C Executable, но это не особо принципиально)&lt;br /&gt;
Скачайте simpleio_i686.S и поместите в корень проекта.&lt;br /&gt;
&lt;br /&gt;
В &amp;lt;code&amp;gt;CMakeLists.txt&amp;lt;/code&amp;gt; удалите всё и вставьте это:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake_minimum_required(VERSION 3.10)&lt;br /&gt;
project(caos ASM)&lt;br /&gt;
&lt;br /&gt;
add_compile_options(-m32)&lt;br /&gt;
add_link_options(-m32)&lt;br /&gt;
&lt;br /&gt;
file(GLOB_RECURSE sources_list LIST_DIRECTORIES true ./*)&lt;br /&gt;
foreach(file ${sources_list})&lt;br /&gt;
    IF(${file} MATCHES &amp;quot;.S$&amp;quot; AND NOT ${file} MATCHES &amp;quot;simpleio_i686.S&amp;quot;)&lt;br /&gt;
        get_filename_component(X ${file} NAME)&lt;br /&gt;
        add_executable(${X} ${file} simpleio_i686.S)&lt;br /&gt;
    endif()&lt;br /&gt;
endforeach()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сделайте Reload Cmake project (Внизу выберите вкладку Cmake и нажмите слева на кнопку обновления с двумя стрелочками).&lt;br /&gt;
&lt;br /&gt;
Этот конфиг написан таким образом, чтобы эффективно работать совместно с kks. На каждый .S файл (кроме библиотеке simpleio_i686.S) он создаст цель для сборки. &lt;br /&gt;
После того как у вас в проекте появляется новый файл (например после &amp;lt;code&amp;gt;kks sync&amp;lt;/code&amp;gt;) нужно делать Reload Cmake project.&lt;br /&gt;
Выберите справа сверху интересующий вас файл и запускайте. &lt;br /&gt;
&lt;br /&gt;
====Подсветка синтаксиса====&lt;br /&gt;
Если она работает не правильно, откройте файл &amp;lt;code&amp;gt;simpleio_i686.S&amp;lt;/code&amp;gt;, нажмите на его вкладку в списке открытых файлов сверху правой кнопкой мыши и выберите &amp;quot;Associate file type&amp;quot;. В списке выберите Assembly Language.&lt;br /&gt;
&lt;br /&gt;
====Дебагер====&lt;br /&gt;
Дебагер работает из-коробки.&lt;br /&gt;
&lt;br /&gt;
Чтобы узнать значения регистра напишите в поле снизу строку $eax и нажмите на кнопку &amp;quot;+&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Yabloko ===&lt;br /&gt;
Для того чтобы собрать Yabloko вам потребуется &lt;br /&gt;
* Компилятор, который умеет собирать elf-файлы под архитектуру x86. В мире линукса для такого традиционно собирают ещё одну копию &amp;lt;code&amp;gt;gcc&amp;lt;/code&amp;gt; (и называют &amp;lt;code&amp;gt;x86_64-elf-gcc&amp;lt;/code&amp;gt;, чтобы не путаться), однако &amp;lt;code&amp;gt;clang&amp;lt;/code&amp;gt;, в отличие от &amp;lt;code&amp;gt;gcc&amp;lt;/code&amp;gt;, в стандартной поставке уже имеет кросс-компилятор и кросс-линкер, так что можно (пока в теории) использовать его.&lt;br /&gt;
* [https://www.qemu.org/download/ QEMU]&lt;br /&gt;
&lt;br /&gt;
Всё это вы можете получить локально, не зависимо от того, на какой вы ОС.&lt;br /&gt;
Если вы по какой-то причине решили использовать учебный (или любой другой) сервер, то не забывайте добавлять к команде ssh опцию -X, которая пробрасывает X-сервер, а также по настроению опцию -C, которая сжимает передаваемые данные. Если у вас не линукс, то в таком случае вам потребуется ещё и скачать и установить X-сервер. Для [https://www.xquartz.org/ MacOs]. Для [https://sourceforge.net/projects/xming/ windows]. Если вы пользуетесь Putty, то поставьте галочку в Connection -&amp;gt; SSH -&amp;gt; X11 -&amp;gt; Enable X11 forwarding.&lt;br /&gt;
&lt;br /&gt;
= Как устроен курс =&lt;br /&gt;
== Контрольные мероприятия ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Когда !! Что&lt;br /&gt;
|-&lt;br /&gt;
| В конце 1-го модуля || контрольная в формате экзамена&lt;br /&gt;
|-&lt;br /&gt;
| В конце 2-го модуля || экзамен&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Формула оценки ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;O&amp;lt;sub&amp;gt;АК&amp;lt;/sub&amp;gt; = 0.5 * H&amp;lt;sub&amp;gt;ejudge&amp;lt;/sub&amp;gt; + 0.05 * H&amp;lt;sub&amp;gt;семинары&amp;lt;/sub&amp;gt; + 0.15 * H&amp;lt;sub&amp;gt;контрольная&amp;lt;/sub&amp;gt; + 0.3 * Э&#039;&#039;&#039;&lt;br /&gt;
Все оценки кроме итоговой дробные с округлением до 2х знаков после запятой. Итоговая оценка округляется арифметически.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;H&amp;lt;sub&amp;gt;ejudge&amp;lt;/sub&amp;gt;&#039;&#039;&#039; - оценка за сданные задания в тестирующей системе Ejudge, выставляется согласно описанию ниже. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;H&amp;lt;sub&amp;gt;семинары&amp;lt;/sub&amp;gt;&#039;&#039;&#039; - оценка за семинары, выставляется согласно правилам озвученным вашим семинаристом.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;H&amp;lt;sub&amp;gt;контрольная&amp;lt;/sub&amp;gt;&#039;&#039;&#039; - оценка за контрольную работу в модуле 1.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Автомат&amp;quot;&#039;&#039;&#039; выдаётся, если оценки за ДЗ и семинары не ниже некоторых пороговых значений, которые будут объявлены дополнительно.&lt;br /&gt;
&lt;br /&gt;
=== Формула рассчета оценки Ejudge ===&lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
== Прокторинг ==&lt;br /&gt;
&lt;br /&gt;
На контрольной работе и экзамене применяется селф-прокторинг (даже если вы находитесь в аудитории): необходимо сделать видеозапись, на которой видны ваш экран и ваше лицо во время решения задач. Микрофон тоже должен быть включён. В начале записи, пожалуйста, представьтесь. Запись необходимо будет выложить в любое облачное хранилище и сдать в ejudge ссылку на неё в течении нескольких часов после. Запись нужно хранить до выставления оценки за курс. Размер файла записи не должен сильно превышать 250 МБ. Помните, запись это ваше доказательство честности написанной работы. Инструкция по настройке ОБС появится позднее на вики. Рекомендуется качество не выше 720р и не ниже 360р&lt;br /&gt;
&lt;br /&gt;
На контрольной работе можно пользоваться любыми материалами, веб-сайтами и т. д., за исключением интерактивного общения с кем-либо (гуглить можно, а вот советоваться нельзя). Телеграм-канал курса, а также официальные чаты курса также явно разрешены. В канале могут появляться важные объявления, за ним рекомендуется следить.&lt;br /&gt;
&lt;br /&gt;
= Записи лекций =&lt;br /&gt;
&lt;br /&gt;
TODO&lt;/div&gt;</summary>
		<author><name>Objatie groba</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=CAOS-2023/24&amp;diff=78942</id>
		<title>CAOS-2023/24</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=CAOS-2023/24&amp;diff=78942"/>
		<updated>2023-09-03T09:08:11Z</updated>

		<summary type="html">&lt;p&gt;Objatie groba: /* Чатики и преподаватели по группам */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Вход в тестирующую систему: https://caos.myltsev.ru&lt;br /&gt;
&lt;br /&gt;
Материалы лекций: https://caos.myltsev.ru/lectures/&lt;br /&gt;
&lt;br /&gt;
[https://caos.myltsev.ru/style.html Стиль оформления программ на Си]&lt;br /&gt;
&lt;br /&gt;
[https://t.me/+-RJj6i7NMaE1MWIy Чатик курса] &lt;br /&gt;
&lt;br /&gt;
[https://t.me/+duw-cU1uT4FjNzYy Канал с объявлениями]&lt;br /&gt;
&lt;br /&gt;
[https://forms.gle/AMBwLvi9mNPqvUjU7 Форма для фидбека]&lt;br /&gt;
&lt;br /&gt;
[https://exuberant-arthropod-be8.notion.site/21-22-0f236f7d03c74dfbbd945f93651758a2 Конспект лекций 2021 года от студентов]&lt;br /&gt;
&lt;br /&gt;
== Чатики и преподаватели по группам ==&lt;br /&gt;
Лектор — Александр Мыльцев [https://t.me/myltsev @myltsev]&lt;br /&gt;
&lt;br /&gt;
Старший семинарист - Игорь Минеев [https://t.me/objatie_groba @objatie_groba]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Группа !! Чатик !! Преподаватель !! Ассистенты&lt;br /&gt;
|-&lt;br /&gt;
| 221 || TODO || TODO || TODO&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Настройка рабочего окружения =&lt;br /&gt;
===kks===&lt;br /&gt;
https://github.com/darkkeks/kks&lt;br /&gt;
&lt;br /&gt;
kks это консольная утилитка для курса, выполняющая много вещей, среди которых можно выделить несколько основных:&lt;br /&gt;
# Скачивание задач/сэмплов/контрольных с помощью одной команды. То же самое со сдачей задач: можно сдать и получить сразу результат. &lt;br /&gt;
# Генерация тестов с помощью скриптов и их тестирование.&lt;br /&gt;
# Просмотр рейтинга (как общего, так и по группам) в удобном формате&lt;br /&gt;
&lt;br /&gt;
Пример использования:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;kks sync  # скачивание задач&lt;br /&gt;
# тут вы написали свой код&lt;br /&gt;
kks test --sample  # тестирование&lt;br /&gt;
kks submit&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Больше примеров можно посмотреть в репозитории&lt;br /&gt;
===Библиотека ввода-вывода===&lt;br /&gt;
Библиотека ввода-вывода для ассемблера x86: [https://caos.myltsev.ru/simpleio_i686.S simpleio_i686.S]&lt;br /&gt;
&lt;br /&gt;
Внутри виртуальной машины её можно скачать командой &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;wget https://caos.myltsev.ru/simpleio_i686.S&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если получаете сообщение, что Wget не установлен на вашей системе (на Ubuntu Desktop по умолчанию нет), то установите его следующей командой: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;sudo apt install wget&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Виртуальная машина (VirtualBox)===&lt;br /&gt;
[https://caos.myltsev.ru/hse-caos-xubuntu.ova Образ виртуальной машины]&lt;br /&gt;
&lt;br /&gt;
Рекомендуется скачать образ и установить его в эмулятор [https://www.virtualbox.org/ VirtualBox]. Логин-пароль xubuntu/xubuntu, можно делать sudo.&lt;br /&gt;
&lt;br /&gt;
===Docker для пользователей MacOS (intel based)===&lt;br /&gt;
&#039;&#039;&#039;Проверялось на MacOS BigSur и Monterey&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Загрузить сам докер можно отсюда: [https://docs.docker.com/get-docker/ тык]&lt;br /&gt;
&lt;br /&gt;
Команда для запуска: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;docker run -it --rm -v `pwd`:/caos -w /caos ubuntu&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В терминале заходите в свою папку с акосом и запускаете эту команду. После нее вы начинаете работать с контейнером Ubuntu в папке /caos, где будет все содержимое вашей папки в основной ОС. &lt;br /&gt;
Изменять содержимое внутри /caos можно и изнутри контейнера, и снаружи, изменения будут видны и там и там.&lt;br /&gt;
&lt;br /&gt;
Внутри контейнера стоит установить gcc-multilib, без неё не заведётся: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;apt update &amp;amp;&amp;amp; apt install -y gcc-multilib&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь вы можете писать код внутри своей любимой IDE (запущенной напрямую в вашей ОС, например VSCode), а компилить и запускать в докере через терминал.&lt;br /&gt;
&lt;br /&gt;
===Docker для пользователей MacOS на Apple Silicon===&lt;br /&gt;
Добавьте в .bashrc или .zshrc:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;export DOCKER_DEFAULT_PLATFORM=linux/amd64&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После этого перезапустите Docker.&lt;br /&gt;
&lt;br /&gt;
Вариант2: &lt;br /&gt;
* Скачиваем docker.&lt;br /&gt;
* Переходим в папку с задачами в терминале.&lt;br /&gt;
* Выполняем &amp;lt;code&amp;gt;docker run --platform linux/amd64 -it --rm -v `pwd`:/caos -w /caos ubuntu&amp;lt;/code&amp;gt;&lt;br /&gt;
* Делаем &amp;lt;code&amp;gt;apt update&amp;lt;/code&amp;gt;&lt;br /&gt;
* Делаем &amp;lt;code&amp;gt; apt -y install build-essential gcc-multilib &amp;lt;/code&amp;gt;&lt;br /&gt;
* Собираем задачки командой &amp;lt;code&amp;gt;gcc -m32 -g задача.S simpleio_i686.S&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===CLion===&lt;br /&gt;
Для начала скачайте CLion с официального сайта и устанавите его.&lt;br /&gt;
====Если у вас не linux: вар. 1 - docker====&lt;br /&gt;
Скачайте и установите docker desktop. Добейтесь того, чтобы у вас заработал docker hello world (&amp;lt;code&amp;gt;docker run --rm hello-world&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Если у вас MacOs на арме&amp;lt;/b&amp;gt; сделайте то, что написано выше.&lt;br /&gt;
&lt;br /&gt;
После этого нам потребуется специальный образ с необходимыми для курса библиотеками и программами. &lt;br /&gt;
Создайте файл с именем Dockerfile и следующим содержанием:&lt;br /&gt;
&amp;lt;pre&amp;gt;FROM ubuntu:latest&lt;br /&gt;
&lt;br /&gt;
RUN apt update &amp;amp;&amp;amp; apt install -y gcc-multilib gdb make cmake g++&lt;br /&gt;
WORKDIR /caos&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В директории с этим запустите эту команду чтобы собрать образ: &amp;lt;code&amp;gt;docker build -t caos .&amp;lt;/code&amp;gt; и дождитесь пока она выполнится.&lt;br /&gt;
&lt;br /&gt;
После этого откройте окно настроек, перейдите в пункт Build, Execution, Deployment -&amp;gt; Toolchains и добавьте новый Toolchain с типом Docker.&lt;br /&gt;
В поле Image укажите &amp;lt;code&amp;gt;caos:latest&amp;lt;/code&amp;gt;, а остальные поля должны определиться автоматически. Поместите этот Toolchain первым в списке сделав его default&#039;ным.&lt;br /&gt;
&lt;br /&gt;
====Если у вас не linux: вар. 2 - wsl (Windows only)====&lt;br /&gt;
&lt;br /&gt;
Установите wsl 2, выберите дистрибутив Ubuntu.&lt;br /&gt;
Внутри wsl 2 поставьте необходимые пакеты (&amp;lt;code&amp;gt;sudo apt install gcc-multilib make cmake g++ gdb&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
После этого откройте окно настроек, перейдите в пункт Build, Execution, Deployment -&amp;gt; Toolchains и добавьте новый Toolchain с типом WSL.&lt;br /&gt;
Все поля должны определиться автоматически. Поместите этот Toolchain первым в списке сделав его default&#039;ным.&lt;br /&gt;
&lt;br /&gt;
====Далее====&lt;br /&gt;
Создайте проект (можете выбрать C Executable, но это не особо принципиально)&lt;br /&gt;
Скачайте simpleio_i686.S и поместите в корень проекта.&lt;br /&gt;
&lt;br /&gt;
В &amp;lt;code&amp;gt;CMakeLists.txt&amp;lt;/code&amp;gt; удалите всё и вставьте это:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake_minimum_required(VERSION 3.10)&lt;br /&gt;
project(caos ASM)&lt;br /&gt;
&lt;br /&gt;
add_compile_options(-m32)&lt;br /&gt;
add_link_options(-m32)&lt;br /&gt;
&lt;br /&gt;
file(GLOB_RECURSE sources_list LIST_DIRECTORIES true ./*)&lt;br /&gt;
foreach(file ${sources_list})&lt;br /&gt;
    IF(${file} MATCHES &amp;quot;.S$&amp;quot; AND NOT ${file} MATCHES &amp;quot;simpleio_i686.S&amp;quot;)&lt;br /&gt;
        get_filename_component(X ${file} NAME)&lt;br /&gt;
        add_executable(${X} ${file} simpleio_i686.S)&lt;br /&gt;
    endif()&lt;br /&gt;
endforeach()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сделайте Reload Cmake project (Внизу выберите вкладку Cmake и нажмите слева на кнопку обновления с двумя стрелочками).&lt;br /&gt;
&lt;br /&gt;
Этот конфиг написан таким образом, чтобы эффективно работать совместно с kks. На каждый .S файл (кроме библиотеке simpleio_i686.S) он создаст цель для сборки. &lt;br /&gt;
После того как у вас в проекте появляется новый файл (например после &amp;lt;code&amp;gt;kks sync&amp;lt;/code&amp;gt;) нужно делать Reload Cmake project.&lt;br /&gt;
Выберите справа сверху интересующий вас файл и запускайте. &lt;br /&gt;
&lt;br /&gt;
====Подсветка синтаксиса====&lt;br /&gt;
Если она работает не правильно, откройте файл &amp;lt;code&amp;gt;simpleio_i686.S&amp;lt;/code&amp;gt;, нажмите на его вкладку в списке открытых файлов сверху правой кнопкой мыши и выберите &amp;quot;Associate file type&amp;quot;. В списке выберите Assembly Language.&lt;br /&gt;
&lt;br /&gt;
====Дебагер====&lt;br /&gt;
Дебагер работает из-коробки.&lt;br /&gt;
&lt;br /&gt;
Чтобы узнать значения регистра напишите в поле снизу строку $eax и нажмите на кнопку &amp;quot;+&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Yabloko ===&lt;br /&gt;
Для того чтобы собрать Yabloko вам потребуется &lt;br /&gt;
* Компилятор, который умеет собирать elf-файлы под архитектуру x86. В мире линукса для такого традиционно собирают ещё одну копию &amp;lt;code&amp;gt;gcc&amp;lt;/code&amp;gt; (и называют &amp;lt;code&amp;gt;x86_64-elf-gcc&amp;lt;/code&amp;gt;, чтобы не путаться), однако &amp;lt;code&amp;gt;clang&amp;lt;/code&amp;gt;, в отличие от &amp;lt;code&amp;gt;gcc&amp;lt;/code&amp;gt;, в стандартной поставке уже имеет кросс-компилятор и кросс-линкер, так что можно (пока в теории) использовать его.&lt;br /&gt;
* [https://www.qemu.org/download/ QEMU]&lt;br /&gt;
&lt;br /&gt;
Всё это вы можете получить локально, не зависимо от того, на какой вы ОС.&lt;br /&gt;
Если вы по какой-то причине решили использовать учебный (или любой другой) сервер, то не забывайте добавлять к команде ssh опцию -X, которая пробрасывает X-сервер, а также по настроению опцию -C, которая сжимает передаваемые данные. Если у вас не линукс, то в таком случае вам потребуется ещё и скачать и установить X-сервер. Для [https://www.xquartz.org/ MacOs]. Для [https://sourceforge.net/projects/xming/ windows]. Если вы пользуетесь Putty, то поставьте галочку в Connection -&amp;gt; SSH -&amp;gt; X11 -&amp;gt; Enable X11 forwarding.&lt;br /&gt;
&lt;br /&gt;
= Как устроен курс =&lt;br /&gt;
== Контрольные мероприятия ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Когда !! Что&lt;br /&gt;
|-&lt;br /&gt;
| В конце 1-го модуля || контрольная в формате экзамена&lt;br /&gt;
|-&lt;br /&gt;
| В конце 2-го модуля || экзамен&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Формула оценки ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;O&amp;lt;sub&amp;gt;АК&amp;lt;/sub&amp;gt; = 0.5 * H&amp;lt;sub&amp;gt;ejudge&amp;lt;/sub&amp;gt; + 0.05 * H&amp;lt;sub&amp;gt;семинары&amp;lt;/sub&amp;gt; + 0.15 * H&amp;lt;sub&amp;gt;контрольная&amp;lt;/sub&amp;gt; + 0.3 * Э&#039;&#039;&#039;&lt;br /&gt;
Все оценки кроме итоговой дробные с округлением до 2х знаков после запятой. Итоговая оценка округляется арифметически.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;H&amp;lt;sub&amp;gt;ejudge&amp;lt;/sub&amp;gt;&#039;&#039;&#039; - оценка за сданные задания в тестирующей системе Ejudge, выставляется согласно описанию ниже. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;H&amp;lt;sub&amp;gt;семинары&amp;lt;/sub&amp;gt;&#039;&#039;&#039; - оценка за семинары, выставляется согласно правилам озвученным вашим семинаристом.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;H&amp;lt;sub&amp;gt;контрольная&amp;lt;/sub&amp;gt;&#039;&#039;&#039; - оценка за контрольную работу в модуле 1.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Автомат&amp;quot;&#039;&#039;&#039; выдаётся, если оценки за ДЗ и семинары не ниже некоторых пороговых значений, которые будут объявлены дополнительно.&lt;br /&gt;
&lt;br /&gt;
=== Формула рассчета оценки Ejudge ===&lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
== Прокторинг ==&lt;br /&gt;
&lt;br /&gt;
На контрольной работе и экзамене применяется селф-прокторинг (даже если вы находитесь в аудитории): необходимо сделать видеозапись, на которой видны ваш экран и ваше лицо во время решения задач. Микрофон тоже должен быть включён. В начале записи, пожалуйста, представьтесь. Запись необходимо будет выложить в любое облачное хранилище и сдать в ejudge ссылку на неё в течении нескольких часов после. Запись нужно хранить до выставления оценки за курс. Размер файла записи не должен сильно превышать 250 МБ. Помните, запись это ваше доказательство честности написанной работы. Инструкция по настройке ОБС появится позднее на вики. Рекомендуется качество не выше 720р и не ниже 360р&lt;br /&gt;
&lt;br /&gt;
На контрольной работе можно пользоваться любыми материалами, веб-сайтами и т. д., за исключением интерактивного общения с кем-либо (гуглить можно, а вот советоваться нельзя). Телеграм-канал курса, а также официальные чаты курса также явно разрешены. В канале могут появляться важные объявления, за ним рекомендуется следить.&lt;br /&gt;
&lt;br /&gt;
= Записи лекций =&lt;br /&gt;
&lt;br /&gt;
TODO&lt;/div&gt;</summary>
		<author><name>Objatie groba</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=CAOS-2023/24&amp;diff=78941</id>
		<title>CAOS-2023/24</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=CAOS-2023/24&amp;diff=78941"/>
		<updated>2023-09-03T09:07:51Z</updated>

		<summary type="html">&lt;p&gt;Objatie groba: Новая страница: «Вход в тестирующую систему: https://caos.myltsev.ru  Материалы лекций: https://caos.myltsev.ru/lectures/  [https://caos.mylt…»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Вход в тестирующую систему: https://caos.myltsev.ru&lt;br /&gt;
&lt;br /&gt;
Материалы лекций: https://caos.myltsev.ru/lectures/&lt;br /&gt;
&lt;br /&gt;
[https://caos.myltsev.ru/style.html Стиль оформления программ на Си]&lt;br /&gt;
&lt;br /&gt;
[https://t.me/+-RJj6i7NMaE1MWIy Чатик курса] &lt;br /&gt;
&lt;br /&gt;
[https://t.me/+duw-cU1uT4FjNzYy Канал с объявлениями]&lt;br /&gt;
&lt;br /&gt;
[https://forms.gle/AMBwLvi9mNPqvUjU7 Форма для фидбека]&lt;br /&gt;
&lt;br /&gt;
[https://exuberant-arthropod-be8.notion.site/21-22-0f236f7d03c74dfbbd945f93651758a2 Конспект лекций 2021 года от студентов]&lt;br /&gt;
&lt;br /&gt;
== Чатики и преподаватели по группам ==&lt;br /&gt;
Лектор — Александр Мыльцев [https://t.me/myltsev @myltsev]&lt;br /&gt;
Старший семинарист - Игорь Минеев [https://t.me/objatie_groba @objatie_groba]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Группа !! Чатик !! Преподаватель !! Ассистенты&lt;br /&gt;
|-&lt;br /&gt;
| 221 || TODO || TODO || TODO&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Настройка рабочего окружения =&lt;br /&gt;
===kks===&lt;br /&gt;
https://github.com/darkkeks/kks&lt;br /&gt;
&lt;br /&gt;
kks это консольная утилитка для курса, выполняющая много вещей, среди которых можно выделить несколько основных:&lt;br /&gt;
# Скачивание задач/сэмплов/контрольных с помощью одной команды. То же самое со сдачей задач: можно сдать и получить сразу результат. &lt;br /&gt;
# Генерация тестов с помощью скриптов и их тестирование.&lt;br /&gt;
# Просмотр рейтинга (как общего, так и по группам) в удобном формате&lt;br /&gt;
&lt;br /&gt;
Пример использования:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;kks sync  # скачивание задач&lt;br /&gt;
# тут вы написали свой код&lt;br /&gt;
kks test --sample  # тестирование&lt;br /&gt;
kks submit&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Больше примеров можно посмотреть в репозитории&lt;br /&gt;
===Библиотека ввода-вывода===&lt;br /&gt;
Библиотека ввода-вывода для ассемблера x86: [https://caos.myltsev.ru/simpleio_i686.S simpleio_i686.S]&lt;br /&gt;
&lt;br /&gt;
Внутри виртуальной машины её можно скачать командой &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;wget https://caos.myltsev.ru/simpleio_i686.S&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если получаете сообщение, что Wget не установлен на вашей системе (на Ubuntu Desktop по умолчанию нет), то установите его следующей командой: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;sudo apt install wget&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Виртуальная машина (VirtualBox)===&lt;br /&gt;
[https://caos.myltsev.ru/hse-caos-xubuntu.ova Образ виртуальной машины]&lt;br /&gt;
&lt;br /&gt;
Рекомендуется скачать образ и установить его в эмулятор [https://www.virtualbox.org/ VirtualBox]. Логин-пароль xubuntu/xubuntu, можно делать sudo.&lt;br /&gt;
&lt;br /&gt;
===Docker для пользователей MacOS (intel based)===&lt;br /&gt;
&#039;&#039;&#039;Проверялось на MacOS BigSur и Monterey&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Загрузить сам докер можно отсюда: [https://docs.docker.com/get-docker/ тык]&lt;br /&gt;
&lt;br /&gt;
Команда для запуска: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;docker run -it --rm -v `pwd`:/caos -w /caos ubuntu&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В терминале заходите в свою папку с акосом и запускаете эту команду. После нее вы начинаете работать с контейнером Ubuntu в папке /caos, где будет все содержимое вашей папки в основной ОС. &lt;br /&gt;
Изменять содержимое внутри /caos можно и изнутри контейнера, и снаружи, изменения будут видны и там и там.&lt;br /&gt;
&lt;br /&gt;
Внутри контейнера стоит установить gcc-multilib, без неё не заведётся: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;apt update &amp;amp;&amp;amp; apt install -y gcc-multilib&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь вы можете писать код внутри своей любимой IDE (запущенной напрямую в вашей ОС, например VSCode), а компилить и запускать в докере через терминал.&lt;br /&gt;
&lt;br /&gt;
===Docker для пользователей MacOS на Apple Silicon===&lt;br /&gt;
Добавьте в .bashrc или .zshrc:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;export DOCKER_DEFAULT_PLATFORM=linux/amd64&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После этого перезапустите Docker.&lt;br /&gt;
&lt;br /&gt;
Вариант2: &lt;br /&gt;
* Скачиваем docker.&lt;br /&gt;
* Переходим в папку с задачами в терминале.&lt;br /&gt;
* Выполняем &amp;lt;code&amp;gt;docker run --platform linux/amd64 -it --rm -v `pwd`:/caos -w /caos ubuntu&amp;lt;/code&amp;gt;&lt;br /&gt;
* Делаем &amp;lt;code&amp;gt;apt update&amp;lt;/code&amp;gt;&lt;br /&gt;
* Делаем &amp;lt;code&amp;gt; apt -y install build-essential gcc-multilib &amp;lt;/code&amp;gt;&lt;br /&gt;
* Собираем задачки командой &amp;lt;code&amp;gt;gcc -m32 -g задача.S simpleio_i686.S&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===CLion===&lt;br /&gt;
Для начала скачайте CLion с официального сайта и устанавите его.&lt;br /&gt;
====Если у вас не linux: вар. 1 - docker====&lt;br /&gt;
Скачайте и установите docker desktop. Добейтесь того, чтобы у вас заработал docker hello world (&amp;lt;code&amp;gt;docker run --rm hello-world&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Если у вас MacOs на арме&amp;lt;/b&amp;gt; сделайте то, что написано выше.&lt;br /&gt;
&lt;br /&gt;
После этого нам потребуется специальный образ с необходимыми для курса библиотеками и программами. &lt;br /&gt;
Создайте файл с именем Dockerfile и следующим содержанием:&lt;br /&gt;
&amp;lt;pre&amp;gt;FROM ubuntu:latest&lt;br /&gt;
&lt;br /&gt;
RUN apt update &amp;amp;&amp;amp; apt install -y gcc-multilib gdb make cmake g++&lt;br /&gt;
WORKDIR /caos&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В директории с этим запустите эту команду чтобы собрать образ: &amp;lt;code&amp;gt;docker build -t caos .&amp;lt;/code&amp;gt; и дождитесь пока она выполнится.&lt;br /&gt;
&lt;br /&gt;
После этого откройте окно настроек, перейдите в пункт Build, Execution, Deployment -&amp;gt; Toolchains и добавьте новый Toolchain с типом Docker.&lt;br /&gt;
В поле Image укажите &amp;lt;code&amp;gt;caos:latest&amp;lt;/code&amp;gt;, а остальные поля должны определиться автоматически. Поместите этот Toolchain первым в списке сделав его default&#039;ным.&lt;br /&gt;
&lt;br /&gt;
====Если у вас не linux: вар. 2 - wsl (Windows only)====&lt;br /&gt;
&lt;br /&gt;
Установите wsl 2, выберите дистрибутив Ubuntu.&lt;br /&gt;
Внутри wsl 2 поставьте необходимые пакеты (&amp;lt;code&amp;gt;sudo apt install gcc-multilib make cmake g++ gdb&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
После этого откройте окно настроек, перейдите в пункт Build, Execution, Deployment -&amp;gt; Toolchains и добавьте новый Toolchain с типом WSL.&lt;br /&gt;
Все поля должны определиться автоматически. Поместите этот Toolchain первым в списке сделав его default&#039;ным.&lt;br /&gt;
&lt;br /&gt;
====Далее====&lt;br /&gt;
Создайте проект (можете выбрать C Executable, но это не особо принципиально)&lt;br /&gt;
Скачайте simpleio_i686.S и поместите в корень проекта.&lt;br /&gt;
&lt;br /&gt;
В &amp;lt;code&amp;gt;CMakeLists.txt&amp;lt;/code&amp;gt; удалите всё и вставьте это:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake_minimum_required(VERSION 3.10)&lt;br /&gt;
project(caos ASM)&lt;br /&gt;
&lt;br /&gt;
add_compile_options(-m32)&lt;br /&gt;
add_link_options(-m32)&lt;br /&gt;
&lt;br /&gt;
file(GLOB_RECURSE sources_list LIST_DIRECTORIES true ./*)&lt;br /&gt;
foreach(file ${sources_list})&lt;br /&gt;
    IF(${file} MATCHES &amp;quot;.S$&amp;quot; AND NOT ${file} MATCHES &amp;quot;simpleio_i686.S&amp;quot;)&lt;br /&gt;
        get_filename_component(X ${file} NAME)&lt;br /&gt;
        add_executable(${X} ${file} simpleio_i686.S)&lt;br /&gt;
    endif()&lt;br /&gt;
endforeach()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сделайте Reload Cmake project (Внизу выберите вкладку Cmake и нажмите слева на кнопку обновления с двумя стрелочками).&lt;br /&gt;
&lt;br /&gt;
Этот конфиг написан таким образом, чтобы эффективно работать совместно с kks. На каждый .S файл (кроме библиотеке simpleio_i686.S) он создаст цель для сборки. &lt;br /&gt;
После того как у вас в проекте появляется новый файл (например после &amp;lt;code&amp;gt;kks sync&amp;lt;/code&amp;gt;) нужно делать Reload Cmake project.&lt;br /&gt;
Выберите справа сверху интересующий вас файл и запускайте. &lt;br /&gt;
&lt;br /&gt;
====Подсветка синтаксиса====&lt;br /&gt;
Если она работает не правильно, откройте файл &amp;lt;code&amp;gt;simpleio_i686.S&amp;lt;/code&amp;gt;, нажмите на его вкладку в списке открытых файлов сверху правой кнопкой мыши и выберите &amp;quot;Associate file type&amp;quot;. В списке выберите Assembly Language.&lt;br /&gt;
&lt;br /&gt;
====Дебагер====&lt;br /&gt;
Дебагер работает из-коробки.&lt;br /&gt;
&lt;br /&gt;
Чтобы узнать значения регистра напишите в поле снизу строку $eax и нажмите на кнопку &amp;quot;+&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Yabloko ===&lt;br /&gt;
Для того чтобы собрать Yabloko вам потребуется &lt;br /&gt;
* Компилятор, который умеет собирать elf-файлы под архитектуру x86. В мире линукса для такого традиционно собирают ещё одну копию &amp;lt;code&amp;gt;gcc&amp;lt;/code&amp;gt; (и называют &amp;lt;code&amp;gt;x86_64-elf-gcc&amp;lt;/code&amp;gt;, чтобы не путаться), однако &amp;lt;code&amp;gt;clang&amp;lt;/code&amp;gt;, в отличие от &amp;lt;code&amp;gt;gcc&amp;lt;/code&amp;gt;, в стандартной поставке уже имеет кросс-компилятор и кросс-линкер, так что можно (пока в теории) использовать его.&lt;br /&gt;
* [https://www.qemu.org/download/ QEMU]&lt;br /&gt;
&lt;br /&gt;
Всё это вы можете получить локально, не зависимо от того, на какой вы ОС.&lt;br /&gt;
Если вы по какой-то причине решили использовать учебный (или любой другой) сервер, то не забывайте добавлять к команде ssh опцию -X, которая пробрасывает X-сервер, а также по настроению опцию -C, которая сжимает передаваемые данные. Если у вас не линукс, то в таком случае вам потребуется ещё и скачать и установить X-сервер. Для [https://www.xquartz.org/ MacOs]. Для [https://sourceforge.net/projects/xming/ windows]. Если вы пользуетесь Putty, то поставьте галочку в Connection -&amp;gt; SSH -&amp;gt; X11 -&amp;gt; Enable X11 forwarding.&lt;br /&gt;
&lt;br /&gt;
= Как устроен курс =&lt;br /&gt;
== Контрольные мероприятия ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Когда !! Что&lt;br /&gt;
|-&lt;br /&gt;
| В конце 1-го модуля || контрольная в формате экзамена&lt;br /&gt;
|-&lt;br /&gt;
| В конце 2-го модуля || экзамен&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Формула оценки ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;O&amp;lt;sub&amp;gt;АК&amp;lt;/sub&amp;gt; = 0.5 * H&amp;lt;sub&amp;gt;ejudge&amp;lt;/sub&amp;gt; + 0.05 * H&amp;lt;sub&amp;gt;семинары&amp;lt;/sub&amp;gt; + 0.15 * H&amp;lt;sub&amp;gt;контрольная&amp;lt;/sub&amp;gt; + 0.3 * Э&#039;&#039;&#039;&lt;br /&gt;
Все оценки кроме итоговой дробные с округлением до 2х знаков после запятой. Итоговая оценка округляется арифметически.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;H&amp;lt;sub&amp;gt;ejudge&amp;lt;/sub&amp;gt;&#039;&#039;&#039; - оценка за сданные задания в тестирующей системе Ejudge, выставляется согласно описанию ниже. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;H&amp;lt;sub&amp;gt;семинары&amp;lt;/sub&amp;gt;&#039;&#039;&#039; - оценка за семинары, выставляется согласно правилам озвученным вашим семинаристом.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;H&amp;lt;sub&amp;gt;контрольная&amp;lt;/sub&amp;gt;&#039;&#039;&#039; - оценка за контрольную работу в модуле 1.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Автомат&amp;quot;&#039;&#039;&#039; выдаётся, если оценки за ДЗ и семинары не ниже некоторых пороговых значений, которые будут объявлены дополнительно.&lt;br /&gt;
&lt;br /&gt;
=== Формула рассчета оценки Ejudge ===&lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
== Прокторинг ==&lt;br /&gt;
&lt;br /&gt;
На контрольной работе и экзамене применяется селф-прокторинг (даже если вы находитесь в аудитории): необходимо сделать видеозапись, на которой видны ваш экран и ваше лицо во время решения задач. Микрофон тоже должен быть включён. В начале записи, пожалуйста, представьтесь. Запись необходимо будет выложить в любое облачное хранилище и сдать в ejudge ссылку на неё в течении нескольких часов после. Запись нужно хранить до выставления оценки за курс. Размер файла записи не должен сильно превышать 250 МБ. Помните, запись это ваше доказательство честности написанной работы. Инструкция по настройке ОБС появится позднее на вики. Рекомендуется качество не выше 720р и не ниже 360р&lt;br /&gt;
&lt;br /&gt;
На контрольной работе можно пользоваться любыми материалами, веб-сайтами и т. д., за исключением интерактивного общения с кем-либо (гуглить можно, а вот советоваться нельзя). Телеграм-канал курса, а также официальные чаты курса также явно разрешены. В канале могут появляться важные объявления, за ним рекомендуется следить.&lt;br /&gt;
&lt;br /&gt;
= Записи лекций =&lt;br /&gt;
&lt;br /&gt;
TODO&lt;/div&gt;</summary>
		<author><name>Objatie groba</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=CAOS-2022&amp;diff=75804</id>
		<title>CAOS-2022</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=CAOS-2022&amp;diff=75804"/>
		<updated>2023-01-21T11:13:26Z</updated>

		<summary type="html">&lt;p&gt;Objatie groba: Прокторинг&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Вход в тестирующую систему: https://caos.myltsev.ru&lt;br /&gt;
&lt;br /&gt;
Материалы лекций: https://caos.myltsev.ru/lectures/&lt;br /&gt;
&lt;br /&gt;
[https://caos.myltsev.ru/style.html Стиль оформления программ на Си]&lt;br /&gt;
&lt;br /&gt;
[https://t.me/+yjXbB4pqkk44NWY6 Чатик курса] &lt;br /&gt;
&lt;br /&gt;
[https://t.me/+NPSambFx5aExM2Ri Канал с объявлениями]&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/forms/d/e/1FAIpQLScO97qRDhYjWu2kmxfSiwxGhfo1grGIC23_kAp0gLOQTp32Cw/viewform?usp=sf_link Форма для фидбека]&lt;br /&gt;
&lt;br /&gt;
[https://exuberant-arthropod-be8.notion.site/21-22-0f236f7d03c74dfbbd945f93651758a2 Конспект лекций прошлого года от студентов]&lt;br /&gt;
&lt;br /&gt;
== Чатики и преподаватели по группам ==&lt;br /&gt;
Лектор — Александр Мыльцев [https://t.me/myltsev @myltsev]&lt;br /&gt;
&lt;br /&gt;
Ассистент лектора — Фёдор Быков [https://t.me/placeholderplaceholder @placeholderplaceholder]&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Группа !! Чатик !! Преподаватель !! Ассистенты&lt;br /&gt;
|-&lt;br /&gt;
| 211 || [https://t.me/+sLwX9lsNxl4zMDJi чат] || Грибов Филипп [https://t.me/grphil @grphil] || Козлова Екатерина [https://t.me/h1de0us @h1de0us], Романова Анастасия [https://t.me/romanova_nastya @romanova_nastya]&lt;br /&gt;
|-&lt;br /&gt;
| 212 || [https://t.me/+nwrLs-ecpjoyMzY6 чат] || Минеев Игорь [https://t.me/objatie_groba @objatie_groba] || Гончаров Фёдор [https://t.me/fmgoncharov @fmgoncharov], Разин Арслан [https://t.me/CrazyBadRedCat @CrazyBadRedCat]&lt;br /&gt;
|-&lt;br /&gt;
| 213 || [https://t.me/+u_eO74fl_TJmZDA6 чат]|| Александр Осадчий [https://t.me/aiosadchy @aiosadchy] || Алашеев Иван [https://t.me/yorky0 @yorky0], Артеменко Михаил [https://t.me/Michicosun @Michicosun]&lt;br /&gt;
|-&lt;br /&gt;
| 214 || [https://t.me/+2hfiwPLZ1V9jNmUy чат] || Сальников Алексей [https://t.me/a_salnikov @a_salnikov] || Афанасьева Анастасия [https://t.me/afnastya @afnastya], Шапрунов Кирилл [https://t.me/shapkk @shapkk]&lt;br /&gt;
|-&lt;br /&gt;
| 215 || [https://t.me/+RAy_jvp43B0xZmUy чат] || Сафронов Евгений [https://t.me/youagain @youagain] ||  Неудачина Ева [https://t.me/cocosinca @cocosinca], Сазонов Михаил [https://t.me/worldstonekeep @worldstonekeep]&lt;br /&gt;
|-&lt;br /&gt;
| 216 || [https://t.me/+zKdZ2MAPwrY2NmYy чат] || Филитов Михаил [https://t.me/iiixphillxiii @iiixphillxiii] ||  Осташов Денис [https://t.me/igreetyou @igreetyou], Петренко Ксения [https://t.me/KseniaPetrenko @KseniaPetrenko]&lt;br /&gt;
|-&lt;br /&gt;
| 217 || [https://t.me/+YkEzhWX1muRmNWYy чат] || Галицкий Борис [https://t.me/Mr_galitskii @Mr_galitskii] || Прокопчук Леонид [https://t.me/leoproko_work @leoproko_work], Киселев Максим [https://t.me/profilehooks @profilehooks]&lt;br /&gt;
|-&lt;br /&gt;
| 218 || [https://t.me/+hw4snIDkqCsxZGQy чат] || Пономарев Алексей [https://t.me/Lexolordan @Lexolordan] || Ершов Иван [https://t.me/tutugarin @tutugarin], Константинов Андрей [https://t.me/intergalacticshaverma @intergalacticshaverma]	&lt;br /&gt;
|-&lt;br /&gt;
| 219 || [https://t.me/+Zk0embHl1vwyM2Qy чат] || Чабдаров Раиль [https://t.me/Exile333 @Exile333] || Жукова Дарья [https://t.me/ch3repashka @ch3repashka], Шитов Даниил [https://t.me/jpepper @jpepper]&lt;br /&gt;
|-&lt;br /&gt;
| 2110 || [https://t.me/caoshse чат] || Галицкий Борис [https://t.me/Mr_galitskii @Mr_galitskii] || Драганов Александр [https://t.me/nomapunk @nomapunk], Дудкин Вадим [https://t.me/vadim1705 @vadim1705]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[https://github.com/lll-phill-lll/hse_caos_practice/tree/master/2022_216 Ссылка на страничку 216 группы]&lt;br /&gt;
&lt;br /&gt;
= Настройка рабочего окружения =&lt;br /&gt;
===kks===&lt;br /&gt;
https://github.com/darkkeks/kks&lt;br /&gt;
&lt;br /&gt;
kks это консольная утилитка для курса, выполняющая много вещей, среди которых можно выделить несколько основных:&lt;br /&gt;
# Скачивание задач/сэмплов/контрольных с помощью одной команды. То же самое со сдачей задач: можно сдать и получить сразу результат. &lt;br /&gt;
# Генерация тестов с помощью скриптов и их тестирование.&lt;br /&gt;
# Просмотр рейтинга (как общего, так и по группам) в удобном формате&lt;br /&gt;
&lt;br /&gt;
Пример использования:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;kks sync  # скачивание задач&lt;br /&gt;
# тут вы написали свой код&lt;br /&gt;
kks test --sample  # тестирование&lt;br /&gt;
kks submit&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Больше примеров можно посмотреть в репозитории&lt;br /&gt;
===Библиотека ввода-вывода===&lt;br /&gt;
Библиотека ввода-вывода для ассемблера x86: [https://caos.myltsev.ru/simpleio_i686.S simpleio_i686.S]&lt;br /&gt;
&lt;br /&gt;
Внутри виртуальной машины её можно скачать командой &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;wget https://caos.myltsev.ru/simpleio_i686.S&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если получаете сообщение, что Wget не установлен на вашей системе (на Ubuntu Desktop по умолчанию нет), то установите его следующей командой: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;sudo apt install wget&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Виртуальная машина (VirtualBox)===&lt;br /&gt;
[https://caos.myltsev.ru/hse-caos-xubuntu.ova Образ виртуальной машины]&lt;br /&gt;
&lt;br /&gt;
Рекомендуется скачать образ и установить его в эмулятор [https://www.virtualbox.org/ VirtualBox]. Логин-пароль xubuntu/xubuntu, можно делать sudo.&lt;br /&gt;
&lt;br /&gt;
===Docker для пользователей MacOS (intel based)===&lt;br /&gt;
&#039;&#039;&#039;Проверялось на MacOS BigSur и Monterey&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Загрузить сам докер можно отсюда: [https://docs.docker.com/get-docker/ тык]&lt;br /&gt;
&lt;br /&gt;
Команда для запуска: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;docker run -it --rm -v `pwd`:/caos -w /caos ubuntu&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В терминале заходите в свою папку с акосом и запускаете эту команду. После нее вы начинаете работать с контейнером Ubuntu в папке /caos, где будет все содержимое вашей папки в основной ОС. &lt;br /&gt;
Изменять содержимое внутри /caos можно и изнутри контейнера, и снаружи, изменения будут видны и там и там.&lt;br /&gt;
&lt;br /&gt;
Внутри контейнера стоит установить gcc-multilib, без неё не заведётся: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;apt update &amp;amp;&amp;amp; apt install -y gcc-multilib&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь вы можете писать код внутри своей любимой IDE (запущенной напрямую в вашей ОС, например VSCode), а компилить и запускать в докере через терминал.&lt;br /&gt;
&lt;br /&gt;
===Docker для пользователей MacOS на Apple Silicon===&lt;br /&gt;
Добавьте в .bashrc или .zshrc:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;export DOCKER_DEFAULT_PLATFORM=linux/amd64&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После этого перезапустите Docker.&lt;br /&gt;
&lt;br /&gt;
Вариант2: &lt;br /&gt;
* Скачиваем docker.&lt;br /&gt;
* Переходим в папку с задачами в терминале.&lt;br /&gt;
* Выполняем &amp;lt;code&amp;gt;docker run --platform linux/amd64 -it --rm -v `pwd`:/caos -w /caos ubuntu&amp;lt;/code&amp;gt;&lt;br /&gt;
* Делаем &amp;lt;code&amp;gt;apt update&amp;lt;/code&amp;gt;&lt;br /&gt;
* Делаем &amp;lt;code&amp;gt; apt -y install build-essential gcc-multilib &amp;lt;/code&amp;gt;&lt;br /&gt;
* Собираем задачки командой &amp;lt;code&amp;gt;gcc -m32 -g задача.S simpleio_i686.S&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===CLion===&lt;br /&gt;
Для начала скачайте CLion с официального сайта и устанавите его.&lt;br /&gt;
====Если у вас не linux: вар. 1 - docker====&lt;br /&gt;
Скачайте и установите docker desktop. Добейтесь того, чтобы у вас заработал docker hello world (&amp;lt;code&amp;gt;docker run --rm hello-world&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Если у вас MacOs на арме&amp;lt;/b&amp;gt; сделайте то, что написано выше.&lt;br /&gt;
&lt;br /&gt;
После этого нам потребуется специальный образ с необходимыми для курса библиотеками и программами. &lt;br /&gt;
Создайте файл с именем Dockerfile и следующим содержанием:&lt;br /&gt;
&amp;lt;pre&amp;gt;FROM ubuntu:latest&lt;br /&gt;
&lt;br /&gt;
RUN apt update &amp;amp;&amp;amp; apt install -y gcc-multilib gdb make cmake g++&lt;br /&gt;
WORKDIR /caos&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В директории с этим запустите эту команду чтобы собрать образ: &amp;lt;code&amp;gt;docker build -t caos .&amp;lt;/code&amp;gt; и дождитесь пока она выполнится.&lt;br /&gt;
&lt;br /&gt;
После этого откройте окно настроек, перейдите в пункт Build, Execution, Deployment -&amp;gt; Toolchains и добавьте новый Toolchain с типом Docker.&lt;br /&gt;
В поле Image укажите &amp;lt;code&amp;gt;caos:latest&amp;lt;/code&amp;gt;, а остальные поля должны определиться автоматически. Поместите этот Toolchain первым в списке сделав его default&#039;ным.&lt;br /&gt;
&lt;br /&gt;
====Если у вас не linux: вар. 2 - wsl (Windows only)====&lt;br /&gt;
&lt;br /&gt;
Установите wsl, выберите дистрибутив Ubuntu.&lt;br /&gt;
Внутри wsl поставьте необходимые пакеты (&amp;lt;code&amp;gt;sudo apt install gcc-multilib make cmake g++ gdb&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
После этого откройте окно настроек, перейдите в пункт Build, Execution, Deployment -&amp;gt; Toolchains и добавьте новый Toolchain с типом WSL.&lt;br /&gt;
Все поля должны определиться автоматически. Поместите этот Toolchain первым в списке сделав его default&#039;ным.&lt;br /&gt;
&lt;br /&gt;
====Далее====&lt;br /&gt;
Создайте проект (можете выбрать C Executable, но это не особо принципиально)&lt;br /&gt;
Скачайте simpleio_i686.S и поместите в корень проекта.&lt;br /&gt;
&lt;br /&gt;
В &amp;lt;code&amp;gt;CMakeLists.txt&amp;lt;/code&amp;gt; удалите всё и вставьте это:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake_minimum_required(VERSION 3.10)&lt;br /&gt;
project(caos ASM)&lt;br /&gt;
&lt;br /&gt;
add_compile_options(-m32)&lt;br /&gt;
add_link_options(-m32)&lt;br /&gt;
&lt;br /&gt;
file(GLOB_RECURSE sources_list LIST_DIRECTORIES true ./*)&lt;br /&gt;
foreach(file ${sources_list})&lt;br /&gt;
    IF(${file} MATCHES &amp;quot;.S$&amp;quot; AND NOT ${file} MATCHES &amp;quot;simpleio_i686.S&amp;quot;)&lt;br /&gt;
        get_filename_component(X ${file} NAME)&lt;br /&gt;
        add_executable(${X} ${file} simpleio_i686.S)&lt;br /&gt;
    endif()&lt;br /&gt;
endforeach()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сделайте Reload Cmake project (Внизу выберите вкладку Cmake и нажмите слева на кнопку обновления с двумя стрелочками).&lt;br /&gt;
&lt;br /&gt;
Этот конфиг написан таким образом, чтобы эффективно работать совместно с kks. На каждый .S файл (кроме библиотеке simpleio_i686.S) он создаст цель для сборки. &lt;br /&gt;
После того как у вас в проекте появляется новый файл (например после &amp;lt;code&amp;gt;kks sync&amp;lt;/code&amp;gt;) нужно делать Reload Cmake project.&lt;br /&gt;
Выберите справа сверху интересующий вас файл и запускайте. &lt;br /&gt;
&lt;br /&gt;
====Подсветка синтаксиса====&lt;br /&gt;
Если она работает не правильно, откройте файл &amp;lt;code&amp;gt;simpleio_i686.S&amp;lt;/code&amp;gt;, нажмите на его вкладку в списке открытых файлов сверху правой кнопкой мыши и выберите &amp;quot;Associate file type&amp;quot;. В списке выберите Assembly Language.&lt;br /&gt;
&lt;br /&gt;
====Дебагер====&lt;br /&gt;
Дебагер работает из-коробки.&lt;br /&gt;
&lt;br /&gt;
Чтобы узнать значения регистра напишите в поле снизу строку $eax и нажмите на кнопку &amp;quot;+&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
= Как устроен курс =&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;
|-&lt;br /&gt;
| В конце 3-го модуля || экзамен || по 2-му и 3-му модулям&lt;br /&gt;
|-&lt;br /&gt;
| В конце 4-го модуля || экзамен || по 4-му модулю&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Формула оценки ==&lt;br /&gt;
За курс в зачетку выставляется 2 оценки: в конце 3 модуля O&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt; и в конце 4 модуля O&amp;lt;sub&amp;gt;4&amp;lt;/sub&amp;gt; -  по следующим формулам:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;O&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt; = 0.6 * H&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt; + 0.4 * Э&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;O&amp;lt;sub&amp;gt;4&amp;lt;/sub&amp;gt; = 0.5 * O&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt; + 0.3 * H&amp;lt;sub&amp;gt;4&amp;lt;/sub&amp;gt; + 0.2 * Э&amp;lt;sub&amp;gt;4&amp;lt;/sub&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
H&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt; и Э&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt; - накопленная оценка и оценка за экзамен в конце модуля i, соответственно. Эти оценки дробные от 0 до 10. Оценка за 3 модуль O&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt; учитывается в формуле для 4 модуля также в неокругленном виде.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Накопленная оценка H&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt; = ДЗ&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt; + С&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Накопленная оценка (от 0 до 10) складывается из оценки за ДЗ (от 0 до 9) и оценки за семинары (от 0 до 1), все оценки дробные.&lt;br /&gt;
* оценка за ДЗ дробная, от 0 до 9 баллов, получается из вашего общего балла, набранного в тестирующей системе. Общий балл в тестирующей системе - сумма баллов за все выданные контесты, включая домашние, контрольные, дорешки контрольных и бонусные. &lt;br /&gt;
** оценки за ДЗ от 0.0 до 6.0 ставятся по линейной шкале, если в тестирующей системе набрано от 0 до K&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt; баллов;&lt;br /&gt;
** оценки за ДЗ от 6.0 до 9.0 ставятся по рейтинговой линейной шкале, если набрано более K&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt; баллов. Подробнее, берётся максимальный балл &amp;lt;em&amp;gt;max_score&amp;lt;/em&amp;gt; (сумма по всем контестам, кроме бонусных), набранный хотя бы одним студентом. Тогда, если K&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt; &amp;lt; &amp;lt;em&amp;gt;your_score&amp;lt;/em&amp;gt;, то ваша оценка за ДЗ равна min(9, 6 + 3 * (&amp;lt;em&amp;gt;your_score&amp;lt;/em&amp;gt; - K&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;) / (&amp;lt;em&amp;gt;max_score&amp;lt;/em&amp;gt; - K&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;)), где &amp;lt;em&amp;gt;your_score&amp;lt;/em&amp;gt; - ваш общий балл в тестирующей системе (включая бонусные контесты)&lt;br /&gt;
* оценка за семинары дробная, от 0 до 1 балла, выставляется по правилам, оговоренным семинаристом&lt;br /&gt;
&lt;br /&gt;
Значения порогов K&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt; следующие:&lt;br /&gt;
* в 3 модуле: K&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt; = 5000&lt;br /&gt;
* в 4 модуле: K&amp;lt;sub&amp;gt;4&amp;lt;/sub&amp;gt; = 3500&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Округление арифметическое, применяется только в самом конце к итоговым оценкам O&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt; и O&amp;lt;sub&amp;gt;4&amp;lt;/sub&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;Автомат&amp;quot;&#039;&#039;&#039; выдаётся, если оценки за ДЗ и семинары не ниже некоторых пороговых значений, которые будут объявлены дополнительно.&lt;br /&gt;
&lt;br /&gt;
== Прокторинг ==&lt;br /&gt;
&lt;br /&gt;
На контрольной работе применяется селф-прокторинг (даже если вы находитесь в аудитории): необходимо сделать видеозапись, на которой видны ваш экран и ваше лицо во время решения задач. Микрофон тоже должен быть включён. В начале записи, пожалуйста, представьтесь. Запись необходимо будет выложить в любое облачное хранилище и сдать в ejudge ссылку на неё в течении нескольких часов после. Запись нужно хранить до выставления оценки за курс (до выставления оценки за первую половину для КР в первой половине курса). Размер файла записи не должен сильно превышать 250 МБ. Помните, запись это ваше доказательство честности написанной работы. Инструкция по настройке ОБС появится позднее на вики. Рекомендуется качество не выше 720р и не ниже 360р&lt;br /&gt;
&lt;br /&gt;
На контрольной работе можно пользоваться любыми материалами, веб-сайтами и т. д., за исключением интерактивного общения с кем-либо (гуглить можно, а вот советоваться нельзя). Телеграм-канал курса, а также официальные чаты курса также явно разрешены. В канале могут появляться важные объявления, за ним рекомендуется следить.&lt;br /&gt;
&lt;br /&gt;
= Записи лекций =&lt;br /&gt;
&lt;br /&gt;
[https://disk.yandex.ru/d/3Y9PtHYqiqJVsA Записи лекций и семинаров на Яндекс-Диске]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Когда !! Ссылка !! Конспекты&lt;br /&gt;
|-&lt;br /&gt;
| 05.11.2022 || https://www.youtube.com/watch?v=NNfqpUp3nBo || [https://caos.myltsev.ru/lectures/01-course.html 01] [https://caos.myltsev.ru/lectures/02-computers.html 02] [https://caos.myltsev.ru/lectures/03-integers.html 03] [https://caos.myltsev.ru/lectures/04-assembly.html 04]&lt;br /&gt;
|-&lt;br /&gt;
| 12.11.2022 || https://www.youtube.com/watch?v=HscPRNxJPy0 || [https://caos.myltsev.ru/lectures/05-jumps.html 05] [https://caos.myltsev.ru/lectures/06-nand2cpu.html 06]&lt;br /&gt;
|-&lt;br /&gt;
| 19.11.2022 || https://www.youtube.com/watch?v=9WE3AKEdesw ||&lt;br /&gt;
|-&lt;br /&gt;
| 26.11.2022 || https://www.youtube.com/watch?v=pMng13chjiE ||&lt;br /&gt;
|-&lt;br /&gt;
| 03.12.2022 || https://www.youtube.com/watch?v=6ORbITxFUdA ||&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Objatie groba</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=%D0%AF%D0%B7%D1%8B%D0%BA_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F_Python_2022/2023_(%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D0%BE%D0%B9_%D0%BF%D0%BE%D1%82%D0%BE%D0%BA)&amp;diff=71968</id>
		<title>Язык программирования Python 2022/2023 (основной поток)</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=%D0%AF%D0%B7%D1%8B%D0%BA_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F_Python_2022/2023_(%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D0%BE%D0%B9_%D0%BF%D0%BE%D1%82%D0%BE%D0%BA)&amp;diff=71968"/>
		<updated>2022-09-08T11:48:44Z</updated>

		<summary type="html">&lt;p&gt;Objatie groba: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Язык программирования Python, основной поток, 2022-2023 1 модуль ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Лектор:&#039;&#039;&#039;  [А. Г. Михеев]&lt;br /&gt;
&lt;br /&gt;
Программа курса и ноутбуки лекций: https://github.com/justalge/another_python_tutorial&lt;br /&gt;
&lt;br /&gt;
Видеозаписи всех лекций и некоторых семинаров: https://www.youtube.com/playlist?list=PLEwK9wdS5g0pOn3KCblRmmBV24o17r3LD&lt;br /&gt;
&lt;br /&gt;
Материалы лекций основаны на https://www.python-course.eu (англ. яз.). Разделы [https://www.python-course.eu/python3_course.php Python Tutorial], [https://www.python-course.eu/object_oriented_programming_introduction.php OOP] и [https://www.python-course.eu/advanced_python.php Advanced].&lt;br /&gt;
&lt;br /&gt;
Канал с важными объявлениями: https://t.me/+T9jrp8b5YFUwMDUy&lt;br /&gt;
&lt;br /&gt;
Материалы прошлых лет (рус. яз.):&lt;br /&gt;
* Конспекты лекций: https://yadi.sk/i/BkcKilJkumcPV&lt;br /&gt;
&lt;br /&gt;
==ДЗ==&lt;br /&gt;
&lt;br /&gt;
После каждой лекции вам будет дано оцениваемое домашнее задание. На выполнение задания дается 14 дней от лекции. Еще в течение 7 дней после этого доступна возможность досдать задачи, однако задачи оцениваются вполовину меньшим баллом. Перед семинаром необходимо изучить соответствующую тему по лекциям и текстовым конспектам.&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/40094/enter/ ДЗ 1 (Арифметика)] &#039;&#039;&#039;soft/hard дедлайны: 18.09.22 23:59:59 / 25.09.22 23:59:59&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/40106/enter/ ДЗ 2 (if, while, for, float)] &#039;&#039;&#039;22.09.22 23:59:59 / 29.09.22 23:59:59&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Контрольные==&lt;br /&gt;
&lt;br /&gt;
Раз в две недели проходит контрольная (с прокторингом).&lt;br /&gt;
На защите будет предложено для решения 8 задач, по 2 задачи средней сложности на каждую тему лекции.&lt;br /&gt;
Во время решения практических задач можно пользоваться конспектами и своими решениями задач ДЗ.&lt;br /&gt;
&lt;br /&gt;
== Формула оценки и экзамен ==&lt;br /&gt;
&lt;br /&gt;
На оценку влияют: выполнение домашнего задания, работа на семинаре, контрольные и экзамен. Итоговая оценка за курс вычисляется как &#039;&#039;&#039;0.6*накопленная + 0.4*экзамен&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
Накопленная оценка = &#039;&#039;&#039;0.4 * MEAN(оценок за контрольные) + 0.4 * MEAN(оценок за ДЗ) + 0.2 * MEAN(оценок за работу на семинаре)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Максимальная оценка за работу на семинаре - 10 баллов. Максимальная оценка за ДЗ - 10 баллов. Для того чтобы получить максимальную оценку за дз нужно решить &#039;&#039;&#039;все задачи&#039;&#039;&#039;. Количество баллов, которые вы можете получить за каждую задачу пропорционально (&#039;&#039;&#039;и не равно&#039;&#039;&#039;) тому количеству баллов за задачу, которое вы видите в контесте.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Возможно получение оценки за курс &amp;quot;автоматом&amp;quot; (не сдавать экзамен) при условии:&lt;br /&gt;
&lt;br /&gt;
1) накопленная оценка &amp;gt;= 8&lt;br /&gt;
&lt;br /&gt;
2) оценка за работу на семинаре &amp;gt;=8&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
За найденные и сообщенные семинаристу проблемы в тестах вы можете получить от 2 до 5 дополнительных баллов к оценке за семинар. Если вы ходите на семинары к нескольким семинаристам, конечная оценка за семинары = &#039;&#039;&#039;MIN(оценок, которые вы получили от каждого семинариста)&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Промежуточные значения не округляются, итоговое значение округляется по математическим правилам: к ближайшему целому, при дробной части 0.5 - в большую сторону.&lt;br /&gt;
&lt;br /&gt;
== Используемое ПО ==&lt;br /&gt;
&lt;br /&gt;
Необходимо установить интерпретатор Python версии не ниже 3.6 под свою ОС. Ссылка https://www.python.org/downloads/&lt;br /&gt;
&lt;br /&gt;
JetBrains PyCharm Community: https://www.jetbrains.com/pycharm/download/&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;
&lt;br /&gt;
223-1 https://t.me/+dLpV2MnkDfg5YzJi&lt;/div&gt;</summary>
		<author><name>Objatie groba</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=CAOS-2021&amp;diff=61609</id>
		<title>CAOS-2021</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=CAOS-2021&amp;diff=61609"/>
		<updated>2021-11-18T13:03:44Z</updated>

		<summary type="html">&lt;p&gt;Objatie groba: /* Как устроен курс */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
== Важные ссылки ==&lt;br /&gt;
&lt;br /&gt;
[https://caos.myltsev.ru Вход в Ejudge]&lt;br /&gt;
&lt;br /&gt;
[https://t.me/joinchat/Fu0tpJqr1ppkMjMy Телеграм-канал с объявлениями]&lt;br /&gt;
&lt;br /&gt;
[https://t.me/joinchat/QBRLiLbw8A43OWYy Телеграм-чат курса]&lt;br /&gt;
&lt;br /&gt;
[https://forms.gle/ZWxKuCLL2QZxzky27 Форма для фидбека]&lt;br /&gt;
&lt;br /&gt;
== Чаты групп ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|- style=&amp;quot;font-weight:bold; text-align:center;&amp;quot;&lt;br /&gt;
! Группа&lt;br /&gt;
! Telegram-чат&lt;br /&gt;
|-&lt;br /&gt;
| БПМИ201&lt;br /&gt;
| https://t.me/joinchat/LnOwQ-Z6HAo2OTg6&lt;br /&gt;
|-&lt;br /&gt;
| БПМИ202&lt;br /&gt;
| https://t.me/joinchat/OMRB-ZOwXXBhODBi&lt;br /&gt;
|-&lt;br /&gt;
| БПМИ203&lt;br /&gt;
| https://t.me/joinchat/kyFY_eIp60cyODRi&lt;br /&gt;
|-&lt;br /&gt;
| БПМИ204&lt;br /&gt;
| https://t.me/joinchat/RTey5l_q9LMyODIy&lt;br /&gt;
|-&lt;br /&gt;
| БПМИ205&lt;br /&gt;
| https://t.me/joinchat/jw2Z5v5R0Es3OTli&lt;br /&gt;
|-&lt;br /&gt;
| БПМИ206&lt;br /&gt;
| https://t.me/joinchat/eH0j31yf0QZkNGIy&lt;br /&gt;
|-&lt;br /&gt;
| БПМИ207&lt;br /&gt;
| https://t.me/joinchat/pVQNC9kwwfFiYWRi&lt;br /&gt;
|-&lt;br /&gt;
| БПМИ208&lt;br /&gt;
| https://t.me/joinchat/C7Wj_Cz-swUzZDEy&lt;br /&gt;
|-&lt;br /&gt;
| БПМИ209&lt;br /&gt;
| https://t.me/joinchat/cuqnvg2qofYyOTky&lt;br /&gt;
|-&lt;br /&gt;
| БПМИ2010&lt;br /&gt;
| https://t.me/joinchat/gyvWlC31TZ83NmNi&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[CAOS-2021/207_seminars|Страница семинаров 207 группы]]&lt;br /&gt;
&lt;br /&gt;
= Преподаватели и учебные ассистенты =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|- style=&amp;quot;font-weight:bold; text-align:center;&amp;quot;&lt;br /&gt;
! Группа&lt;br /&gt;
! Семинарист&lt;br /&gt;
! Ассистенты&lt;br /&gt;
|-&lt;br /&gt;
| БПМИ201&lt;br /&gt;
| [https://t.me/myltsev Александр Мыльцев]&lt;br /&gt;
| [https://t.me/gitnab Наби Гитинов], [https://t.me/lodthe Игорь Балюк]&lt;br /&gt;
|-&lt;br /&gt;
| БПМИ202&lt;br /&gt;
| [https://t.me/objatie_groba Игорь Минеев]&lt;br /&gt;
| [https://t.me/vkh_ent Владислав Хохлов]&lt;br /&gt;
|-&lt;br /&gt;
| БПМИ203&lt;br /&gt;
| [https://t.me/Exile333 Раиль Чабдаров]&lt;br /&gt;
| [https://t.me/shamerd Шамиль Аюпов], [https://t.me/AtgshkaSan Александр Шитов]&lt;br /&gt;
|-&lt;br /&gt;
| БПМИ204&lt;br /&gt;
| [https://www.hse.ru/org/persons/165212878 Роман Курынин]&lt;br /&gt;
| [https://t.me/nnv_nick Никита Насонков], [https://t.me/Ch0p1k Иван Лущ]&lt;br /&gt;
|-&lt;br /&gt;
| БПМИ205&lt;br /&gt;
| [https://t.me/a_salnikov Алексей Сальников]&lt;br /&gt;
| [https://t.me/SphericalPotatoInVacuum Александр Богданов], [https://t.me/supremeSwings Даниил Рубин]&lt;br /&gt;
|-&lt;br /&gt;
| БПМИ206&lt;br /&gt;
| [https://t.me/yuri3 Юрий Баранов]&lt;br /&gt;
| [https://t.me/darkkeks Вячеслав Бобень], [https://t.me/m_stetsyuk Михаил Стецюк]&lt;br /&gt;
|-&lt;br /&gt;
| БПМИ207&lt;br /&gt;
| [https://t.me/iiixphillxiii Михаил Филитов]&lt;br /&gt;
| [https://t.me/vadim1705 Вадим Дудкин], [https://t.me/Night_RS Александр Стрыгин]&lt;br /&gt;
|-&lt;br /&gt;
| БПМИ208&lt;br /&gt;
| [https://t.me/olegartys Олег Лёвин]&lt;br /&gt;
| [https://t.me/allisyonok Алиса Вернигор], [https://t.me/Lirikl Кирилл Ахметшин]&lt;br /&gt;
|-&lt;br /&gt;
| БПМИ209&lt;br /&gt;
| [https://www.hse.ru/org/persons/307352167 Сергей Горшков]&lt;br /&gt;
| [https://t.me/Egor_Gutrov Егор Гутров], [https://t.me/AraTiCho Ваге Оганнисян]&lt;br /&gt;
|-&lt;br /&gt;
| БПМИ2010&lt;br /&gt;
| [https://t.me/stealthekb Александр Раков]&lt;br /&gt;
| [https://t.me/kussyadil Адильхан Кусиденов], [https://t.me/uliana_win Ульяна Виноградова]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Распределение студентов =&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/spreadsheets/d/1WuwVK63MY3VrJR0-Ws5yC_TzHugME7znkOVuqaikAs4/edit?usp=sharing Распределение студентов по учебным группам]&lt;br /&gt;
&lt;br /&gt;
[https://forms.gle/HoAuPz5uu14GQRes7 Форма для желающих пройти курс в роли вольнослушателей].&lt;br /&gt;
&lt;br /&gt;
= Полезная информация =&lt;br /&gt;
&lt;br /&gt;
===Виртуальная машина (VirtualBox)===&lt;br /&gt;
[https://caos.myltsev.ru/hse-caos-xubuntu.ova Образ виртуальной машины]&lt;br /&gt;
&lt;br /&gt;
Рекомендуется скачать образ и установить его в эмулятор [https://www.virtualbox.org/ VirtualBox]. Логин-пароль xubuntu/xubuntu, можно делать sudo.&lt;br /&gt;
&lt;br /&gt;
Если не получается настроить виртуальную машину (например, на Mac M1), то можно получить доступ к учебному серверу по ssh. Для этого необходимо сгенерировать ssh-ключ и заполнить [https://forms.gle/daPEGUMz9pajpb1F9 Google-форму].&lt;br /&gt;
&lt;br /&gt;
Инструкции по генерации ssh-ключа: [https://git-scm.com/book/en/v2/Git-on-the-Server-Generating-Your-SSH-Public-Key от git-scm], [https://docs.github.com/en/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent от github].&lt;br /&gt;
&lt;br /&gt;
===Виртуальная машина (qemu)===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Проверялось только на MacOS 11.6.1.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Установите qemu: &amp;lt;code&amp;gt;brew install qemu&amp;lt;/code&amp;gt;&lt;br /&gt;
* Загрузите и распакуйте архив с образом FS:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget -O xubuntu_caos_2021.qcow2.tar.gz https://caos.myltsev.ru/xubuntu_caos_2021.qcow2.tar.gz &amp;amp;&amp;amp; \&lt;br /&gt;
        tar zxvf xubuntu_caos_2021.qcow2.tar.gz&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Запустите VM:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
QEMU_PATH=/usr/local/Cellar/qemu/6.1.0_1/bin/qemu-system-x86_64&lt;br /&gt;
FS_IMAGE_PATH=xubuntu_caos_2021.qcow2&lt;br /&gt;
&lt;br /&gt;
CPU_COUNT=2&lt;br /&gt;
MEMORY_MB=2048&lt;br /&gt;
&lt;br /&gt;
${QEMU_PATH} \&lt;br /&gt;
	-smp ${CPU_COUNT} \&lt;br /&gt;
	-m ${MEMORY_MB} \&lt;br /&gt;
	-name xubuntu_caos_2021 \&lt;br /&gt;
	-hda ${FS_IMAGE_PATH} \&lt;br /&gt;
	-accel hvf \&lt;br /&gt;
	-vga virtio \&lt;br /&gt;
	-display default,show-cursor=on \&lt;br /&gt;
	-usb \&lt;br /&gt;
	-device usb-tablet&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Отобрать курсор у QEMU: &amp;lt;code&amp;gt;Ctrl+Alt+G&amp;lt;/code&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
Перейти в full-screen mode можно:&lt;br /&gt;
:- передав опцию &amp;lt;code&amp;gt;--full-screen&amp;lt;/code&amp;gt; при старте VM&lt;br /&gt;
:- выбрав в меню &amp;lt;code&amp;gt;View-&amp;gt;Full Screen&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Материалы===&lt;br /&gt;
Библиотека ввода-вывода для ассемблера x86: [https://caos.myltsev.ru/simpleio_i686.S simpleio_i686.S]&lt;br /&gt;
&lt;br /&gt;
Внутри виртуальной машины её можно скачать командой &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;wget https://caos.myltsev.ru/simpleio_i686.S&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Конспекты от студента курса: https://www.notion.so/2-4-0f236f7d03c74dfbbd945f93651758a2&lt;br /&gt;
&lt;br /&gt;
===Как устроен курс===&lt;br /&gt;
Курс идёт три модуля, со второго по четвёртый. Раз в неделю читается две лекции, после них, как правило, выдаётся ДЗ — 5 задач начальной стоимостью 100 баллов каждая. В общем случае, штраф за неверную посылку - 1 балл (но лучше ориентироваться на Run penalty).&lt;br /&gt;
&lt;br /&gt;
Дедлайны: через 2 недели после лекции (23:59:59 четверга) стоимость задач уменьшается до 50 баллов, ещё через 2 недели — до 20 баллов. Такая стоимость остаётся до конца курса.&lt;br /&gt;
&lt;br /&gt;
Примерно раз в три недели вместо одной из лекций происходит контрольная.&lt;br /&gt;
&lt;br /&gt;
За работу на семинарах преподаватель выставляет семинарские баллы на своё усмотрение. Можно посещать семинары любых групп в любом количестве. За каждую неделю (от лекции до лекции) студент может получить в совокупности не более 200 семинарских баллов.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Набрано баллов !! Накопленная оценка&lt;br /&gt;
|-&lt;br /&gt;
| 500 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 1500 || 2&lt;br /&gt;
|-&lt;br /&gt;
| 2500 || 3&lt;br /&gt;
|-&lt;br /&gt;
| 4500 || 4&lt;br /&gt;
|-&lt;br /&gt;
| 7000 || 5&lt;br /&gt;
|-&lt;br /&gt;
| 9500 || 6&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Оценки 7-10 выставляются по линейной шкале с учётом максимального количества набранных баллов за решение задач.&lt;/div&gt;</summary>
		<author><name>Objatie groba</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D1%8B_%D0%B8_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D1%8F_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F_%D0%BD%D0%B0_%D0%9F%D0%9C%D0%98_2021/2022_(%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D0%BE%D0%B9_%D0%BF%D0%BE%D1%82%D0%BE%D0%BA)&amp;diff=59541</id>
		<title>Основы и методология программирования на ПМИ 2021/2022 (основной поток)</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D1%8B_%D0%B8_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D1%8F_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F_%D0%BD%D0%B0_%D0%9F%D0%9C%D0%98_2021/2022_(%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D0%BE%D0%B9_%D0%BF%D0%BE%D1%82%D0%BE%D0%BA)&amp;diff=59541"/>
		<updated>2021-10-06T13:04:10Z</updated>

		<summary type="html">&lt;p&gt;Objatie groba: /* Дедлайны по ДЗ в группах */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Основы и методология программирования, основной поток, 2021-2022 1 модуль ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Лектор:&#039;&#039;&#039;  [А. Г. Михеев]&lt;br /&gt;
&lt;br /&gt;
Программа курса и ноутбуки лекций (будут добавляться по мере поступления): https://github.com/justalge/another_python_tutorial&lt;br /&gt;
&lt;br /&gt;
Видеозаписи всех лекций и некоторых семинаров: https://www.youtube.com/playlist?list=PLEwK9wdS5g0pOn3KCblRmmBV24o17r3LD&lt;br /&gt;
&lt;br /&gt;
Материалы лекций основаны на https://www.python-course.eu (англ. яз.). Разделы [https://www.python-course.eu/python3_course.php Python Tutorial], [https://www.python-course.eu/object_oriented_programming_introduction.php OOP] и [https://www.python-course.eu/advanced_python.php Advanced].&lt;br /&gt;
&lt;br /&gt;
Канал с важными объявлениями: https://t.me/joinchat/LsEVKZunealjOTUy&lt;br /&gt;
&lt;br /&gt;
Материалы прошлого года (рус. яз.):&lt;br /&gt;
* Конспекты лекций: https://yadi.sk/i/BkcKilJkumcPV&lt;br /&gt;
* Видео-лекции: https://www.coursera.org/learn/python-osnovy-programmirovaniya/home/welcome (платить денег ни в коем случае не нужно)&lt;br /&gt;
&lt;br /&gt;
==ДЗ==&lt;br /&gt;
&lt;br /&gt;
После каждого семинара вам будет дано оцениваемое домашнее задание. На выполнение задания дается 8 дней от момента начала соответствующего семинара. Еще в течение 7 дней после этого доступна возможность досдать задачи, однако задачи оцениваются вполовину меньшим баллом. Перед семинаром необходимо изучить соответствующую тему по лекциям и текстовым конспектам.&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/29037/enter/ ДЗ 1 (Арифметика)]&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/29069/enter/ ДЗ 2 (if, while, for, float)]&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/29227/enter/ ДЗ 3 (strings, lists)]&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/29228/enter/ ДЗ 4 (dictionaries, sets)]&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/29478/enter/ ДЗ 5-6 (functions, recursion)]  &#039;&#039;&#039;На 2 недели. Чтобы набрать максимальное количество баллов за это ДЗ нужно решить на 20 баллов&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/29691/enter ДЗ 7 (sorting, linear search)]&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/29699/enter ДЗ 8 (OOP intro)] - Максимальное количество баллов за это ДЗ - 14 (см баллы в контесте), чтобы получить максимум, нужно решить все задачи&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/29825/enter ДЗ 9 (OOP outro) - Максимальное количество баллов за это ДЗ - 14 (см баллы в контесте), чтобы получить максимум, нужно решить все задачи], &#039;&#039;&#039;Дедлайн 16.10 23:59 для всех групп&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Программа advanced группы 2112-2==&lt;br /&gt;
&lt;br /&gt;
Краткое введение на примерах в:&lt;br /&gt;
&lt;br /&gt;
- использование внешних библиотек&lt;br /&gt;
&lt;br /&gt;
- dataclasses, type hints&lt;br /&gt;
&lt;br /&gt;
- сравнение oop и fp стилей&lt;br /&gt;
&lt;br /&gt;
- чистый читабельный код: нейминг, agile, ограничения на средства языка, линтеры&lt;br /&gt;
&lt;br /&gt;
- простой веб сервис: http, бд&lt;br /&gt;
&lt;br /&gt;
- threading, multiprocessing&lt;br /&gt;
&lt;br /&gt;
- async&lt;br /&gt;
&lt;br /&gt;
- git&lt;br /&gt;
&lt;br /&gt;
- bash&lt;br /&gt;
&lt;br /&gt;
- публикация библиотек&lt;br /&gt;
&lt;br /&gt;
- аналитика и визуализация&lt;br /&gt;
&lt;br /&gt;
- ML/pytorch&lt;br /&gt;
&lt;br /&gt;
- поиск информации и готовых модулей&lt;br /&gt;
&lt;br /&gt;
- мини-проект на любую из вышеперечисленных тем&lt;br /&gt;
&lt;br /&gt;
==Программа advanced группы 214-2==&lt;br /&gt;
&lt;br /&gt;
Семинар 1 - знакомство с python&lt;br /&gt;
&lt;br /&gt;
Семинар 2 - код стайл, pep8, правила хорошего тона camel case, snake case&lt;br /&gt;
&lt;br /&gt;
Семинар 3 - учимся писать тесты, tdd&lt;br /&gt;
&lt;br /&gt;
Семинар 4 - python в математике: графики, статистика&lt;br /&gt;
&lt;br /&gt;
Семинар 5 - системы контроля версий, open source&lt;br /&gt;
&lt;br /&gt;
Семинар 6 - парсинг данных: bs4, selenium&lt;br /&gt;
&lt;br /&gt;
Семинар 7 - учимся писать код на собеседованиях, и как их проходить&lt;br /&gt;
&lt;br /&gt;
Семинар 8 - фреймворки для тестирования, пишем свой mvp проект на семинаре&lt;br /&gt;
&lt;br /&gt;
Семинар 9 - pyqt&lt;br /&gt;
&lt;br /&gt;
Семинар 10 - веб разработка, requests, flask&lt;br /&gt;
&lt;br /&gt;
Семинар 11 - пишем телеграм-бота&lt;br /&gt;
&lt;br /&gt;
Семинар 12 - intro ml&lt;br /&gt;
&lt;br /&gt;
==Система защиты ДЗ==&lt;br /&gt;
&lt;br /&gt;
Раз в две недели проходит защита ДЗ (с прокторингом или очно). На защиту отводится одна лекционная пара.&lt;br /&gt;
На защите будет предложено для решения 8 задач, по 2 задачи средней сложности на каждую тему лекции.&lt;br /&gt;
Во время решения практических задач можно пользоваться конспектами и своими решениями задач ДЗ.&lt;br /&gt;
&lt;br /&gt;
Оценка за каждую лекционную тему определяется как &#039;&#039;&#039;koef*оценка за лекционную тему (до защиты)&#039;&#039;&#039;, где koef - коэффициент, который определяется тем, как была написана защита ДЗ.&lt;br /&gt;
Так, если на защите ДЗ решено 0 задач - коэффициент составляет 0.3, 1 задача - 0.6, 2 задачи - 1.&lt;br /&gt;
&lt;br /&gt;
Со студентами, результат работы которых на защите сильно отличается от оценки за ДЗ до защиты, будет проведена дополнительная устная защита с целью поиска путей исправления проблем в освоении материала.&lt;br /&gt;
&lt;br /&gt;
== Формула оценки и экзамен ==&lt;br /&gt;
&lt;br /&gt;
На оценку влияют: выполнение домашнего задания, работа на семинаре, защита домашнего задания и экзамен. Итоговая оценка за курс вычисляется как &#039;&#039;&#039;0.6*накопленная + 0.4*экзамен&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
Накопленная оценка считается как: среднее арифметическое оценок за каждую лекционную тему.&lt;br /&gt;
Оценка за каждую лекционную тему рассчитывается как: &#039;&#039;&#039;min(10, koef*(0.8*оценка за ДЗ по теме лекции (до защиты) + 0.2*оценка за семинар по теме лекции))&#039;&#039;&#039;.&lt;br /&gt;
Максимальная оценка за работу на семинаре - 10 баллов. Максимальная оценка за  ДЗ по теме лекции (до защиты) - 14 баллов. При этом суммарное количество баллов в одном ДЗ в контесте больше 14. Чтобы получить максимальную оценку за ДЗ можно решить не все задачи. Таким образом, максимальную оценку по теме лекции вы можете получить, решая только ДЗ.&lt;br /&gt;
&lt;br /&gt;
За найденные и сообщенные семинаристу проблемы в тестах вы можете получить от 2 до 5 дополнительных баллов к оценке за семинар.&lt;br /&gt;
&lt;br /&gt;
Промежуточные значения не округляются, итоговое значение округляется по математическим правилам: к ближайшему целому, при дробной части 0.5 - в большую сторону.&lt;br /&gt;
&lt;br /&gt;
== Используемое ПО ==&lt;br /&gt;
&lt;br /&gt;
Необходимо установить интерпретатор Python версии не ниже 3.6 под свою ОС. Ссылка https://www.python.org/downloads/&lt;br /&gt;
&lt;br /&gt;
JetBrains PyCharm Community: https://www.jetbrains.com/pycharm/download/&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;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Контест !! ДЗ 1 !! ДЗ 2 !! ДЗ 3 !! ДЗ 4 !! ДЗ 5-6 !! ДЗ 7 !! ДЗ 8 !! ДЗ 9 !! ДЗ 10 !! ДЗ 11 !! ДЗ 12&lt;br /&gt;
|-&lt;br /&gt;
| 212-1 || 15.09.21 16:20 || 16.09.21 15:00 || - || - || - || - || - || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
| 212-2 || 16.09.21 9:30 || 16.09.21 11:10 || 23.09.21 9:30 || 23.09.21 11:10 || 06.10.21 9:30 || 07.10.21 9:30 || 07.10.21 11:10 || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
| 214-2 || 16.09.21 9:29 || 18.09.21 9:29 || 23.09.21 9:29 || 25.09.21 9:29  || 06.10.21 9:29 || 07.10.21 9:29 || 09.10.21 9:29 || 16.10.21 23:59 || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
| 218-1 || 19.09.21 13:00 || 22.09.21 19:40 || 23.09.21 14:40 || 29.09.21 19:40 || 06.10.21 14:40 || 07.10.21 13:00 || 13.10.21 19:40 || 16.10.21 23:59 || 16.10.21 23:59 || - || -&lt;br /&gt;
|-&lt;br /&gt;
| 2111-2 || 18.09.21 09:30 || 19.09.21 11:10 || 23.09.21 09:30 || 25.09.21 09:30 || 07.10.21 09:30 || 07.10.21 09:30 || 09.10.21 23:59 || 16.10.21 23:59 || 16.10.21 23:59 || - || -&lt;br /&gt;
|-&lt;br /&gt;
| 216-2 || 15.09.21 18:10 || 15.09.21 19:40 || 22.09.21 18:10 || 22.09.21 19:40 || 06.10.21 18:10 || 06.10.21 18:10 || 06.10.21 19:40 || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
| 219-1 || 15.09.21 11:10 || 16.09.21 11:10 || 22.09.21 11:10 || 23.09.21 11:10 || 06.10.21 11:10 || 06.10.21 11:10 || 07.10.21 11:10 || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
| 2111-1 || 16.09.21 9:30 || 18.09.21 9:30 || 23.09.21 9:30 || 25.09.21 9:30 || 07.10.21 9:30 || 07.10.21 9:30 || - || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
| 216-1 || 16.09.21 9:30 || 16.09.21 11:10 || 23.09.21 9:30 || 23.09.21 11:10 || 07.10.21 9:30 || 07.10.21 11:10 || - || - || - || - || -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Дедлайны по дорешиванию семинаров в группах ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! -  !! Семинар 2 (code style) !! Семинар 3 (тестирование) !! Семинар 4 (matplotlib)!! Семинар 5 (git)!! Семинар 6 (wiki) !! Семинар 7 (cv) !! Семинар 8 (pyqt) !! Семинар 9 (pytest) !! Семинар 10 (web)&lt;br /&gt;
|-&lt;br /&gt;
| 214-2 || 13.09.21 23:59 || 18.09.21 23:59 || 20.09.21 23:59 || 27.09.21 23:59 || 06.10.21 23:59 || 16.10.21 23:59 || 16.10.21 23:59 || 16.10.21 23:59 || 16.10.21 23:59 ||&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Objatie groba</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D1%8B_%D0%B8_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D1%8F_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F_%D0%BD%D0%B0_%D0%9F%D0%9C%D0%98_2021/2022_(%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D0%BE%D0%B9_%D0%BF%D0%BE%D1%82%D0%BE%D0%BA)&amp;diff=59141</id>
		<title>Основы и методология программирования на ПМИ 2021/2022 (основной поток)</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D1%8B_%D0%B8_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D1%8F_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F_%D0%BD%D0%B0_%D0%9F%D0%9C%D0%98_2021/2022_(%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D0%BE%D0%B9_%D0%BF%D0%BE%D1%82%D0%BE%D0%BA)&amp;diff=59141"/>
		<updated>2021-09-29T11:32:54Z</updated>

		<summary type="html">&lt;p&gt;Objatie groba: /* Дедлайны по ДЗ в группах */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Основы и методология программирования, основной поток, 2021-2022 1 модуль ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Лектор:&#039;&#039;&#039;  [А. Г. Михеев]&lt;br /&gt;
&lt;br /&gt;
Программа курса и ноутбуки лекций (будут добавляться по мере поступления): https://github.com/justalge/another_python_totorial/blob/main/README.md&lt;br /&gt;
&lt;br /&gt;
Видеозаписи всех лекций и некоторых семинаров: https://www.youtube.com/playlist?list=PLEwK9wdS5g0pOn3KCblRmmBV24o17r3LD&lt;br /&gt;
&lt;br /&gt;
Материалы лекций основаны на https://www.python-course.eu (англ. яз.). Разделы [https://www.python-course.eu/python3_course.php Python Tutorial], [https://www.python-course.eu/object_oriented_programming_introduction.php OOP] и [https://www.python-course.eu/advanced_python.php Advanced].&lt;br /&gt;
&lt;br /&gt;
Канал с важными объявлениями: https://t.me/joinchat/LsEVKZunealjOTUy&lt;br /&gt;
&lt;br /&gt;
Материалы прошлого года (рус. яз.):&lt;br /&gt;
* Конспекты лекций: https://yadi.sk/i/BkcKilJkumcPV&lt;br /&gt;
* Видео-лекции: https://www.coursera.org/learn/python-osnovy-programmirovaniya/home/welcome (платить денег ни в коем случае не нужно)&lt;br /&gt;
&lt;br /&gt;
==ДЗ==&lt;br /&gt;
&lt;br /&gt;
После каждого семинара вам будет дано оцениваемое домашнее задание. На выполнение задания дается 8 дней от момента начала соответствующего семинара. Еще в течение 7 дней после этого доступна возможность досдать задачи, однако задачи оцениваются вполовину меньшим баллом. Перед семинаром необходимо изучить соответствующую тему по лекциям и текстовым конспектам.&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/29037/enter/ ДЗ 1 (Арифметика)]&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/29069/enter/ ДЗ 2 (if, while, for, float)]&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/29227/enter/ ДЗ 3 (strings, lists)]&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/29228/enter/ ДЗ 4 (dictionaries, sets)]&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/29478/enter/ ДЗ 5-6 (functions, recursion)]  &#039;&#039;&#039;На 2 недели. Чтобы набрать максимальное количество баллов за это ДЗ нужно решить на 20 баллов&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/29691/enter ДЗ 7 (sorting, linear search)]&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/29699/enter ДЗ 8 (OOP intro)]&lt;br /&gt;
&lt;br /&gt;
==Программа advanced группы 2112-2==&lt;br /&gt;
&lt;br /&gt;
Краткое введение на примерах в:&lt;br /&gt;
&lt;br /&gt;
- использование внешних библиотек&lt;br /&gt;
&lt;br /&gt;
- dataclasses, type hints&lt;br /&gt;
&lt;br /&gt;
- сравнение oop и fp стилей&lt;br /&gt;
&lt;br /&gt;
- чистый читабельный код: нейминг, agile, ограничения на средства языка, линтеры&lt;br /&gt;
&lt;br /&gt;
- простой веб сервис: http, бд&lt;br /&gt;
&lt;br /&gt;
- threading, multiprocessing&lt;br /&gt;
&lt;br /&gt;
- async&lt;br /&gt;
&lt;br /&gt;
- git&lt;br /&gt;
&lt;br /&gt;
- bash&lt;br /&gt;
&lt;br /&gt;
- публикация библиотек&lt;br /&gt;
&lt;br /&gt;
- аналитика и визуализация&lt;br /&gt;
&lt;br /&gt;
- ML/pytorch&lt;br /&gt;
&lt;br /&gt;
- поиск информации и готовых модулей&lt;br /&gt;
&lt;br /&gt;
- мини-проект на любую из вышеперечисленных тем&lt;br /&gt;
&lt;br /&gt;
==Программа advanced группы 214-2==&lt;br /&gt;
&lt;br /&gt;
Семинар 1 - знакомство с python&lt;br /&gt;
&lt;br /&gt;
Семинар 2 - код стайл, pep8, правила хорошего тона camel case, snake case&lt;br /&gt;
&lt;br /&gt;
Семинар 3 - учимся писать тесты, tdd&lt;br /&gt;
&lt;br /&gt;
Семинар 4 - python в математике: графики, статистика&lt;br /&gt;
&lt;br /&gt;
Семинар 5 - системы контроля версий, open source&lt;br /&gt;
&lt;br /&gt;
Семинар 6 - парсинг данных: bs4, selenium&lt;br /&gt;
&lt;br /&gt;
Семинар 7 - учимся писать код на собеседованиях, и как их проходить&lt;br /&gt;
&lt;br /&gt;
Семинар 8 - фреймворки для тестирования, пишем свой mvp проект на семинаре&lt;br /&gt;
&lt;br /&gt;
Семинар 9 - pyqt&lt;br /&gt;
&lt;br /&gt;
Семинар 10 - веб разработка, requests, flask&lt;br /&gt;
&lt;br /&gt;
Семинар 11 - пишем телеграм-бота&lt;br /&gt;
&lt;br /&gt;
Семинар 12 - intro ml&lt;br /&gt;
&lt;br /&gt;
==Система защиты ДЗ==&lt;br /&gt;
&lt;br /&gt;
Раз в две недели проходит защита ДЗ (с прокторингом или очно). На защиту отводится одна лекционная пара.&lt;br /&gt;
На защите будет предложено для решения 8 задач, по 2 задачи средней сложности на каждую тему лекции.&lt;br /&gt;
Во время решения практических задач можно пользоваться конспектами и своими решениями задач ДЗ.&lt;br /&gt;
&lt;br /&gt;
Оценка за каждую лекционную тему определяется как &#039;&#039;&#039;koef*оценка за лекционную тему (до защиты)&#039;&#039;&#039;, где koef - коэффициент, который определяется тем, как была написана защита ДЗ.&lt;br /&gt;
Так, если на защите ДЗ решено 0 задач - коэффициент составляет 0.3, 1 задача - 0.6, 2 задачи - 1.&lt;br /&gt;
&lt;br /&gt;
Со студентами, результат работы которых на защите сильно отличается от оценки за ДЗ до защиты, будет проведена дополнительная устная защита с целью поиска путей исправления проблем в освоении материала.&lt;br /&gt;
&lt;br /&gt;
== Формула оценки и экзамен ==&lt;br /&gt;
&lt;br /&gt;
На оценку влияют: выполнение домашнего задания, работа на семинаре, защита домашнего задания и экзамен. Итоговая оценка за курс вычисляется как &#039;&#039;&#039;0.6*накопленная + 0.4*экзамен&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
Накопленная оценка считается как: среднее арифметическое оценок за каждую лекционную тему.&lt;br /&gt;
Оценка за каждую лекционную тему рассчитывается как: &#039;&#039;&#039;min(10, koef*(0.8*оценка за ДЗ по теме лекции (до защиты) + 0.2*оценка за семинар по теме лекции))&#039;&#039;&#039;.&lt;br /&gt;
Максимальная оценка за работу на семинаре - 10 баллов. Максимальная оценка за  ДЗ по теме лекции (до защиты) - 14 баллов. При этом суммарное количество баллов в одном ДЗ в контесте больше 14. Чтобы получить максимальную оценку за ДЗ можно решить не все задачи. Таким образом, максимальную оценку по теме лекции вы можете получить, решая только ДЗ.&lt;br /&gt;
&lt;br /&gt;
За найденные и сообщенные семинаристу проблемы в тестах вы можете получить от 2 до 5 дополнительных баллов к оценке за семинар.&lt;br /&gt;
&lt;br /&gt;
Промежуточные значения не округляются, итоговое значение округляется по математическим правилам: к ближайшему целому, при дробной части 0.5 - в большую сторону.&lt;br /&gt;
&lt;br /&gt;
== Используемое ПО ==&lt;br /&gt;
&lt;br /&gt;
Необходимо установить интерпретатор Python версии не ниже 3.6 под свою ОС. Ссылка https://www.python.org/downloads/&lt;br /&gt;
&lt;br /&gt;
JetBrains PyCharm Community: https://www.jetbrains.com/pycharm/download/&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;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Контест !! ДЗ 1 !! ДЗ 2 !! ДЗ 3 !! ДЗ 4 !! ДЗ 5-6 !! ДЗ 7 !! ДЗ 8 !! ДЗ 9 !! ДЗ 10 !! ДЗ 11 !! ДЗ 12&lt;br /&gt;
|-&lt;br /&gt;
| 212-1 || 15.09.21 16:20 || 16.09.21 15:00 || - || - || - || - || - || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
| 214-2 || 16.09.21 9:29 || 18.09.21 9:29 || 23.09.21 9:29 || 25.09.21 9:29  || 06.10.21 9:29 || - || - || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
| 218-1 || 19.09.21 13:00 || 22.09.21 19:40 || 23.09.21 14:40 || 29.09.21 19:40 || 06.10.21 14:40 || 07.10.21 13:00 || - || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
| 2111-2 || 18.09.21 09:30 || 19.09.21 11:10 || 23.09.21 09:30 || 25.09.21 09:30 || 07.10.21 09:30 || - || - || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
| 216-2 || 15.09.21 18:10 || 15.09.21 19:40 || 22.09.21 18:10 || 22.09.21 19:40 || 06.10.21 18:10 || 06.10.21 18:10 || 06.10.21 19:40 || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
| 219-1 || 15.09.21 11:10 || 16.09.21 11:10 || 22.09.21 11:10 || 23.09.21 11:10 || 06.10.21 11:10 || 06.10.21 11:10 || 06.10.21 11:10 || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
| 2111-1 || 16.09.21 9:30 || 18.09.21 9:30 || 23.09.21 9:30 || 25.09.21 9:30 || 07.10.21 9:30 || 07.10.21 9:30 || - || - || - || - || -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Дедлайны по дорешиванию семинаров в группах ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! -  !! Семинар 2 (code style) !! Семинар 3 (тестирование) !! Семинар 4 (matplotlib)!! Семинар 5 (git)!! Семинар 6 (wiki) !!&lt;br /&gt;
|-&lt;br /&gt;
| 214-2 || 13.09.21 23:59 || 18.09.21 23:59 || 20.09.21 23:59 (для новеньких = 24.09.21 23:59) || 27.09.21 23:59 || 06.10.21 23:59 ||&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Objatie groba</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D1%8B_%D0%B8_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D1%8F_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F_%D0%BD%D0%B0_%D0%9F%D0%9C%D0%98_2021/2022_(%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D0%BE%D0%B9_%D0%BF%D0%BE%D1%82%D0%BE%D0%BA)&amp;diff=59140</id>
		<title>Основы и методология программирования на ПМИ 2021/2022 (основной поток)</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D1%8B_%D0%B8_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D1%8F_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F_%D0%BD%D0%B0_%D0%9F%D0%9C%D0%98_2021/2022_(%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D0%BE%D0%B9_%D0%BF%D0%BE%D1%82%D0%BE%D0%BA)&amp;diff=59140"/>
		<updated>2021-09-29T11:31:39Z</updated>

		<summary type="html">&lt;p&gt;Objatie groba: /* Дедлайны по ДЗ в группах */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Основы и методология программирования, основной поток, 2021-2022 1 модуль ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Лектор:&#039;&#039;&#039;  [А. Г. Михеев]&lt;br /&gt;
&lt;br /&gt;
Программа курса и ноутбуки лекций (будут добавляться по мере поступления): https://github.com/justalge/another_python_totorial/blob/main/README.md&lt;br /&gt;
&lt;br /&gt;
Видеозаписи всех лекций и некоторых семинаров: https://www.youtube.com/playlist?list=PLEwK9wdS5g0pOn3KCblRmmBV24o17r3LD&lt;br /&gt;
&lt;br /&gt;
Материалы лекций основаны на https://www.python-course.eu (англ. яз.). Разделы [https://www.python-course.eu/python3_course.php Python Tutorial], [https://www.python-course.eu/object_oriented_programming_introduction.php OOP] и [https://www.python-course.eu/advanced_python.php Advanced].&lt;br /&gt;
&lt;br /&gt;
Канал с важными объявлениями: https://t.me/joinchat/LsEVKZunealjOTUy&lt;br /&gt;
&lt;br /&gt;
Материалы прошлого года (рус. яз.):&lt;br /&gt;
* Конспекты лекций: https://yadi.sk/i/BkcKilJkumcPV&lt;br /&gt;
* Видео-лекции: https://www.coursera.org/learn/python-osnovy-programmirovaniya/home/welcome (платить денег ни в коем случае не нужно)&lt;br /&gt;
&lt;br /&gt;
==ДЗ==&lt;br /&gt;
&lt;br /&gt;
После каждого семинара вам будет дано оцениваемое домашнее задание. На выполнение задания дается 8 дней от момента начала соответствующего семинара. Еще в течение 7 дней после этого доступна возможность досдать задачи, однако задачи оцениваются вполовину меньшим баллом. Перед семинаром необходимо изучить соответствующую тему по лекциям и текстовым конспектам.&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/29037/enter/ ДЗ 1 (Арифметика)]&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/29069/enter/ ДЗ 2 (if, while, for, float)]&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/29227/enter/ ДЗ 3 (strings, lists)]&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/29228/enter/ ДЗ 4 (dictionaries, sets)]&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/29478/enter/ ДЗ 5-6 (functions, recursion)]  &#039;&#039;&#039;На 2 недели. Чтобы набрать максимальное количество баллов за это ДЗ нужно решить на 20 баллов&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/29691/enter ДЗ 7 (sorting, linear search)]&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/29699/enter ДЗ 8 (OOP intro)]&lt;br /&gt;
&lt;br /&gt;
==Программа advanced группы 2112-2==&lt;br /&gt;
&lt;br /&gt;
Краткое введение на примерах в:&lt;br /&gt;
&lt;br /&gt;
- использование внешних библиотек&lt;br /&gt;
&lt;br /&gt;
- dataclasses, type hints&lt;br /&gt;
&lt;br /&gt;
- сравнение oop и fp стилей&lt;br /&gt;
&lt;br /&gt;
- чистый читабельный код: нейминг, agile, ограничения на средства языка, линтеры&lt;br /&gt;
&lt;br /&gt;
- простой веб сервис: http, бд&lt;br /&gt;
&lt;br /&gt;
- threading, multiprocessing&lt;br /&gt;
&lt;br /&gt;
- async&lt;br /&gt;
&lt;br /&gt;
- git&lt;br /&gt;
&lt;br /&gt;
- bash&lt;br /&gt;
&lt;br /&gt;
- публикация библиотек&lt;br /&gt;
&lt;br /&gt;
- аналитика и визуализация&lt;br /&gt;
&lt;br /&gt;
- ML/pytorch&lt;br /&gt;
&lt;br /&gt;
- поиск информации и готовых модулей&lt;br /&gt;
&lt;br /&gt;
- мини-проект на любую из вышеперечисленных тем&lt;br /&gt;
&lt;br /&gt;
==Программа advanced группы 214-2==&lt;br /&gt;
&lt;br /&gt;
Семинар 1 - знакомство с python&lt;br /&gt;
&lt;br /&gt;
Семинар 2 - код стайл, pep8, правила хорошего тона camel case, snake case&lt;br /&gt;
&lt;br /&gt;
Семинар 3 - учимся писать тесты, tdd&lt;br /&gt;
&lt;br /&gt;
Семинар 4 - python в математике: графики, статистика&lt;br /&gt;
&lt;br /&gt;
Семинар 5 - системы контроля версий, open source&lt;br /&gt;
&lt;br /&gt;
Семинар 6 - парсинг данных: bs4, selenium&lt;br /&gt;
&lt;br /&gt;
Семинар 7 - учимся писать код на собеседованиях, и как их проходить&lt;br /&gt;
&lt;br /&gt;
Семинар 8 - фреймворки для тестирования, пишем свой mvp проект на семинаре&lt;br /&gt;
&lt;br /&gt;
Семинар 9 - pyqt&lt;br /&gt;
&lt;br /&gt;
Семинар 10 - веб разработка, requests, flask&lt;br /&gt;
&lt;br /&gt;
Семинар 11 - пишем телеграм-бота&lt;br /&gt;
&lt;br /&gt;
Семинар 12 - intro ml&lt;br /&gt;
&lt;br /&gt;
==Система защиты ДЗ==&lt;br /&gt;
&lt;br /&gt;
Раз в две недели проходит защита ДЗ (с прокторингом или очно). На защиту отводится одна лекционная пара.&lt;br /&gt;
На защите будет предложено для решения 8 задач, по 2 задачи средней сложности на каждую тему лекции.&lt;br /&gt;
Во время решения практических задач можно пользоваться конспектами и своими решениями задач ДЗ.&lt;br /&gt;
&lt;br /&gt;
Оценка за каждую лекционную тему определяется как &#039;&#039;&#039;koef*оценка за лекционную тему (до защиты)&#039;&#039;&#039;, где koef - коэффициент, который определяется тем, как была написана защита ДЗ.&lt;br /&gt;
Так, если на защите ДЗ решено 0 задач - коэффициент составляет 0.3, 1 задача - 0.6, 2 задачи - 1.&lt;br /&gt;
&lt;br /&gt;
Со студентами, результат работы которых на защите сильно отличается от оценки за ДЗ до защиты, будет проведена дополнительная устная защита с целью поиска путей исправления проблем в освоении материала.&lt;br /&gt;
&lt;br /&gt;
== Формула оценки и экзамен ==&lt;br /&gt;
&lt;br /&gt;
На оценку влияют: выполнение домашнего задания, работа на семинаре, защита домашнего задания и экзамен. Итоговая оценка за курс вычисляется как &#039;&#039;&#039;0.6*накопленная + 0.4*экзамен&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
Накопленная оценка считается как: среднее арифметическое оценок за каждую лекционную тему.&lt;br /&gt;
Оценка за каждую лекционную тему рассчитывается как: &#039;&#039;&#039;min(10, koef*(0.8*оценка за ДЗ по теме лекции (до защиты) + 0.2*оценка за семинар по теме лекции))&#039;&#039;&#039;.&lt;br /&gt;
Максимальная оценка за работу на семинаре - 10 баллов. Максимальная оценка за  ДЗ по теме лекции (до защиты) - 14 баллов. При этом суммарное количество баллов в одном ДЗ в контесте больше 14. Чтобы получить максимальную оценку за ДЗ можно решить не все задачи. Таким образом, максимальную оценку по теме лекции вы можете получить, решая только ДЗ.&lt;br /&gt;
&lt;br /&gt;
За найденные и сообщенные семинаристу проблемы в тестах вы можете получить от 2 до 5 дополнительных баллов к оценке за семинар.&lt;br /&gt;
&lt;br /&gt;
Промежуточные значения не округляются, итоговое значение округляется по математическим правилам: к ближайшему целому, при дробной части 0.5 - в большую сторону.&lt;br /&gt;
&lt;br /&gt;
== Используемое ПО ==&lt;br /&gt;
&lt;br /&gt;
Необходимо установить интерпретатор Python версии не ниже 3.6 под свою ОС. Ссылка https://www.python.org/downloads/&lt;br /&gt;
&lt;br /&gt;
JetBrains PyCharm Community: https://www.jetbrains.com/pycharm/download/&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;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Контест !! ДЗ 1 !! ДЗ 2 !! ДЗ 3 !! ДЗ 4 !! ДЗ 5-6 !! ДЗ 7 !! ДЗ 8 !! ДЗ 9 !! ДЗ 10 !! ДЗ 11 !! ДЗ 12&lt;br /&gt;
|-&lt;br /&gt;
| 212-1 || 15.09.21 16:20 || 16.09.21 15:00 || - || - || - || - || - || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
| 214-2 || 16.09.21 9:29 || 18.09.21 9:29 || 23.09.21 9:29 || 25.09.21 9:29  || 06.10.21 9:29 || - || - || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
| 218-1 || 19.09.21 13:00 || 22.09.21 19:40 || 23.09.21 14:40 || 29.09.21 19:40 || 06.10.21 14:40 || 07.10.21 19:40 || - || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
| 2111-2 || 18.09.21 09:30 || 19.09.21 11:10 || 23.09.21 09:30 || 25.09.21 09:30 || 07.10.21 09:30 || - || - || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
| 216-2 || 15.09.21 18:10 || 15.09.21 19:40 || 22.09.21 18:10 || 22.09.21 19:40 || 06.10.21 18:10 || 06.10.21 18:10 || 06.10.21 19:40 || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
| 219-1 || 15.09.21 11:10 || 16.09.21 11:10 || 22.09.21 11:10 || 23.09.21 11:10 || 06.10.21 11:10 || 06.10.21 11:10 || 06.10.21 11:10 || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
| 2111-1 || 16.09.21 9:30 || 18.09.21 9:30 || 23.09.21 9:30 || 25.09.21 9:30 || 07.10.21 9:30 || 07.10.21 9:30 || - || - || - || - || -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Дедлайны по дорешиванию семинаров в группах ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! -  !! Семинар 2 (code style) !! Семинар 3 (тестирование) !! Семинар 4 (matplotlib)!! Семинар 5 (git)!! Семинар 6 (wiki) !!&lt;br /&gt;
|-&lt;br /&gt;
| 214-2 || 13.09.21 23:59 || 18.09.21 23:59 || 20.09.21 23:59 (для новеньких = 24.09.21 23:59) || 27.09.21 23:59 || 06.10.21 23:59 ||&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Objatie groba</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D1%8B_%D0%B8_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D1%8F_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F_%D0%BD%D0%B0_%D0%9F%D0%9C%D0%98_2021/2022_(%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D0%BE%D0%B9_%D0%BF%D0%BE%D1%82%D0%BE%D0%BA)&amp;diff=58851</id>
		<title>Основы и методология программирования на ПМИ 2021/2022 (основной поток)</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D1%8B_%D0%B8_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D1%8F_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F_%D0%BD%D0%B0_%D0%9F%D0%9C%D0%98_2021/2022_(%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D0%BE%D0%B9_%D0%BF%D0%BE%D1%82%D0%BE%D0%BA)&amp;diff=58851"/>
		<updated>2021-09-24T15:08:55Z</updated>

		<summary type="html">&lt;p&gt;Objatie groba: Ссылка на канал&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Основы и методология программирования, основной поток, 2021-2022 1 модуль ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Лектор:&#039;&#039;&#039;  [А. Г. Михеев]&lt;br /&gt;
&lt;br /&gt;
Программа курса и ноутбуки лекций (будут добавляться по мере поступления): https://github.com/justalge/another_python_totorial/blob/main/README.md&lt;br /&gt;
&lt;br /&gt;
Видеозаписи всех лекций и некоторых семинаров: https://www.youtube.com/playlist?list=PLEwK9wdS5g0pOn3KCblRmmBV24o17r3LD&lt;br /&gt;
&lt;br /&gt;
Материалы лекций основаны на https://www.python-course.eu (англ. яз.). Разделы [https://www.python-course.eu/python3_course.php Python Tutorial], [https://www.python-course.eu/object_oriented_programming_introduction.php OOP] и [https://www.python-course.eu/advanced_python.php Advanced].&lt;br /&gt;
&lt;br /&gt;
Канал с важными объявлениями: https://t.me/joinchat/LsEVKZunealjOTUy&lt;br /&gt;
&lt;br /&gt;
Материалы прошлого года (рус. яз.):&lt;br /&gt;
* Конспекты лекций: https://yadi.sk/i/BkcKilJkumcPV&lt;br /&gt;
* Видео-лекции: https://www.coursera.org/learn/python-osnovy-programmirovaniya/home/welcome (платить денег ни в коем случае не нужно)&lt;br /&gt;
&lt;br /&gt;
==ДЗ==&lt;br /&gt;
&lt;br /&gt;
После каждого семинара вам будет дано оцениваемое домашнее задание. На выполнение задания дается 8 дней от момента начала соответствующего семинара. Еще в течение 7 дней после этого доступна возможность досдать задачи, однако задачи оцениваются вполовину меньшим баллом. Перед семинаром необходимо изучить соответствующую тему по лекциям и текстовым конспектам.&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/29037/enter/ ДЗ 1 (Арифметика)]&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/29069/enter/ ДЗ 2 (if, while, for, float)]&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/29227/enter/ ДЗ 3 (strings, lists)]&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/29228/enter/ ДЗ 4 (dictionaries, sets)]&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/29478/enter/ ДЗ 5-6 (functions, recursion)]  &#039;&#039;&#039;На 2 недели. Чтобы набрать максимальное количество баллов за это ДЗ нужно решить на 20 баллов&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Программа advanced группы 2112-2==&lt;br /&gt;
&lt;br /&gt;
Краткое введение на примерах в:&lt;br /&gt;
&lt;br /&gt;
- использование внешних библиотек&lt;br /&gt;
&lt;br /&gt;
- dataclasses, type hints&lt;br /&gt;
&lt;br /&gt;
- сравнение oop и fp стилей&lt;br /&gt;
&lt;br /&gt;
- чистый читабельный код: нейминг, agile, ограничения на средства языка, линтеры&lt;br /&gt;
&lt;br /&gt;
- простой веб сервис: http, бд&lt;br /&gt;
&lt;br /&gt;
- threading, multiprocessing&lt;br /&gt;
&lt;br /&gt;
- async&lt;br /&gt;
&lt;br /&gt;
- git&lt;br /&gt;
&lt;br /&gt;
- bash&lt;br /&gt;
&lt;br /&gt;
- публикация библиотек&lt;br /&gt;
&lt;br /&gt;
- аналитика и визуализация&lt;br /&gt;
&lt;br /&gt;
- ML/pytorch&lt;br /&gt;
&lt;br /&gt;
- поиск информации и готовых модулей&lt;br /&gt;
&lt;br /&gt;
- мини-проект на любую из вышеперечисленных тем&lt;br /&gt;
&lt;br /&gt;
==Программа advanced группы 214-2==&lt;br /&gt;
&lt;br /&gt;
Семинар 1 - знакомство с python&lt;br /&gt;
&lt;br /&gt;
Семинар 2 - код стайл, pep8, правила хорошего тона camel case, snake case&lt;br /&gt;
&lt;br /&gt;
Семинар 3 - учимся писать тесты, tdd&lt;br /&gt;
&lt;br /&gt;
Семинар 4 - python в математике: графики, статистика&lt;br /&gt;
&lt;br /&gt;
Семинар 5 - системы контроля версий, open source&lt;br /&gt;
&lt;br /&gt;
Семинар 6 - парсинг данных: bs4, selenium&lt;br /&gt;
&lt;br /&gt;
Семинар 7 - учимся писать код на собеседованиях, и как их проходить&lt;br /&gt;
&lt;br /&gt;
Семинар 8 - фреймворки для тестирования, пишем свой mvp проект на семинаре&lt;br /&gt;
&lt;br /&gt;
Семинар 9 - pyqt&lt;br /&gt;
&lt;br /&gt;
Семинар 10 - веб разработка, requests, flask&lt;br /&gt;
&lt;br /&gt;
Семинар 11 - пишем телеграм-бота&lt;br /&gt;
&lt;br /&gt;
Семинар 12 - intro ml&lt;br /&gt;
&lt;br /&gt;
==Система защиты ДЗ==&lt;br /&gt;
&lt;br /&gt;
Раз в две недели проходит защита ДЗ (с прокторингом или очно). На защиту отводится одна лекционная пара.&lt;br /&gt;
На защите будет предложено для решения 8 задач, по 2 задачи средней сложности на каждую тему лекции.&lt;br /&gt;
Во время решения практических задач можно пользоваться конспектами и своими решениями задач ДЗ.&lt;br /&gt;
&lt;br /&gt;
Оценка за каждую лекционную тему определяется как &#039;&#039;&#039;koef*оценка за лекционную тему (до защиты)&#039;&#039;&#039;, где koef - коэффициент, который определяется тем, как была написана защита ДЗ.&lt;br /&gt;
Так, если на защите ДЗ решено 0 задач - коэффициент составляет 0.3, 1 задача - 0.6, 2 задачи - 1.&lt;br /&gt;
&lt;br /&gt;
Со студентами, результат работы которых на защите сильно отличается от оценки за ДЗ до защиты, будет проведена дополнительная устная защита с целью поиска путей исправления проблем в освоении материала.&lt;br /&gt;
&lt;br /&gt;
== Формула оценки и экзамен ==&lt;br /&gt;
&lt;br /&gt;
На оценку влияют: выполнение домашнего задания, работа на семинаре, защита домашнего задания и экзамен. Итоговая оценка за курс вычисляется как &#039;&#039;&#039;0.6*накопленная + 0.4*экзамен&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
Накопленная оценка считается как: среднее арифметическое оценок за каждую лекционную тему.&lt;br /&gt;
Оценка за каждую лекционную тему рассчитывается как: &#039;&#039;&#039;min(10, koef*(0.8*оценка за ДЗ по теме лекции (до защиты) + 0.2*оценка за семинар по теме лекции))&#039;&#039;&#039;.&lt;br /&gt;
Максимальная оценка за работу на семинаре - 10 баллов. Максимальная оценка за  ДЗ по теме лекции (до защиты) - 14 баллов. При этом суммарное количество баллов в одном ДЗ в контесте больше 14. Чтобы получить максимальную оценку за ДЗ можно решить не все задачи. Таким образом, максимальную оценку по теме лекции вы можете получить, решая только ДЗ.&lt;br /&gt;
&lt;br /&gt;
За найденные и сообщенные семинаристу проблемы в тестах вы можете получить от 2 до 5 дополнительных баллов к оценке за семинар.&lt;br /&gt;
&lt;br /&gt;
Промежуточные значения не округляются, итоговое значение округляется по математическим правилам: к ближайшему целому, при дробной части 0.5 - в большую сторону.&lt;br /&gt;
&lt;br /&gt;
== Используемое ПО ==&lt;br /&gt;
&lt;br /&gt;
Необходимо установить интерпретатор Python версии не ниже 3.6 под свою ОС. Ссылка https://www.python.org/downloads/&lt;br /&gt;
&lt;br /&gt;
JetBrains PyCharm Community: https://www.jetbrains.com/pycharm/download/&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;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Контест !! ДЗ 1 !! ДЗ 2 !! ДЗ 3 !! ДЗ 4 !! ДЗ 5-6 !! ДЗ 7 !! ДЗ 8 !! ДЗ 9 !! ДЗ 10 !! ДЗ 11 !! ДЗ 12&lt;br /&gt;
|-&lt;br /&gt;
| 212-1 || 15.09.21 16:20 || 16.09.21 15:00 || - || - || - || - || - || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
| 214-2 || 16.09.21 9:29 || 18.09.21 9:29 || 23.09.21 9:29 || 25.09.21 9:29  || 06.10.21 9:29 || - || - || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
| 218-1 || 19.09.21 13:00 || 22.09.21 19:40 || 23.09.21 14:40 || 29.09.21 19:40 || 30.09.21 14:40 || - || - || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
| 2111-2 || 18.09.21 09:30 || 19.09.21 11:10 || 23.09.21 09:30 || 25.09.21 09:30 || 07.10.21 09:30 || - || - || - || - || - || -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Дедлайны по дорешиванию семинаров в группах ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! -  !! Семинар 2 (code style) !! Семинар 3 (тестирование) !! Семинар 4 (matplotlib)!! Семинар 5 (git)!!&lt;br /&gt;
|-&lt;br /&gt;
| 214-2 || 13.09.21 23:59 || 18.09.21 23:59 || 20.09.21 23:59 (для новеньких = 24.09.21 23:59) || 26.09.21 23:59 ||&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Objatie groba</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D1%8B_%D0%B8_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D1%8F_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F_%D0%BD%D0%B0_%D0%9F%D0%9C%D0%98_2021/2022_(%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D0%BE%D0%B9_%D0%BF%D0%BE%D1%82%D0%BE%D0%BA)&amp;diff=58671</id>
		<title>Основы и методология программирования на ПМИ 2021/2022 (основной поток)</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D1%8B_%D0%B8_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D1%8F_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F_%D0%BD%D0%B0_%D0%9F%D0%9C%D0%98_2021/2022_(%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D0%BE%D0%B9_%D0%BF%D0%BE%D1%82%D0%BE%D0%BA)&amp;diff=58671"/>
		<updated>2021-09-21T12:46:13Z</updated>

		<summary type="html">&lt;p&gt;Objatie groba: /* Дедлайны по ДЗ в группах */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Основы и методология программирования, основной поток, 2021-2022 1 модуль ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Лектор:&#039;&#039;&#039;  [А. Г. Михеев]&lt;br /&gt;
&lt;br /&gt;
Программа курса и ноутбуки лекций (будут добавляться по мере поступления): https://github.com/justalge/another_python_totorial/blob/main/README.md&lt;br /&gt;
&lt;br /&gt;
Видеозаписи всех лекций и некоторых семинаров: https://www.youtube.com/playlist?list=PLEwK9wdS5g0pOn3KCblRmmBV24o17r3LD&lt;br /&gt;
&lt;br /&gt;
Материалы лекций основаны на https://www.python-course.eu (англ. яз.). Разделы [https://www.python-course.eu/python3_course.php Python Tutorial], [https://www.python-course.eu/object_oriented_programming_introduction.php OOP] и [https://www.python-course.eu/advanced_python.php Advanced].&lt;br /&gt;
&lt;br /&gt;
Материалы прошлого года (рус. яз.):&lt;br /&gt;
* Конспекты лекций: https://yadi.sk/i/BkcKilJkumcPV&lt;br /&gt;
* Видео-лекции: https://www.coursera.org/learn/python-osnovy-programmirovaniya/home/welcome (платить денег ни в коем случае не нужно)&lt;br /&gt;
&lt;br /&gt;
==ДЗ==&lt;br /&gt;
&lt;br /&gt;
После каждого семинара вам будет дано оцениваемое домашнее задание. На выполнение задания дается 8 дней от момента начала соответствующего семинара. Еще в течение 7 дней после этого доступна возможность досдать задачи, однако задачи оцениваются вполовину меньшим баллом. Перед семинаром необходимо изучить соответствующую тему по лекциям и текстовым конспектам.&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/29037/enter/ ДЗ 1 (Арифметика)]&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/29069/enter/ ДЗ 2 (if, while, for, float)]&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/29227/enter/ ДЗ 3 (strings, lists)]&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/29228/enter/ ДЗ 4 (dictionaries, sets)]&lt;br /&gt;
&lt;br /&gt;
[https://contest.yandex.ru/contest/29478/enter/ ДЗ 5-6 (functions, recursion)]  &#039;&#039;&#039;На 2 недели. Чтобы набрать максимальное количество баллов за это ДЗ нужно решить на 20 баллов&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Программа advanced группы 2112-2==&lt;br /&gt;
&lt;br /&gt;
Краткое введение на примерах в:&lt;br /&gt;
&lt;br /&gt;
- использование внешних библиотек&lt;br /&gt;
&lt;br /&gt;
- dataclasses, type hints&lt;br /&gt;
&lt;br /&gt;
- сравнение oop и fp стилей&lt;br /&gt;
&lt;br /&gt;
- чистый читабельный код: нейминг, agile, ограничения на средства языка, линтеры&lt;br /&gt;
&lt;br /&gt;
- простой веб сервис: http, бд&lt;br /&gt;
&lt;br /&gt;
- threading, multiprocessing&lt;br /&gt;
&lt;br /&gt;
- async&lt;br /&gt;
&lt;br /&gt;
- git&lt;br /&gt;
&lt;br /&gt;
- bash&lt;br /&gt;
&lt;br /&gt;
- публикация библиотек&lt;br /&gt;
&lt;br /&gt;
- аналитика и визуализация&lt;br /&gt;
&lt;br /&gt;
- ML/pytorch&lt;br /&gt;
&lt;br /&gt;
- поиск информации и готовых модулей&lt;br /&gt;
&lt;br /&gt;
- мини-проект на любую из вышеперечисленных тем&lt;br /&gt;
&lt;br /&gt;
==Программа advanced группы 214-2==&lt;br /&gt;
&lt;br /&gt;
Семинар 1 - знакомство с python&lt;br /&gt;
&lt;br /&gt;
Семинар 2 - код стайл, pep8, правила хорошего тона camel case, snake case&lt;br /&gt;
&lt;br /&gt;
Семинар 3 - учимся писать тесты, tdd&lt;br /&gt;
&lt;br /&gt;
Семинар 4 - python в математике: графики, статистика&lt;br /&gt;
&lt;br /&gt;
Семинар 5 - системы контроля версий, open source&lt;br /&gt;
&lt;br /&gt;
Семинар 6 - парсинг данных: bs4, selenium&lt;br /&gt;
&lt;br /&gt;
Семинар 7 - учимся писать код на собеседованиях, и как их проходить&lt;br /&gt;
&lt;br /&gt;
Семинар 8 - фреймворки для тестирования, пишем свой mvp проект на семинаре&lt;br /&gt;
&lt;br /&gt;
Семинар 9 - pyqt&lt;br /&gt;
&lt;br /&gt;
Семинар 10 - веб разработка, requests, flask&lt;br /&gt;
&lt;br /&gt;
Семинар 11 - пишем телеграм-бота&lt;br /&gt;
&lt;br /&gt;
Семинар 12 - intro ml&lt;br /&gt;
&lt;br /&gt;
==Система защиты ДЗ==&lt;br /&gt;
&lt;br /&gt;
Раз в две недели проходит защита ДЗ (с прокторингом или очно). На защиту отводится одна лекционная пара.&lt;br /&gt;
На защите будет предложено для решения 8 задач, по 2 задачи средней сложности на каждую тему лекции.&lt;br /&gt;
Во время решения практических задач можно пользоваться конспектами и своими решениями задач ДЗ.&lt;br /&gt;
&lt;br /&gt;
Оценка за каждую лекционную тему определяется как &#039;&#039;&#039;koef*оценка за лекционную тему (до защиты)&#039;&#039;&#039;, где koef - коэффициент, который определяется тем, как была написана защита ДЗ.&lt;br /&gt;
Так, если на защите ДЗ решено 0 задач - коэффициент составляет 0.3, 1 задача - 0.6, 2 задачи - 1.&lt;br /&gt;
&lt;br /&gt;
Со студентами, результат работы которых на защите сильно отличается от оценки за ДЗ до защиты, будет проведена дополнительная устная защита с целью поиска путей исправления проблем в освоении материала.&lt;br /&gt;
&lt;br /&gt;
== Формула оценки и экзамен ==&lt;br /&gt;
&lt;br /&gt;
На оценку влияют: выполнение домашнего задания, работа на семинаре, защита домашнего задания и экзамен. Итоговая оценка за курс вычисляется как &#039;&#039;&#039;0.6*накопленная + 0.4*экзамен&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
Накопленная оценка считается как: среднее арифметическое оценок за каждую лекционную тему.&lt;br /&gt;
Оценка за каждую лекционную тему рассчитывается как: &#039;&#039;&#039;min(10, koef*(0.8*оценка за ДЗ по теме лекции (до защиты) + 0.2*оценка за семинар по теме лекции))&#039;&#039;&#039;.&lt;br /&gt;
Максимальная оценка за работу на семинаре - 10 баллов. Максимальная оценка за  ДЗ по теме лекции (до защиты) - 14 баллов. При этом суммарное количество баллов в одном ДЗ в контесте больше 14. Чтобы получить максимальную оценку за ДЗ можно решить не все задачи. Таким образом, максимальную оценку по теме лекции вы можете получить, решая только ДЗ.&lt;br /&gt;
&lt;br /&gt;
За найденные и сообщенные семинаристу проблемы в тестах вы можете получить от 2 до 5 дополнительных баллов к оценке за семинар.&lt;br /&gt;
&lt;br /&gt;
Промежуточные значения не округляются, итоговое значение округляется по математическим правилам: к ближайшему целому, при дробной части 0.5 - в большую сторону.&lt;br /&gt;
&lt;br /&gt;
== Используемое ПО ==&lt;br /&gt;
&lt;br /&gt;
Необходимо установить интерпретатор Python версии не ниже 3.6 под свою ОС. Ссылка https://www.python.org/downloads/&lt;br /&gt;
&lt;br /&gt;
JetBrains PyCharm Community: https://www.jetbrains.com/pycharm/download/&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;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Контест !! ДЗ 1 !! ДЗ 2 !! ДЗ 3 !! ДЗ 4 !! ДЗ 5-6 !! ДЗ 7 !! ДЗ 8 !! ДЗ 9 !! ДЗ 10 !! ДЗ 11 !! ДЗ 12&lt;br /&gt;
|-&lt;br /&gt;
| 212-1 || 15.09.21 16:20 || 16.09.21 15:00 || - || - || - || - || - || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
| 214-2 || 16.09.21 9:29 || 18.09.21 9:29 || 23.09.21 9:29 || 25.09.21 9:29  || - || - || - || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
| 218-1 || 19.09.21 13:00 || 22.09.21 19:40 || 23.09.21 14:40 || 29.09.21 19:40 || 30.09.21 14:40 || - || - || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
| 2111-2 || 18.09.21 09:30 || 19.09.21 11:10 || 23.09.21 09:30 || 25.09.21 09:30 || - || - || - || - || - || - || -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Дедлайны по дорешиванию семинаров в группах ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! -  !! Семинар 2 (code style) !! Семинар 3 (тестирование) !! Семинар 4 (matplotlib)!!&lt;br /&gt;
|-&lt;br /&gt;
| 214-2 || 13.09.21 23:59 || 18.09.21 23:59 || 20.09.21 23:59 ||&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Objatie groba</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D1%8B_%D0%B8_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D1%8F_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F_%D0%BD%D0%B0_%D0%9F%D0%9C%D0%98_2021/2022_(%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D0%BE%D0%B9_%D0%BF%D0%BE%D1%82%D0%BE%D0%BA)&amp;diff=58670</id>
		<title>Основы и методология программирования на ПМИ 2021/2022 (основной поток)</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D1%8B_%D0%B8_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D1%8F_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F_%D0%BD%D0%B0_%D0%9F%D0%9C%D0%98_2021/2022_(%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D0%BE%D0%B9_%D0%BF%D0%BE%D1%82%D0%BE%D0%BA)&amp;diff=58670"/>
		<updated>2021-09-21T12:45:19Z</updated>

		<summary type="html">&lt;p&gt;Objatie groba: /* Дедлайны по ДЗ в группах */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Основы и методология программирования, основной поток, 2021-2022 1 модуль ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Лектор:&#039;&#039;&#039;  [А. Г. Михеев]&lt;br /&gt;
&lt;br /&gt;
Программа курса и ноутбуки лекций (будут добавляться по мере поступления): https://github.com/justalge/another_python_totorial/blob/main/README.md&lt;br /&gt;
&lt;br /&gt;
Видеозаписи всех лекций и некоторых семинаров: https://www.youtube.com/playlist?list=PLEwK9wdS5g0pOn3KCblRmmBV24o17r3LD&lt;br /&gt;
&lt;br /&gt;
Материалы лекций основаны на https://www.python-course.eu (англ. яз.). Разделы [https://www.python-course.eu/python3_course.php Python Tutorial], [https://www.python-course.eu/object_oriented_programming_introduction.php OOP] и [https://www.python-course.eu/advanced_python.php Advanced].&lt;br /&gt;
&lt;br /&gt;
Материалы прошлого года (рус. яз.):&lt;br /&gt;
* Конспекты лекций: https://yadi.sk/i/BkcKilJkumcPV&lt;br /&gt;
* Видео-лекции: https://www.coursera.org/learn/python-osnovy-programmirovaniya/home/welcome (платить денег ни в коем случае не нужно)&lt;br /&gt;
&lt;br /&gt;
==ДЗ==&lt;br /&gt;
&lt;br /&gt;
После каждого семинара вам будет дано оцениваемое домашнее задание. На выполнение задания дается 8 дней от момента начала соответствующего семинара. Еще в течение 7 дней после этого доступна возможность досдать задачи, однако задачи оцениваются вполовину меньшим баллом. Перед семинаром необходимо изучить соответствующую тему по лекциям и текстовым конспектам.&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/29037/enter/ ДЗ 1 (Арифметика)]&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/29069/enter/ ДЗ 2 (if, while, for, float)]&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/29227/enter/ ДЗ 3 (strings, lists)]&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/29228/enter/ ДЗ 4 (dictionaries, sets)]&lt;br /&gt;
&lt;br /&gt;
[https://contest.yandex.ru/contest/29478/enter/ ДЗ 5-6 (functions, recursion)]  &#039;&#039;&#039;На 2 недели. Чтобы набрать максимальное количество баллов за это ДЗ нужно решить на 20 баллов&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Программа advanced группы 2112-2==&lt;br /&gt;
&lt;br /&gt;
Краткое введение на примерах в:&lt;br /&gt;
&lt;br /&gt;
- использование внешних библиотек&lt;br /&gt;
&lt;br /&gt;
- dataclasses, type hints&lt;br /&gt;
&lt;br /&gt;
- сравнение oop и fp стилей&lt;br /&gt;
&lt;br /&gt;
- чистый читабельный код: нейминг, agile, ограничения на средства языка, линтеры&lt;br /&gt;
&lt;br /&gt;
- простой веб сервис: http, бд&lt;br /&gt;
&lt;br /&gt;
- threading, multiprocessing&lt;br /&gt;
&lt;br /&gt;
- async&lt;br /&gt;
&lt;br /&gt;
- git&lt;br /&gt;
&lt;br /&gt;
- bash&lt;br /&gt;
&lt;br /&gt;
- публикация библиотек&lt;br /&gt;
&lt;br /&gt;
- аналитика и визуализация&lt;br /&gt;
&lt;br /&gt;
- ML/pytorch&lt;br /&gt;
&lt;br /&gt;
- поиск информации и готовых модулей&lt;br /&gt;
&lt;br /&gt;
- мини-проект на любую из вышеперечисленных тем&lt;br /&gt;
&lt;br /&gt;
==Программа advanced группы 214-2==&lt;br /&gt;
&lt;br /&gt;
Семинар 1 - знакомство с python&lt;br /&gt;
&lt;br /&gt;
Семинар 2 - код стайл, pep8, правила хорошего тона camel case, snake case&lt;br /&gt;
&lt;br /&gt;
Семинар 3 - учимся писать тесты, tdd&lt;br /&gt;
&lt;br /&gt;
Семинар 4 - python в математике: графики, статистика&lt;br /&gt;
&lt;br /&gt;
Семинар 5 - системы контроля версий, open source&lt;br /&gt;
&lt;br /&gt;
Семинар 6 - парсинг данных: bs4, selenium&lt;br /&gt;
&lt;br /&gt;
Семинар 7 - учимся писать код на собеседованиях, и как их проходить&lt;br /&gt;
&lt;br /&gt;
Семинар 8 - фреймворки для тестирования, пишем свой mvp проект на семинаре&lt;br /&gt;
&lt;br /&gt;
Семинар 9 - pyqt&lt;br /&gt;
&lt;br /&gt;
Семинар 10 - веб разработка, requests, flask&lt;br /&gt;
&lt;br /&gt;
Семинар 11 - пишем телеграм-бота&lt;br /&gt;
&lt;br /&gt;
Семинар 12 - intro ml&lt;br /&gt;
&lt;br /&gt;
==Система защиты ДЗ==&lt;br /&gt;
&lt;br /&gt;
Раз в две недели проходит защита ДЗ (с прокторингом или очно). На защиту отводится одна лекционная пара.&lt;br /&gt;
На защите будет предложено для решения 8 задач, по 2 задачи средней сложности на каждую тему лекции.&lt;br /&gt;
Во время решения практических задач можно пользоваться конспектами и своими решениями задач ДЗ.&lt;br /&gt;
&lt;br /&gt;
Оценка за каждую лекционную тему определяется как &#039;&#039;&#039;koef*оценка за лекционную тему (до защиты)&#039;&#039;&#039;, где koef - коэффициент, который определяется тем, как была написана защита ДЗ.&lt;br /&gt;
Так, если на защите ДЗ решено 0 задач - коэффициент составляет 0.3, 1 задача - 0.6, 2 задачи - 1.&lt;br /&gt;
&lt;br /&gt;
Со студентами, результат работы которых на защите сильно отличается от оценки за ДЗ до защиты, будет проведена дополнительная устная защита с целью поиска путей исправления проблем в освоении материала.&lt;br /&gt;
&lt;br /&gt;
== Формула оценки и экзамен ==&lt;br /&gt;
&lt;br /&gt;
На оценку влияют: выполнение домашнего задания, работа на семинаре, защита домашнего задания и экзамен. Итоговая оценка за курс вычисляется как &#039;&#039;&#039;0.6*накопленная + 0.4*экзамен&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
Накопленная оценка считается как: среднее арифметическое оценок за каждую лекционную тему.&lt;br /&gt;
Оценка за каждую лекционную тему рассчитывается как: &#039;&#039;&#039;min(10, koef*(0.8*оценка за ДЗ по теме лекции (до защиты) + 0.2*оценка за семинар по теме лекции))&#039;&#039;&#039;.&lt;br /&gt;
Максимальная оценка за работу на семинаре - 10 баллов. Максимальная оценка за  ДЗ по теме лекции (до защиты) - 14 баллов. При этом суммарное количество баллов в одном ДЗ в контесте больше 14. Чтобы получить максимальную оценку за ДЗ можно решить не все задачи. Таким образом, максимальную оценку по теме лекции вы можете получить, решая только ДЗ.&lt;br /&gt;
&lt;br /&gt;
За найденные и сообщенные семинаристу проблемы в тестах вы можете получить от 2 до 5 дополнительных баллов к оценке за семинар.&lt;br /&gt;
&lt;br /&gt;
Промежуточные значения не округляются, итоговое значение округляется по математическим правилам: к ближайшему целому, при дробной части 0.5 - в большую сторону.&lt;br /&gt;
&lt;br /&gt;
== Используемое ПО ==&lt;br /&gt;
&lt;br /&gt;
Необходимо установить интерпретатор Python версии не ниже 3.6 под свою ОС. Ссылка https://www.python.org/downloads/&lt;br /&gt;
&lt;br /&gt;
JetBrains PyCharm Community: https://www.jetbrains.com/pycharm/download/&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;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Контест !! ДЗ 1 !! ДЗ 2 !! ДЗ 3 !! ДЗ 4 !! ДЗ 5 !! ДЗ 6 !! ДЗ 7 !! ДЗ 8 !! ДЗ 9 !! ДЗ 10 !! ДЗ 11 !! ДЗ 12&lt;br /&gt;
|-&lt;br /&gt;
| 212-1 || 15.09.21 16:20 || 16.09.21 15:00 || - || - || - || - || - || - || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
| 214-2 || 16.09.21 9:29 || 18.09.21 9:29 || 23.09.21 9:29 || 25.09.21 9:29  || - || - || - || - || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
| 218-1 || 19.09.21 13:00 || 22.09.21 19:40 || 23.09.21 14:40 || 29.09.21 19:40 || - || - || - || - || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
| 2111-2 || 18.09.21 09:30 || 19.09.21 11:10 || 23.09.21 09:30 || 25.09.21 09:30 || - || - || - || - || - || - || - || -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Дедлайны по дорешиванию семинаров в группах ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! -  !! Семинар 2 (code style) !! Семинар 3 (тестирование) !! Семинар 4 (matplotlib)!!&lt;br /&gt;
|-&lt;br /&gt;
| 214-2 || 13.09.21 23:59 || 18.09.21 23:59 || 20.09.21 23:59 ||&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Objatie groba</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D1%8B_%D0%B8_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D1%8F_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F_%D0%BD%D0%B0_%D0%9F%D0%9C%D0%98_2021/2022_(%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D0%BE%D0%B9_%D0%BF%D0%BE%D1%82%D0%BE%D0%BA)&amp;diff=58161</id>
		<title>Основы и методология программирования на ПМИ 2021/2022 (основной поток)</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D1%8B_%D0%B8_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D1%8F_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F_%D0%BD%D0%B0_%D0%9F%D0%9C%D0%98_2021/2022_(%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D0%BE%D0%B9_%D0%BF%D0%BE%D1%82%D0%BE%D0%BA)&amp;diff=58161"/>
		<updated>2021-09-14T13:15:58Z</updated>

		<summary type="html">&lt;p&gt;Objatie groba: /* Дедлайны по ДЗ в группах 218-1. Сортировка списка */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Основы и методология программирования, основной поток, 2021-2022 1 модуль ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Лектор:&#039;&#039;&#039;  [А. Г. Михеев]&lt;br /&gt;
&lt;br /&gt;
Программа курса и ноутбуки лекций (будут добавляться по мере поступления): https://github.com/justalge/another_python_totorial/blob/main/README.md&lt;br /&gt;
&lt;br /&gt;
Видеозаписи всех лекций и некоторых семинаров: https://www.youtube.com/playlist?list=PLEwK9wdS5g0pOn3KCblRmmBV24o17r3LD&lt;br /&gt;
&lt;br /&gt;
Материалы лекций основаны на https://www.python-course.eu (англ. яз.). Разделы [https://www.python-course.eu/python3_course.php Python Tutorial], [https://www.python-course.eu/object_oriented_programming_introduction.php OOP] и [https://www.python-course.eu/advanced_python.php Advanced].&lt;br /&gt;
&lt;br /&gt;
Материалы прошлого года (рус. яз.):&lt;br /&gt;
* Конспекты лекций: https://yadi.sk/i/BkcKilJkumcPV&lt;br /&gt;
* Видео-лекции: https://www.coursera.org/learn/python-osnovy-programmirovaniya/home/welcome (платить денег ни в коем случае не нужно)&lt;br /&gt;
&lt;br /&gt;
==ДЗ==&lt;br /&gt;
&lt;br /&gt;
После каждого семинара вам будет дано оцениваемое домашнее задание. На выполнение задания дается 8 дней от момента начала соответствующего семинара. Еще в течение 7 дней после этого доступна возможность досдать задачи, однако задачи оцениваются вполовину меньшим баллом. Перед семинаром необходимо изучить соответствующую тему по лекциям и текстовым конспектам.&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/29037/enter/ ДЗ 1 (Арифметика)]&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/29069/enter/ ДЗ 2 (if, while, for, float)]&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/29227/enter/ ДЗ 3 (strings, lists)]&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/29228/enter/ ДЗ 4 (dictionaries, sets)]&lt;br /&gt;
&lt;br /&gt;
==Система защиты ДЗ==&lt;br /&gt;
&lt;br /&gt;
Раз в две недели проходит защита ДЗ (с прокторингом или очно). На защиту отводится одна лекционная пара.&lt;br /&gt;
На защите будет предложено для решения 8 задач, по 2 задачи средней сложности на каждую тему лекции.&lt;br /&gt;
Во время решения практических задач можно пользоваться конспектами и своими решениями задач ДЗ.&lt;br /&gt;
&lt;br /&gt;
Оценка за каждую лекционную тему определяется как &#039;&#039;&#039;koef*оценка за лекционную тему (до защиты)&#039;&#039;&#039;, где koef - коэффициент, который определяется тем, как была написана защита ДЗ.&lt;br /&gt;
Так, если на защите ДЗ решено 0 задач - коэффициент составляет 0.3, 1 задача - 0.6, 2 задачи - 1.&lt;br /&gt;
&lt;br /&gt;
Со студентами, результат работы которых на защите сильно отличается от оценки за ДЗ до защиты, будет проведена дополнительная устная защита с целью поиска путей исправления проблем в освоении материала.&lt;br /&gt;
&lt;br /&gt;
== Формула оценки и экзамен ==&lt;br /&gt;
&lt;br /&gt;
На оценку влияют: выполнение домашнего задания, работа на семинаре, защита домашнего задания и экзамен. Итоговая оценка за курс вычисляется как &#039;&#039;&#039;0.6*накопленная + 0.4*экзамен&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
Накопленная оценка считается как: среднее арифметическое оценок за каждую лекционную тему.&lt;br /&gt;
Оценка за каждую лекционную тему рассчитывается как: &#039;&#039;&#039;min(10, koef*(0.8*оценка за ДЗ по теме лекции (до защиты) + 0.2*оценка за семинар по теме лекции))&#039;&#039;&#039;.&lt;br /&gt;
Максимальная оценка за работу на семинаре - 10 баллов. Максимальная оценка за  ДЗ по теме лекции (до защиты) - 14 баллов. При этом суммарное количество баллов в одном ДЗ в контесте больше 14. Чтобы получить максимальную оценку за ДЗ можно решить не все задачи. Таким образом, максимальную оценку по теме лекции вы можете получить, решая только ДЗ.&lt;br /&gt;
&lt;br /&gt;
За найденные и сообщенные семинаристу проблемы в тестах вы можете получить от 2 до 5 дополнительных баллов к оценке за семинар.&lt;br /&gt;
&lt;br /&gt;
Промежуточные значения не округляются, итоговое значение округляется по математическим правилам: к ближайшему целому, при дробной части 0.5 - в большую сторону.&lt;br /&gt;
&lt;br /&gt;
== Используемое ПО ==&lt;br /&gt;
&lt;br /&gt;
Необходимо установить интерпретатор Python версии не ниже 3.6 под свою ОС. Ссылка https://www.python.org/downloads/&lt;br /&gt;
&lt;br /&gt;
JetBrains PyCharm Community: https://www.jetbrains.com/pycharm/download/&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;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Контест !! ДЗ 1 !! ДЗ 2 !! ДЗ 3 !! ДЗ 4 !! ДЗ 5 !! ДЗ 6 !! ДЗ 7 !! ДЗ 8 !! ДЗ 9 !! ДЗ 10 !! ДЗ 11 !! ДЗ 12&lt;br /&gt;
|-&lt;br /&gt;
| 212-1 || 15.09.21 16:20 || 16.09.21 15:00 || - || - || - || - || - || - || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
| 214-2 || 16.09.21 9:29 || 18.09.21 9:29 || - || - || - || - || - || - || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
| 218-1 || 19.09.21 13:00 || 22.09.21 19:40 || 23.09.21 14:40 || - || - || - || - || - || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
| 2111-2 || 18.09.21 09:30 || 19.09.21 11:10 || - || - || - || - || - || - || - || - || - || -&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Objatie groba</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D1%8B_%D0%B8_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D1%8F_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F_%D0%BD%D0%B0_%D0%9F%D0%9C%D0%98_2020/2021_(%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D0%BE%D0%B9_%D0%BF%D0%BE%D1%82%D0%BE%D0%BA)&amp;diff=45747</id>
		<title>Основы и методология программирования на ПМИ 2020/2021 (основной поток)</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D1%8B_%D0%B8_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D1%8F_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F_%D0%BD%D0%B0_%D0%9F%D0%9C%D0%98_2020/2021_(%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D0%BE%D0%B9_%D0%BF%D0%BE%D1%82%D0%BE%D0%BA)&amp;diff=45747"/>
		<updated>2020-10-06T14:35:07Z</updated>

		<summary type="html">&lt;p&gt;Objatie groba: /* Дедлайны */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Основы и методология программирования, основной поток, 2020-2021, 1 модуль ==&lt;br /&gt;
&lt;br /&gt;
Информация про занятия по [[Data_scraping_ПМИ_2020 | Data scraping]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Лектор:&#039;&#039;&#039;  [https://www.hse.ru/org/persons/133408680 М. С. Густокашин]&lt;br /&gt;
&lt;br /&gt;
Конспекты лекций: https://yadi.sk/i/BkcKilJkumcPV&lt;br /&gt;
&lt;br /&gt;
Видео-лекции можно смотреть тут: https://www.coursera.org/learn/python-osnovy-programmirovaniya/home/welcome (платить денег ни в коем случае не нужно)&lt;br /&gt;
&lt;br /&gt;
Результаты: будут опубликованы позже&lt;br /&gt;
&lt;br /&gt;
Обратите внимание, что текущие оценки являются предварительными (осуществлены еще не все проверки на соблюдение правил, особенно на контрольной).&lt;br /&gt;
&lt;br /&gt;
== Итоговые оценки и экзамен ==&lt;br /&gt;
&lt;br /&gt;
Накопленная оценка не превышает 10.&lt;br /&gt;
&lt;br /&gt;
Итоговая оценка за курс вычисляется как 0.6*накопленная + 0.4*экзамен.&lt;br /&gt;
&lt;br /&gt;
Демонстрационный вариант экзамена: https://official.contest.yandex.ru/contest/9592&lt;br /&gt;
&lt;br /&gt;
== Используемое ПО ==&lt;br /&gt;
Необходимо установить интерпретатор Python версии не ниже 3.6 под свою ОС. Ссылка https://www.python.org/downloads/&lt;br /&gt;
&lt;br /&gt;
JetBrains PyCharm Community: https://www.jetbrains.com/pycharm/download/&lt;br /&gt;
&lt;br /&gt;
На занятия можно приносить свой ноутбук.&lt;br /&gt;
&lt;br /&gt;
==Домашние задания==&lt;br /&gt;
&lt;br /&gt;
Максимальная оценка за ДЗ - 12 баллов (если накопите больше 10 - получите 10, это просто бонус на случай неудач на защитах и т.п.), баллы распределены по задачам равномерно. Заходить нужно под тем же логином, под которым вы заходили в тестирование. На выполнение задания дается 8 дней от момента начала соответствующего семинара. Еще в течение 7 дней после этого доступна возможность досдать задачи, однако задачи оцениваются вполовину меньшим баллом. Перед семинаром необходимо изучить соответствующую тему по видеолекциям и текстовым конспектам.&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/19577/enter/ ДЗ 1 (Арифметика)]&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/19578/enter/ ДЗ 2 (Условный оператор)]&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/19683/enter/ ДЗ 3 (Цикл while)]&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/19684/enter/ ДЗ 4 (Вещественные числа и строки)]&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/19817/enter/ ДЗ 5 (Функция и рекурсия)]&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/19818/enter/ ДЗ 6 (Цикл for)]&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/19934/enter/ ДЗ 7 (Списки)]&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/19935/enter/ ДЗ 8 (Сортировка и линейный поиск)]&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/20258/enter/ ДЗ 9 (Множества)]&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/20259/enter/ ДЗ 10 (Словари)]&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/20675/enter/ ДЗ 11 (Функциональное программирование)]&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/20676/enter/ ДЗ 12 (ООП)]&lt;br /&gt;
&lt;br /&gt;
==Дедлайны==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Контест !! ДЗ 1 !! ДЗ 2 !! ДЗ 3 !! ДЗ 4 !! ДЗ 5 !! ДЗ 6 !! ДЗ 7 !! ДЗ 8 !! ДЗ 9 !! ДЗ 10 !! ДЗ 11 !! ДЗ 12&lt;br /&gt;
|-&lt;br /&gt;
| 202-1 || 12.09.20 9:29 || 17.09.20 9:29 || 19.09.20 9:29 || 24.09.20 9:29 || 26.09.20 9:29 || 01.10.20 18:09 || 03.10.20 9:29 || 08.10.20 18:09 || 10.10.20 9:29 || 15.10.20 18:09 || 17.10.20 9:29 || 22.10.20 18:09&lt;br /&gt;
|-&lt;br /&gt;
| 204-1 &lt;br /&gt;
|-&lt;br /&gt;
| 204-2 || 12.09.20 9:29 || 16.09.20 9:29 || 19.09.20 9:29 || 23.09.20 9:29 || 26.09.20 9:29 || 30.09.20 9:29 || 03.10.20 9:29 || 07.10.20 9:29 || 10.10.20 9:29 || 14.10.20 9:29&lt;br /&gt;
|-&lt;br /&gt;
| 206-1 || 13.09.20 09:30 || 13.09.20 11:10 || 20.09.20 09:30 || 20.09.20 11:10 || 27.09.20 09:30 || 27.09.20 11:10 || 04.10.20 09:30 || 04.10.20 11:10 || 11.10.20 09:30 || 11.10.20 11:30 || 16.10.20 00:00 || 16.10.20 00:00&lt;br /&gt;
|-&lt;br /&gt;
| 206-2 &lt;br /&gt;
|-&lt;br /&gt;
| 207-1 || 12.09.20 9:29 ||  17.09.20 9:29 || 19.09.20 9:29 || 24.09.20 9:29 || 26.09.20 9:29 || 01.10.20 9:59 || 05.10.20 9:29 || 08.10.20 09:59 || 11.10.20 11:29 ||&lt;br /&gt;
|-&lt;br /&gt;
| 207-2 || 12.09.20 9:29 || 17.09.20 9:29 || 19.09.20 9:29 || 24.09.20 9:29 || 26.09.20 9:29 || 29.09.20 18:09 || 03.10.20 9:29 || 06.10.20 18:09 || 10.10.20 9:29 || 13.10.20 18:09 || 16.10.20 00:00 || 16.10.20 00:00&lt;br /&gt;
|-&lt;br /&gt;
| 208-1 || 11.09.20 14:39 || 11.09.20 14:39 || 19.09.20 14:39 || 19.09.20 14:39 || 25.09.20 14:39 || 25.09.20 14:39 || 30.09.20 9:29 || 30.09.20 9:29 || 07.10.20 9:29 || 07.10.20 9:29 || 14.10.20 9:29 || 14.10.20 9:29&lt;br /&gt;
|-&lt;br /&gt;
| 208-2 &lt;br /&gt;
|-&lt;br /&gt;
| 209-1 || 15.09.20 12:59 || 15.09.20 12:59 || 23.09.20 12:59 || 23.09.20 12:59 || 25.09.20 14:39 || 25.09.20 14:39 || 02.10.20 14:39 || 02.10.20 14:39 || 10.10.20 14:39 || 10.10.20 14:39 || 16.10.20 23:59 || 16.10.20 13:59&lt;br /&gt;
|-&lt;br /&gt;
| 209-2 &lt;br /&gt;
|-&lt;br /&gt;
| 210-1 &lt;br /&gt;
|-&lt;br /&gt;
| 210-2 &lt;br /&gt;
|-&lt;br /&gt;
| 211-1 &lt;br /&gt;
|-&lt;br /&gt;
| 21-2 &lt;br /&gt;
|-&lt;br /&gt;
| 212-1 &lt;br /&gt;
|-&lt;br /&gt;
| 212-2 &lt;br /&gt;
|-&lt;br /&gt;
| 2011-2 || 11.09.20 11:09 || 16.09.20 11:09 || 23.09.20 11:09 || 23.09.20 11:09 || 25.09.20 11:09 || 30.09.20 11:09 || 02.10.20 11:09 || 07.10.20 11:09 || 09.10.20 11:09 || 14.10.20 11:09&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Система защиты ДЗ==&lt;br /&gt;
&lt;br /&gt;
Раз в две недели проходит защита ДЗ (с прокторингом или очно). По теме каждого ДЗ будет предложено 2 задачи средней сложности, всего 8 задач, на защиту отводится одна пара. Во время решения практических задач можно пользоваться конспектами и своими решениями задач ДЗ.&lt;br /&gt;
&lt;br /&gt;
Оценка за каждое ДЗ определяется как min(Оценка за ДЗ; Оценка за защиту).&lt;br /&gt;
&lt;br /&gt;
Оценка за защиту по каждой теме вычисляется следующим образом: 0 задач - 3, 1 задача - 7, 2 задачи - 12.&lt;br /&gt;
&lt;br /&gt;
Со студентами, оценка которых на защите чрезвычайно низка по сравнению с оценкой на ДЗ, будет проведена дополнительная устная защита с целью поиска путей исправления проблем в освоении материала.&lt;br /&gt;
&lt;br /&gt;
==Защита ДЗ 1-4==&lt;br /&gt;
&lt;br /&gt;
Защита состоится в субботу 26.09.2020 с 14:40 до 16:00 в режиме онлайн с асинхронным прокторингом. Заранее ознакомьтесь с техническими требованиями и порядком проведения защиты по ссылке: [[Защита_ДЗ_1-4_ОиМП-1_2020 | Защита ДЗ 1-4]]&lt;br /&gt;
&lt;br /&gt;
Демонстрационный вариант защиты ДЗ 1-4 доступен по ссылке https://official.contest.yandex.ru/contest/14004/enter/ в режиме виртуального контеста.&lt;br /&gt;
&lt;br /&gt;
==Защита ДЗ 5-8==&lt;br /&gt;
&lt;br /&gt;
Защита состоится в субботу 10.10.2020 с 14:40 до 16:00 в режиме онлайн с асинхронным прокторингом. Заранее ознакомьтесь с техническими требованиями и порядком проведения защиты по ссылке: [[Защита_ДЗ_5-8_ОиМП-1_2020 | Защита ДЗ 5-8]]&lt;br /&gt;
&lt;br /&gt;
==Материалы 208-1==&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/presentation/d/107onVJ7819CQiWa6bycWxEJmrOMtpSOGCsIFpP2bFEM Семинары 3,4]&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/presentation/d/15JCjfGPZHlrijdNuLGXfyaV6ioY5t_VhNL8KoHjvLKY Семинары 5,6]&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/presentation/d/1KNQNVAoXCcriLUAA3gh7NAgqSUbw4TI3C2LWG2OlNfs Семинары 7,8]&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/presentation/d/1Z-inMhUrL4Zlb54dS_I7Y_mlajAomnixmoGfjQUo-Qc Семинары 9,10]&lt;/div&gt;</summary>
		<author><name>Objatie groba</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D1%8B_%D0%B8_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D1%8F_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F_%D0%BD%D0%B0_%D0%9F%D0%9C%D0%98_2020/2021_(%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D0%BE%D0%B9_%D0%BF%D0%BE%D1%82%D0%BE%D0%BA)&amp;diff=45327</id>
		<title>Основы и методология программирования на ПМИ 2020/2021 (основной поток)</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D1%8B_%D0%B8_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D1%8F_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F_%D0%BD%D0%B0_%D0%9F%D0%9C%D0%98_2020/2021_(%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D0%BE%D0%B9_%D0%BF%D0%BE%D1%82%D0%BE%D0%BA)&amp;diff=45327"/>
		<updated>2020-09-29T08:07:35Z</updated>

		<summary type="html">&lt;p&gt;Objatie groba: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Основы и методология программирования, основной поток, 2020-2021, 1 модуль ==&lt;br /&gt;
&lt;br /&gt;
Информация про занятия по [[Data_scraping_ПМИ_2020 | Data scraping]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Лектор:&#039;&#039;&#039;  [https://www.hse.ru/org/persons/133408680 М. С. Густокашин]&lt;br /&gt;
&lt;br /&gt;
Конспекты лекций: https://yadi.sk/i/BkcKilJkumcPV&lt;br /&gt;
&lt;br /&gt;
Видео-лекции можно смотреть тут: https://www.coursera.org/learn/python-osnovy-programmirovaniya/home/welcome (платить денег ни в коем случае не нужно)&lt;br /&gt;
&lt;br /&gt;
Результаты: будут опубликованы позже&lt;br /&gt;
&lt;br /&gt;
Обратите внимание, что текущие оценки являются предварительными (осуществлены еще не все проверки на соблюдение правил, особенно на контрольной).&lt;br /&gt;
&lt;br /&gt;
== Итоговые оценки и экзамен ==&lt;br /&gt;
&lt;br /&gt;
Накопленная оценка не превышает 10.&lt;br /&gt;
&lt;br /&gt;
Итоговая оценка за курс вычисляется как 0.6*накопленная + 0.4*экзамен.&lt;br /&gt;
&lt;br /&gt;
Демонстрационный вариант экзамена: https://official.contest.yandex.ru/contest/9592&lt;br /&gt;
&lt;br /&gt;
== Используемое ПО ==&lt;br /&gt;
Необходимо установить интерпретатор Python версии не ниже 3.6 под свою ОС. Ссылка https://www.python.org/downloads/&lt;br /&gt;
&lt;br /&gt;
JetBrains PyCharm Community: https://www.jetbrains.com/pycharm/download/&lt;br /&gt;
&lt;br /&gt;
На занятия можно приносить свой ноутбук.&lt;br /&gt;
&lt;br /&gt;
==Домашние задания==&lt;br /&gt;
&lt;br /&gt;
Максимальная оценка за ДЗ - 12 баллов (если накопите больше 10 - получите 10, это просто бонус на случай неудач на защитах и т.п.), баллы распределены по задачам равномерно. Заходить нужно под тем же логином, под которым вы заходили в тестирование. На выполнение задания дается 8 дней от момента начала соответствующего семинара. Еще в течение 7 дней после этого доступна возможность досдать задачи, однако задачи оцениваются вполовину меньшим баллом. Перед семинаром необходимо изучить соответствующую тему по видеолекциям и текстовым конспектам.&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/19577/enter/ ДЗ 1 (Арифметика)]&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/19578/enter/ ДЗ 2 (Условный оператор)]&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/19683/enter/ ДЗ 3 (Цикл while)]&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/19684/enter/ ДЗ 4 (Вещественные числа и строки)]&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/19817/enter/ ДЗ 5 (Функция и рекурсия)]&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/19818/enter/ ДЗ 6 (Цикл for)]&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/19934/enter/ ДЗ 7 (Списки)]&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/19935/enter/ ДЗ 8 (Сортировка и линейный поиск)]&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/20258/enter/ ДЗ 9 (Множества)]&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/20259/enter/ ДЗ 10 (Словари)]&lt;br /&gt;
&lt;br /&gt;
==Дедлайны==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Контест !! ДЗ 1 !! ДЗ 2 !! ДЗ 3 !! ДЗ 4 !! ДЗ 5 !! ДЗ 6 !! ДЗ 7 !! ДЗ 8 !! ДЗ 9 !! ДЗ 10 !! ДЗ 11 !! ДЗ 12&lt;br /&gt;
|-&lt;br /&gt;
| 204-1 &lt;br /&gt;
|-&lt;br /&gt;
| 204-2 || 12.09.20 9:29 || 16.09.20 9:29 || 19.09.20 9:29 || 23.09.20 9:29 || 26.09.20 9:29 || 30.09.20 9:29 || 03.10.20 9:29 || 07.10.20 9:29&lt;br /&gt;
|-&lt;br /&gt;
| 206-1 &lt;br /&gt;
|-&lt;br /&gt;
| 206-2 &lt;br /&gt;
|-&lt;br /&gt;
| 207-1 &lt;br /&gt;
|-&lt;br /&gt;
| 207-2 || 12.09.20 9:29 || 17.09.20 9:29 || 19.09.20 9:29 || 24.09.20 9:29 || 26.09.20 9:29 || 29.09.20 18:09 || 03.10.20 9:29 || 06.10.20 18:09 || 10.10.20 9:29 || 13.10.20 18:09 || 17.10.20 9:29 || 20.10.20 18:09&lt;br /&gt;
|-&lt;br /&gt;
| 208-1 || 11.09.20 14:39 || 11.09.20 14:39 || 19.09.20 14:39 || 19.09.20 14:39 || 25.09.20 14:39 || 25.09.20 14:39 || 30.09.20 9:29 || 30.09.20 9:29 || 07.10.20 9:29 || 07.10.20 9:29&lt;br /&gt;
|-&lt;br /&gt;
| 208-2 &lt;br /&gt;
|-&lt;br /&gt;
| 209-1 || 15.09.20 12:59 || 15.09.20 12:59 || 23.09.20 12:59 || 23.09.20 12:59 || 25.09.20 14:39 || 25.09.20 14:39 || 02.10.20 14:39 || 02.10.20 14:39&lt;br /&gt;
|-&lt;br /&gt;
| 209-2 &lt;br /&gt;
|-&lt;br /&gt;
| 210-1 &lt;br /&gt;
|-&lt;br /&gt;
| 210-2 &lt;br /&gt;
|-&lt;br /&gt;
| 211-1 &lt;br /&gt;
|-&lt;br /&gt;
| 21-2 &lt;br /&gt;
|-&lt;br /&gt;
| 212-1 &lt;br /&gt;
|-&lt;br /&gt;
| 212-2 &lt;br /&gt;
|-&lt;br /&gt;
| 2011-2 || 11.09.20 11:09 || 16.09.20 11:09 || 23.09.20 11:09 || 23.09.20 11:09 || 25.09.20 11:09 || 30.09.20 11:09 || 02.10.20 11:09&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Система защиты ДЗ==&lt;br /&gt;
&lt;br /&gt;
Раз в две недели проходит защита ДЗ (с прокторингом или очно). По теме каждого ДЗ будет предложено 2 задачи средней сложности, всего 8 задач, на защиту отводится одна пара. Во время решения практических задач можно пользоваться конспектами и своими решениями задач ДЗ.&lt;br /&gt;
&lt;br /&gt;
Оценка за каждое ДЗ определяется как min(Оценка за ДЗ; Оценка за защиту).&lt;br /&gt;
&lt;br /&gt;
Оценка за защиту по каждой теме вычисляется следующим образом: 0 задач - 3, 1 задача - 7, 2 задачи - 12.&lt;br /&gt;
&lt;br /&gt;
Со студентами, оценка которых на защите чрезвычайно низка по сравнению с оценкой на ДЗ, будет проведена дополнительная устная защита с целью поиска путей исправления проблем в освоении материала.&lt;br /&gt;
&lt;br /&gt;
==Защита ДЗ 1-4==&lt;br /&gt;
&lt;br /&gt;
Защита состоится в субботу 26.09.2020 с 14:40 до 16:00 в режиме онлайн с асинхронным прокторингом. Заранее ознакомьтесь с техническими требованиями и порядком проведения защиты по ссылке: [[Защита_ДЗ_1-4_ОиМП-1_2020 | Защита ДЗ 1-4]]&lt;br /&gt;
&lt;br /&gt;
Демонстрационный вариант защиты ДЗ 1-4 доступен по ссылке https://official.contest.yandex.ru/contest/14004/enter/ в режиме виртуального контеста.&lt;br /&gt;
&lt;br /&gt;
==Материалы 208-1==&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/presentation/d/107onVJ7819CQiWa6bycWxEJmrOMtpSOGCsIFpP2bFEM Семинары 3,4]&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/presentation/d/15JCjfGPZHlrijdNuLGXfyaV6ioY5t_VhNL8KoHjvLKY Семинары 5,6]&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/presentation/d/1KNQNVAoXCcriLUAA3gh7NAgqSUbw4TI3C2LWG2OlNfs Семинары 7,8]&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/presentation/d/1Z-inMhUrL4Zlb54dS_I7Y_mlajAomnixmoGfjQUo-Qc Семинары 9,10]&lt;/div&gt;</summary>
		<author><name>Objatie groba</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D1%8B_%D0%B8_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D1%8F_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F_%D0%BD%D0%B0_%D0%9F%D0%9C%D0%98_2020/2021_(%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D0%BE%D0%B9_%D0%BF%D0%BE%D1%82%D0%BE%D0%BA)&amp;diff=45326</id>
		<title>Основы и методология программирования на ПМИ 2020/2021 (основной поток)</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D1%8B_%D0%B8_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D1%8F_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F_%D0%BD%D0%B0_%D0%9F%D0%9C%D0%98_2020/2021_(%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D0%BE%D0%B9_%D0%BF%D0%BE%D1%82%D0%BE%D0%BA)&amp;diff=45326"/>
		<updated>2020-09-29T08:06:35Z</updated>

		<summary type="html">&lt;p&gt;Objatie groba: /* Материалы 208-1 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Основы и методология программирования, основной поток, 2020-2021, 1 модуль ==&lt;br /&gt;
&lt;br /&gt;
Информация про занятия по [[Data_scraping_ПМИ_2020 | Data scraping]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Лектор:&#039;&#039;&#039;  [https://www.hse.ru/org/persons/133408680 М. С. Густокашин]&lt;br /&gt;
&lt;br /&gt;
Конспекты лекций: https://yadi.sk/i/BkcKilJkumcPV&lt;br /&gt;
&lt;br /&gt;
Видео-лекции можно смотреть тут: https://www.coursera.org/learn/python-osnovy-programmirovaniya/home/welcome (платить денег ни в коем случае не нужно)&lt;br /&gt;
&lt;br /&gt;
Результаты: будут опубликованы позже&lt;br /&gt;
&lt;br /&gt;
Обратите внимание, что текущие оценки являются предварительными (осуществлены еще не все проверки на соблюдение правил, особенно на контрольной).&lt;br /&gt;
&lt;br /&gt;
== Итоговые оценки и экзамен ==&lt;br /&gt;
&lt;br /&gt;
Накопленная оценка не превышает 10.&lt;br /&gt;
&lt;br /&gt;
Итоговая оценка за курс вычисляется как 0.6*накопленная + 0.4*экзамен.&lt;br /&gt;
&lt;br /&gt;
Демонстрационный вариант экзамена: https://official.contest.yandex.ru/contest/9592&lt;br /&gt;
&lt;br /&gt;
== Используемое ПО ==&lt;br /&gt;
Необходимо установить интерпретатор Python версии не ниже 3.6 под свою ОС. Ссылка https://www.python.org/downloads/&lt;br /&gt;
&lt;br /&gt;
JetBrains PyCharm Community: https://www.jetbrains.com/pycharm/download/&lt;br /&gt;
&lt;br /&gt;
На занятия можно приносить свой ноутбук.&lt;br /&gt;
&lt;br /&gt;
==Домашние задания==&lt;br /&gt;
&lt;br /&gt;
Максимальная оценка за ДЗ - 12 баллов (если накопите больше 10 - получите 10, это просто бонус на случай неудач на защитах и т.п.), баллы распределены по задачам равномерно. Заходить нужно под тем же логином, под которым вы заходили в тестирование. На выполнение задания дается 8 дней от момента начала соответствующего семинара. Еще в течение 7 дней после этого доступна возможность досдать задачи, однако задачи оцениваются вполовину меньшим баллом. Перед семинаром необходимо изучить соответствующую тему по видеолекциям и текстовым конспектам.&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/19577/enter/ ДЗ 1 (Арифметика)]&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/19578/enter/ ДЗ 2 (Условный оператор)]&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/19683/enter/ ДЗ 3 (Цикл while)]&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/19684/enter/ ДЗ 4 (Вещественные числа и строки)]&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/19817/enter/ ДЗ 5 (Функция и рекурсия)]&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/19818/enter/ ДЗ 6 (Цикл for)]&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/19934/enter/ ДЗ 7 (Списки)]&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/19935/enter/ ДЗ 8 (Сортировка и линейный поиск)]&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/20258/enter/ ДЗ 9 (Множества)]&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/20259/enter/ ДЗ 10 (Словари)]&lt;br /&gt;
&lt;br /&gt;
==Дедлайны==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Контест !! ДЗ 1 !! ДЗ 2 !! ДЗ 3 !! ДЗ 4 !! ДЗ 5 !! ДЗ 6 !! ДЗ 7 !! ДЗ 8 !! ДЗ 9 !! ДЗ 10 !! ДЗ 11 !! ДЗ 12&lt;br /&gt;
|-&lt;br /&gt;
| 204-1 &lt;br /&gt;
|-&lt;br /&gt;
| 204-2 || 12.09.20 9:29 || 16.09.20 9:29 || 19.09.20 9:29 || 23.09.20 9:29 || 26.09.20 9:29 || 30.09.20 9:29 || 03.10.20 9:29 || 07.10.20 9:29&lt;br /&gt;
|-&lt;br /&gt;
| 206-1 &lt;br /&gt;
|-&lt;br /&gt;
| 206-2 &lt;br /&gt;
|-&lt;br /&gt;
| 207-1 &lt;br /&gt;
|-&lt;br /&gt;
| 207-2 || 12.09.20 9:29 || 17.09.20 9:29 || 19.09.20 9:29 || 24.09.20 9:29 || 26.09.20 9:29 || 29.09.20 18:09 || 03.10.20 9:29 || 06.10.20 18:09 || 10.10.20 9:29 || 13.10.20 18:09 || 17.10.20 9:29 || 20.10.20 18:09&lt;br /&gt;
|-&lt;br /&gt;
| 208-1 || 11.09.20 14:39 || 11.09.20 14:39 || 19.09.20 14:39 || 19.09.20 14:39 || 25.09.20 14:39 || 25.09.20 14:39 || 30.09.20 9:29 || 30.09.20 9:29 &lt;br /&gt;
|-&lt;br /&gt;
| 208-2 &lt;br /&gt;
|-&lt;br /&gt;
| 209-1 || 15.09.20 12:59 || 15.09.20 12:59 || 23.09.20 12:59 || 23.09.20 12:59 || 25.09.20 14:39 || 25.09.20 14:39 || 02.10.20 14:39 || 02.10.20 14:39&lt;br /&gt;
|-&lt;br /&gt;
| 209-2 &lt;br /&gt;
|-&lt;br /&gt;
| 210-1 &lt;br /&gt;
|-&lt;br /&gt;
| 210-2 &lt;br /&gt;
|-&lt;br /&gt;
| 211-1 &lt;br /&gt;
|-&lt;br /&gt;
| 21-2 &lt;br /&gt;
|-&lt;br /&gt;
| 212-1 &lt;br /&gt;
|-&lt;br /&gt;
| 212-2 &lt;br /&gt;
|-&lt;br /&gt;
| 2011-2 || 11.09.20 11:09 || 16.09.20 11:09 || 23.09.20 11:09 || 23.09.20 11:09 || 25.09.20 11:09 || 30.09.20 11:09 || 02.10.20 11:09&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Система защиты ДЗ==&lt;br /&gt;
&lt;br /&gt;
Раз в две недели проходит защита ДЗ (с прокторингом или очно). По теме каждого ДЗ будет предложено 2 задачи средней сложности, всего 8 задач, на защиту отводится одна пара. Во время решения практических задач можно пользоваться конспектами и своими решениями задач ДЗ.&lt;br /&gt;
&lt;br /&gt;
Оценка за каждое ДЗ определяется как min(Оценка за ДЗ; Оценка за защиту).&lt;br /&gt;
&lt;br /&gt;
Оценка за защиту по каждой теме вычисляется следующим образом: 0 задач - 3, 1 задача - 7, 2 задачи - 12.&lt;br /&gt;
&lt;br /&gt;
Со студентами, оценка которых на защите чрезвычайно низка по сравнению с оценкой на ДЗ, будет проведена дополнительная устная защита с целью поиска путей исправления проблем в освоении материала.&lt;br /&gt;
&lt;br /&gt;
==Защита ДЗ 1-4==&lt;br /&gt;
&lt;br /&gt;
Защита состоится в субботу 26.09.2020 с 14:40 до 16:00 в режиме онлайн с асинхронным прокторингом. Заранее ознакомьтесь с техническими требованиями и порядком проведения защиты по ссылке: [[Защита_ДЗ_1-4_ОиМП-1_2020 | Защита ДЗ 1-4]]&lt;br /&gt;
&lt;br /&gt;
Демонстрационный вариант защиты ДЗ 1-4 доступен по ссылке https://official.contest.yandex.ru/contest/14004/enter/ в режиме виртуального контеста.&lt;br /&gt;
&lt;br /&gt;
==Материалы 208-1==&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/presentation/d/107onVJ7819CQiWa6bycWxEJmrOMtpSOGCsIFpP2bFEM Семинары 3,4]&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/presentation/d/15JCjfGPZHlrijdNuLGXfyaV6ioY5t_VhNL8KoHjvLKY Семинары 5,6]&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/presentation/d/1KNQNVAoXCcriLUAA3gh7NAgqSUbw4TI3C2LWG2OlNfs Семинары 7,8]&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/presentation/d/1Z-inMhUrL4Zlb54dS_I7Y_mlajAomnixmoGfjQUo-Qc Семинары 9,10]&lt;/div&gt;</summary>
		<author><name>Objatie groba</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D1%8B_%D0%B8_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D1%8F_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F_%D0%BD%D0%B0_%D0%9F%D0%9C%D0%98_2020/2021_(%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D0%BE%D0%B9_%D0%BF%D0%BE%D1%82%D0%BE%D0%BA)&amp;diff=44845</id>
		<title>Основы и методология программирования на ПМИ 2020/2021 (основной поток)</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D1%8B_%D0%B8_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D1%8F_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F_%D0%BD%D0%B0_%D0%9F%D0%9C%D0%98_2020/2021_(%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D0%BE%D0%B9_%D0%BF%D0%BE%D1%82%D0%BE%D0%BA)&amp;diff=44845"/>
		<updated>2020-09-21T20:43:55Z</updated>

		<summary type="html">&lt;p&gt;Objatie groba: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Основы и методология программирования, основной поток, 2020-2021, 1 модуль ==&lt;br /&gt;
&lt;br /&gt;
Информация про занятия по [[Data_scraping_ПМИ_2020 | Data scraping]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Лектор:&#039;&#039;&#039;  [https://www.hse.ru/org/persons/133408680 М. С. Густокашин]&lt;br /&gt;
&lt;br /&gt;
Конспекты лекций: https://yadi.sk/i/BkcKilJkumcPV&lt;br /&gt;
&lt;br /&gt;
Видео-лекции можно смотреть тут: https://www.coursera.org/learn/python-osnovy-programmirovaniya/home/welcome (платить денег ни в коем случае не нужно)&lt;br /&gt;
&lt;br /&gt;
Результаты: будут опубликованы позже&lt;br /&gt;
&lt;br /&gt;
Обратите внимание, что текущие оценки являются предварительными (осуществлены еще не все проверки на соблюдение правил, особенно на контрольной).&lt;br /&gt;
&lt;br /&gt;
== Итоговые оценки и экзамен ==&lt;br /&gt;
&lt;br /&gt;
Накопленная оценка не превышает 10.&lt;br /&gt;
&lt;br /&gt;
Итоговая оценка за курс вычисляется как 0.6*накопленная + 0.4*экзамен.&lt;br /&gt;
&lt;br /&gt;
Демонстрационный вариант экзамена: https://official.contest.yandex.ru/contest/9592&lt;br /&gt;
&lt;br /&gt;
== Используемое ПО ==&lt;br /&gt;
Необходимо установить интерпретатор Python версии не ниже 3.6 под свою ОС. Ссылка https://www.python.org/downloads/&lt;br /&gt;
&lt;br /&gt;
JetBrains PyCharm Community: https://www.jetbrains.com/pycharm/download/&lt;br /&gt;
&lt;br /&gt;
На занятия можно приносить свой ноутбук.&lt;br /&gt;
&lt;br /&gt;
==Домашние задания==&lt;br /&gt;
&lt;br /&gt;
Максимальная оценка за ДЗ - 12 баллов (если накопите больше 10 - получите 10, это просто бонус на случай неудач на защитах и т.п.), баллы распределены по задачам равномерно. Заходить нужно под тем же логином, под которым вы заходили в тестирование. На выполнение задания дается 8 дней от момента начала соответствующего семинара. Еще в течение 7 дней после этого доступна возможность досдать задачи, однако задачи оцениваются вполовину меньшим баллом. Перед семинаром необходимо изучить соответствующую тему по видеолекциям и текстовым конспектам.&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/19577/enter/ ДЗ 1 (Арифметика)]&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/19578/enter/ ДЗ 2 (Условный оператор)]&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/19683/enter/ ДЗ 3 (Цикл while)]&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/19684/enter/ ДЗ 4 (Вещественные числа и строки)]&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/19817/enter/ ДЗ 5 (Функция и рекурсия)]&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/19818/enter/ ДЗ 6 (Цикл for)]&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/19934/enter/ ДЗ 7 (Списки)]&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/19935/enter/ ДЗ 8 (Сортировка и линейный поиск)]&lt;br /&gt;
&lt;br /&gt;
==Дедлайны==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Контест !! ДЗ 1 !! ДЗ 2 !! ДЗ 3 !! ДЗ 4 !! ДЗ 5 !! ДЗ 6 !! ДЗ 7 !! ДЗ 8&lt;br /&gt;
|-&lt;br /&gt;
| 204-1 &lt;br /&gt;
|-&lt;br /&gt;
| 204-2 || 12.09.20 9:29 || 16.09.20 9:29 || 19.09.20 9:29 || 23.09.20 9:29 || 26.09.20 9:29 || 30.09.20 9:29&lt;br /&gt;
|-&lt;br /&gt;
| 206-1 &lt;br /&gt;
|-&lt;br /&gt;
| 206-2 &lt;br /&gt;
|-&lt;br /&gt;
| 207-1 &lt;br /&gt;
|-&lt;br /&gt;
| 207-2 &lt;br /&gt;
|-&lt;br /&gt;
| 208-1 || 11.09.20 14:39 || 11.09.20 14:39 || 19.09.20 14:39 || 19.09.20 14:39 || 25.09.20 14:39 || 25.09.20 14:39 || 30.09.20 9:29 || 30.09.20 9:29 &lt;br /&gt;
|-&lt;br /&gt;
| 208-2 &lt;br /&gt;
|-&lt;br /&gt;
| 209-1 || 15.09.20 12:59 || 15.09.20 12:59 || 23.09.20 12:59 || 23.09.20 12:59 || 25.09.20 14:39 || 25.09.20 14:39&lt;br /&gt;
|-&lt;br /&gt;
| 209-2 &lt;br /&gt;
|-&lt;br /&gt;
| 210-1 &lt;br /&gt;
|-&lt;br /&gt;
| 210-2 &lt;br /&gt;
|-&lt;br /&gt;
| 211-1 &lt;br /&gt;
|-&lt;br /&gt;
| 21-2 &lt;br /&gt;
|-&lt;br /&gt;
| 212-1 &lt;br /&gt;
|-&lt;br /&gt;
| 212-2 &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Система защиты ДЗ==&lt;br /&gt;
&lt;br /&gt;
Раз в две недели проходит защита ДЗ (с прокторингом или очно). По теме каждого ДЗ будет предложено 2 задачи средней сложности, всего 8 задач, на защиту отводится одна пара. Во время решения практических задач можно пользоваться конспектами и своими решениями задач ДЗ.&lt;br /&gt;
&lt;br /&gt;
Оценка за каждое ДЗ определяется как min(Оценка за ДЗ; Оценка за защиту).&lt;br /&gt;
&lt;br /&gt;
Оценка за защиту по каждой теме вычисляется следующим образом: 0 задач - 3, 1 задача - 7, 2 задачи - 12.&lt;br /&gt;
&lt;br /&gt;
Со студентами, оценка которых на защите чрезвычайно низка по сравнению с оценкой на ДЗ, будет проведена дополнительная устная защита с целью поиска путей исправления проблем в освоении материала.&lt;br /&gt;
&lt;br /&gt;
==Материалы 208-1==&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/presentation/d/107onVJ7819CQiWa6bycWxEJmrOMtpSOGCsIFpP2bFEM Семинары 3,4]&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/presentation/d/15JCjfGPZHlrijdNuLGXfyaV6ioY5t_VhNL8KoHjvLKY Семинары 5,6]&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/presentation/d/1KNQNVAoXCcriLUAA3gh7NAgqSUbw4TI3C2LWG2OlNfs Семинары 7,8]&lt;/div&gt;</summary>
		<author><name>Objatie groba</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D1%8B_%D0%B8_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D1%8F_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F_%D0%BD%D0%B0_%D0%9F%D0%9C%D0%98_2020/2021_(%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D0%BE%D0%B9_%D0%BF%D0%BE%D1%82%D0%BE%D0%BA)&amp;diff=44844</id>
		<title>Основы и методология программирования на ПМИ 2020/2021 (основной поток)</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D1%8B_%D0%B8_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D1%8F_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F_%D0%BD%D0%B0_%D0%9F%D0%9C%D0%98_2020/2021_(%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D0%BE%D0%B9_%D0%BF%D0%BE%D1%82%D0%BE%D0%BA)&amp;diff=44844"/>
		<updated>2020-09-21T20:41:08Z</updated>

		<summary type="html">&lt;p&gt;Objatie groba: /* Дедлайны */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Основы и методология программирования, основной поток, 2020-2021, 1 модуль ==&lt;br /&gt;
&lt;br /&gt;
Информация про занятия по [[Data_scraping_ПМИ_2020 | Data scraping]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Лектор:&#039;&#039;&#039;  [https://www.hse.ru/org/persons/133408680 М. С. Густокашин]&lt;br /&gt;
&lt;br /&gt;
Конспекты лекций: https://yadi.sk/i/BkcKilJkumcPV&lt;br /&gt;
&lt;br /&gt;
Видео-лекции можно смотреть тут: https://www.coursera.org/learn/python-osnovy-programmirovaniya/home/welcome (платить денег ни в коем случае не нужно)&lt;br /&gt;
&lt;br /&gt;
Результаты: будут опубликованы позже&lt;br /&gt;
&lt;br /&gt;
Обратите внимание, что текущие оценки являются предварительными (осуществлены еще не все проверки на соблюдение правил, особенно на контрольной).&lt;br /&gt;
&lt;br /&gt;
== Итоговые оценки и экзамен ==&lt;br /&gt;
&lt;br /&gt;
Накопленная оценка не превышает 10.&lt;br /&gt;
&lt;br /&gt;
Итоговая оценка за курс вычисляется как 0.6*накопленная + 0.4*экзамен.&lt;br /&gt;
&lt;br /&gt;
Демонстрационный вариант экзамена: https://official.contest.yandex.ru/contest/9592&lt;br /&gt;
&lt;br /&gt;
== Используемое ПО ==&lt;br /&gt;
Необходимо установить интерпретатор Python версии не ниже 3.6 под свою ОС. Ссылка https://www.python.org/downloads/&lt;br /&gt;
&lt;br /&gt;
JetBrains PyCharm Community: https://www.jetbrains.com/pycharm/download/&lt;br /&gt;
&lt;br /&gt;
На занятия можно приносить свой ноутбук.&lt;br /&gt;
&lt;br /&gt;
==Домашние задания==&lt;br /&gt;
&lt;br /&gt;
Максимальная оценка за ДЗ - 12 баллов (если накопите больше 10 - получите 10, это просто бонус на случай неудач на защитах и т.п.), баллы распределены по задачам равномерно. Заходить нужно под тем же логином, под которым вы заходили в тестирование. На выполнение задания дается 8 дней от момента начала соответствующего семинара. Еще в течение 7 дней после этого доступна возможность досдать задачи, однако задачи оцениваются вполовину меньшим баллом. Перед семинаром необходимо изучить соответствующую тему по видеолекциям и текстовым конспектам.&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/19577/enter/ ДЗ 1 (Арифметика)]&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/19578/enter/ ДЗ 2 (Условный оператор)]&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/19683/enter/ ДЗ 3 (Цикл while)]&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/19684/enter/ ДЗ 4 (Вещественные числа и строки)]&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/19817/enter/ ДЗ 5 (Функция и рекурсия)]&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/19818/enter/ ДЗ 6 (Цикл for)]&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/19934/enter/ ДЗ 7 (Списки)]&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/19935/enter/ ДЗ 8 (Сортировка и линейный поиск)]&lt;br /&gt;
&lt;br /&gt;
==Дедлайны==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Контест !! ДЗ 1 !! ДЗ 2 !! ДЗ 3 !! ДЗ 4 !! ДЗ 5 !! ДЗ 6 !! ДЗ 7 !! ДЗ 8&lt;br /&gt;
|-&lt;br /&gt;
| 204-1 &lt;br /&gt;
|-&lt;br /&gt;
| 204-2 || 12.09.20 9:29 || 16.09.20 9:29 || 19.09.20 9:29 || 23.09.20 9:29 || 26.09.20 9:29 || 30.09.20 9:29&lt;br /&gt;
|-&lt;br /&gt;
| 206-1 &lt;br /&gt;
|-&lt;br /&gt;
| 206-2 &lt;br /&gt;
|-&lt;br /&gt;
| 207-1 &lt;br /&gt;
|-&lt;br /&gt;
| 207-2 &lt;br /&gt;
|-&lt;br /&gt;
| 208-1 || 11.09.20 14:39 || 11.09.20 14:39 || 19.09.20 14:39 || 19.09.20 14:39 || 25.09.20 14:39 || 25.09.20 14:39 || 30.09.20 9:29 || 30.09.20 9:29 &lt;br /&gt;
|-&lt;br /&gt;
| 208-2 &lt;br /&gt;
|-&lt;br /&gt;
| 209-1 || 15.09.20 12:59 || 15.09.20 12:59 || 23.09.20 12:59 || 23.09.20 12:59 || 25.09.20 14:39 || 25.09.20 14:39&lt;br /&gt;
|-&lt;br /&gt;
| 209-2 &lt;br /&gt;
|-&lt;br /&gt;
| 210-1 &lt;br /&gt;
|-&lt;br /&gt;
| 210-2 &lt;br /&gt;
|-&lt;br /&gt;
| 211-1 &lt;br /&gt;
|-&lt;br /&gt;
| 21-2 &lt;br /&gt;
|-&lt;br /&gt;
| 212-1 &lt;br /&gt;
|-&lt;br /&gt;
| 212-2 &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Система защиты ДЗ==&lt;br /&gt;
&lt;br /&gt;
Раз в две недели проходит защита ДЗ (с прокторингом или очно). По теме каждого ДЗ будет предложено 2 задачи средней сложности, всего 8 задач, на защиту отводится одна пара. Во время решения практических задач можно пользоваться конспектами и своими решениями задач ДЗ.&lt;br /&gt;
&lt;br /&gt;
Оценка за каждое ДЗ определяется как min(Оценка за ДЗ; Оценка за защиту).&lt;br /&gt;
&lt;br /&gt;
Оценка за защиту по каждой теме вычисляется следующим образом: 0 задач - 3, 1 задача - 7, 2 задачи - 12.&lt;br /&gt;
&lt;br /&gt;
Со студентами, оценка которых на защите чрезвычайно низка по сравнению с оценкой на ДЗ, будет проведена дополнительная устная защита с целью поиска путей исправления проблем в освоении материала.&lt;/div&gt;</summary>
		<author><name>Objatie groba</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D1%8B_%D0%B8_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D1%8F_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F_%D0%BD%D0%B0_%D0%9F%D0%9C%D0%98_2020/2021_(%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D0%BE%D0%B9_%D0%BF%D0%BE%D1%82%D0%BE%D0%BA)&amp;diff=44523</id>
		<title>Основы и методология программирования на ПМИ 2020/2021 (основной поток)</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D1%8B_%D0%B8_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D1%8F_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F_%D0%BD%D0%B0_%D0%9F%D0%9C%D0%98_2020/2021_(%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D0%BE%D0%B9_%D0%BF%D0%BE%D1%82%D0%BE%D0%BA)&amp;diff=44523"/>
		<updated>2020-09-17T13:10:55Z</updated>

		<summary type="html">&lt;p&gt;Objatie groba: Дедлайны 208-1&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Основы и методология программирования, основной поток, 2020-2021, 1 модуль ==&lt;br /&gt;
&lt;br /&gt;
Информация про занятия по [[Data_scraping_ПМИ_2020 | Data scraping]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Лектор:&#039;&#039;&#039;  [https://www.hse.ru/org/persons/133408680 М. С. Густокашин]&lt;br /&gt;
&lt;br /&gt;
Конспекты лекций: https://yadi.sk/i/BkcKilJkumcPV&lt;br /&gt;
&lt;br /&gt;
Видео-лекции можно смотреть тут: https://www.coursera.org/learn/python-osnovy-programmirovaniya/home/welcome (платить денег ни в коем случае не нужно)&lt;br /&gt;
&lt;br /&gt;
Результаты: будут опубликованы позже&lt;br /&gt;
&lt;br /&gt;
Обратите внимание, что текущие оценки являются предварительными (осуществлены еще не все проверки на соблюдение правил, особенно на контрольной).&lt;br /&gt;
&lt;br /&gt;
== Итоговые оценки и экзамен ==&lt;br /&gt;
&lt;br /&gt;
Накопленная оценка не превышает 10.&lt;br /&gt;
&lt;br /&gt;
Итоговая оценка за курс вычисляется как 0.6*накопленная + 0.4*экзамен.&lt;br /&gt;
&lt;br /&gt;
Демонстрационный вариант экзамена: https://official.contest.yandex.ru/contest/9592&lt;br /&gt;
&lt;br /&gt;
== Используемое ПО ==&lt;br /&gt;
Необходимо установить интерпретатор Python версии не ниже 3.6 под свою ОС. Ссылка https://www.python.org/downloads/&lt;br /&gt;
&lt;br /&gt;
JetBrains PyCharm Community: https://www.jetbrains.com/pycharm/download/&lt;br /&gt;
&lt;br /&gt;
На занятия можно приносить свой ноутбук.&lt;br /&gt;
&lt;br /&gt;
==Домашние задания==&lt;br /&gt;
&lt;br /&gt;
Максимальная оценка за ДЗ - 12 баллов (если накопите больше 10 - получите 10, это просто бонус на случай неудач на защитах и т.п.), баллы распределены по задачам равномерно. Заходить нужно под тем же логином, под которым вы заходили в тестирование. На выполнение задания дается 8 дней от момента начала соответствующего семинара. Еще в течение 7 дней после этого доступна возможность досдать задачи, однако задачи оцениваются вполовину меньшим баллом. Перед семинаром необходимо изучить соответствующую тему по видеолекциям и текстовым конспектам.&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/19577/enter/ ДЗ 1 (Арифметика)]&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/19578/enter/ ДЗ 2 (Условный оператор)]&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/19683/enter/ ДЗ 3 (Цикл while)]&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/19684/enter/ ДЗ 4 (Вещественные числа и строки)]&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/19817/enter/ ДЗ 5 (Функция и рекурсия)]&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/19818/enter/ ДЗ 6 (Цикл for)]&lt;br /&gt;
&lt;br /&gt;
==Дедлайны==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Контест !! ДЗ 1 !! ДЗ 2 !! ДЗ 3 !! ДЗ 4 !! ДЗ 5 !! ДЗ 6&lt;br /&gt;
|-&lt;br /&gt;
| 204-1 &lt;br /&gt;
|-&lt;br /&gt;
| 204-2 || 12.09.20 9:29 || 16.09.20 9:29 || 19.09.20 9:29 || 23.09.20 9:29 || 26.09.20 9:29 || 30.09.20 9:29&lt;br /&gt;
|-&lt;br /&gt;
| 206-1 &lt;br /&gt;
|-&lt;br /&gt;
| 206-2 &lt;br /&gt;
|-&lt;br /&gt;
| 207-1 &lt;br /&gt;
|-&lt;br /&gt;
| 207-2 &lt;br /&gt;
|-&lt;br /&gt;
| 208-1 || 11.09.20 14:39 || 11.09.20 14:39 || 19.09.20 14:39 || 19.09.20 14:39 || 25.09.20 14:39 || 25.09.20 14:39 &lt;br /&gt;
|-&lt;br /&gt;
| 208-2 &lt;br /&gt;
|-&lt;br /&gt;
| 209-1 || 15.09.20 12:59 || 15.09.20 12:59 || 23.09.20 12:59 || 23.09.20 12:59 || 25.09.20 14:39 || 25.09.20 14:39&lt;br /&gt;
|-&lt;br /&gt;
| 209-2 &lt;br /&gt;
|-&lt;br /&gt;
| 210-1 &lt;br /&gt;
|-&lt;br /&gt;
| 210-2 &lt;br /&gt;
|-&lt;br /&gt;
| 211-1 &lt;br /&gt;
|-&lt;br /&gt;
| 21-2 &lt;br /&gt;
|-&lt;br /&gt;
| 212-1 &lt;br /&gt;
|-&lt;br /&gt;
| 212-2 &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Система защиты ДЗ==&lt;br /&gt;
&lt;br /&gt;
Раз в две недели проходит защита ДЗ (с прокторингом или очно). По теме каждого ДЗ будет предложено 2 задачи средней сложности, всего 8 задач, на защиту отводится одна пара. Во время решения практических задач можно пользоваться конспектами и своими решениями задач ДЗ.&lt;br /&gt;
&lt;br /&gt;
Оценка за каждое ДЗ определяется как min(Оценка за ДЗ; Оценка за защиту).&lt;br /&gt;
&lt;br /&gt;
Оценка за защиту по каждой теме вычисляется следующим образом: 0 задач - 3, 1 задача - 7, 2 задачи - 12.&lt;br /&gt;
&lt;br /&gt;
Со студентами, оценка которых на защите чрезвычайно низка по сравнению с оценкой на ДЗ, будет проведена дополнительная устная защита с целью поиска путей исправления проблем в освоении материала.&lt;/div&gt;</summary>
		<author><name>Objatie groba</name></author>
	</entry>
	<entry>
		<id>https://wiki.cs.hse.ru/index.php?title=%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D1%8B_%D0%B8_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D1%8F_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F_%D0%BD%D0%B0_%D0%9F%D0%9C%D0%98_2020/2021_(%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D0%BE%D0%B9_%D0%BF%D0%BE%D1%82%D0%BE%D0%BA)&amp;diff=44522</id>
		<title>Основы и методология программирования на ПМИ 2020/2021 (основной поток)</title>
		<link rel="alternate" type="text/html" href="https://wiki.cs.hse.ru/index.php?title=%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D1%8B_%D0%B8_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D1%8F_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F_%D0%BD%D0%B0_%D0%9F%D0%9C%D0%98_2020/2021_(%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D0%BE%D0%B9_%D0%BF%D0%BE%D1%82%D0%BE%D0%BA)&amp;diff=44522"/>
		<updated>2020-09-17T13:08:51Z</updated>

		<summary type="html">&lt;p&gt;Objatie groba: Добавлены дедлайны 208-1&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Основы и методология программирования, основной поток, 2020-2021, 1 модуль ==&lt;br /&gt;
&lt;br /&gt;
Информация про занятия по [[Data_scraping_ПМИ_2020 | Data scraping]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Лектор:&#039;&#039;&#039;  [https://www.hse.ru/org/persons/133408680 М. С. Густокашин]&lt;br /&gt;
&lt;br /&gt;
Конспекты лекций: https://yadi.sk/i/BkcKilJkumcPV&lt;br /&gt;
&lt;br /&gt;
Видео-лекции можно смотреть тут: https://www.coursera.org/learn/python-osnovy-programmirovaniya/home/welcome (платить денег ни в коем случае не нужно)&lt;br /&gt;
&lt;br /&gt;
Результаты: будут опубликованы позже&lt;br /&gt;
&lt;br /&gt;
Обратите внимание, что текущие оценки являются предварительными (осуществлены еще не все проверки на соблюдение правил, особенно на контрольной).&lt;br /&gt;
&lt;br /&gt;
== Итоговые оценки и экзамен ==&lt;br /&gt;
&lt;br /&gt;
Накопленная оценка не превышает 10.&lt;br /&gt;
&lt;br /&gt;
Итоговая оценка за курс вычисляется как 0.6*накопленная + 0.4*экзамен.&lt;br /&gt;
&lt;br /&gt;
Демонстрационный вариант экзамена: https://official.contest.yandex.ru/contest/9592&lt;br /&gt;
&lt;br /&gt;
== Используемое ПО ==&lt;br /&gt;
Необходимо установить интерпретатор Python версии не ниже 3.6 под свою ОС. Ссылка https://www.python.org/downloads/&lt;br /&gt;
&lt;br /&gt;
JetBrains PyCharm Community: https://www.jetbrains.com/pycharm/download/&lt;br /&gt;
&lt;br /&gt;
На занятия можно приносить свой ноутбук.&lt;br /&gt;
&lt;br /&gt;
==Домашние задания==&lt;br /&gt;
&lt;br /&gt;
Максимальная оценка за ДЗ - 12 баллов (если накопите больше 10 - получите 10, это просто бонус на случай неудач на защитах и т.п.), баллы распределены по задачам равномерно. Заходить нужно под тем же логином, под которым вы заходили в тестирование. На выполнение задания дается 8 дней от момента начала соответствующего семинара. Еще в течение 7 дней после этого доступна возможность досдать задачи, однако задачи оцениваются вполовину меньшим баллом. Перед семинаром необходимо изучить соответствующую тему по видеолекциям и текстовым конспектам.&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/19577/enter/ ДЗ 1 (Арифметика)]&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/19578/enter/ ДЗ 2 (Условный оператор)]&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/19683/enter/ ДЗ 3 (Цикл while)]&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/19684/enter/ ДЗ 4 (Вещественные числа и строки)]&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/19817/enter/ ДЗ 5 (Функция и рекурсия)]&lt;br /&gt;
&lt;br /&gt;
[https://official.contest.yandex.ru/contest/19818/enter/ ДЗ 6 (Цикл for)]&lt;br /&gt;
&lt;br /&gt;
==Дедлайны==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Контест !! ДЗ 1 !! ДЗ 2 !! ДЗ 3 !! ДЗ 4 !! ДЗ 5 !! ДЗ 6&lt;br /&gt;
|-&lt;br /&gt;
| 204-1 &lt;br /&gt;
|-&lt;br /&gt;
| 204-2 || 12.09.20 9:29 || 16.09.20 9:29 || 19.09.20 9:29 || 23.09.20 9:29 || 26.09.20 9:29 || 30.09.20 9:29&lt;br /&gt;
|-&lt;br /&gt;
| 206-1 &lt;br /&gt;
|-&lt;br /&gt;
| 206-2 &lt;br /&gt;
|-&lt;br /&gt;
| 207-1 &lt;br /&gt;
|-&lt;br /&gt;
| 207-2 &lt;br /&gt;
|-&lt;br /&gt;
| 208-1 || 11.09.20 14:39 || 19.09.20 14:39 || 25.09.20 14:39 ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
| 208-2 &lt;br /&gt;
|-&lt;br /&gt;
| 209-1 || 15.09.20 12:59 || 15.09.20 12:59 || 23.09.20 12:59 || 23.09.20 12:59 || 25.09.20 14:39 || 25.09.20 14:39&lt;br /&gt;
|-&lt;br /&gt;
| 209-2 &lt;br /&gt;
|-&lt;br /&gt;
| 210-1 &lt;br /&gt;
|-&lt;br /&gt;
| 210-2 &lt;br /&gt;
|-&lt;br /&gt;
| 211-1 &lt;br /&gt;
|-&lt;br /&gt;
| 21-2 &lt;br /&gt;
|-&lt;br /&gt;
| 212-1 &lt;br /&gt;
|-&lt;br /&gt;
| 212-2 &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Система защиты ДЗ==&lt;br /&gt;
&lt;br /&gt;
Раз в две недели проходит защита ДЗ (с прокторингом или очно). По теме каждого ДЗ будет предложено 2 задачи средней сложности, всего 8 задач, на защиту отводится одна пара. Во время решения практических задач можно пользоваться конспектами и своими решениями задач ДЗ.&lt;br /&gt;
&lt;br /&gt;
Оценка за каждое ДЗ определяется как min(Оценка за ДЗ; Оценка за защиту).&lt;br /&gt;
&lt;br /&gt;
Оценка за защиту по каждой теме вычисляется следующим образом: 0 задач - 3, 1 задача - 7, 2 задачи - 12.&lt;br /&gt;
&lt;br /&gt;
Со студентами, оценка которых на защите чрезвычайно низка по сравнению с оценкой на ДЗ, будет проведена дополнительная устная защита с целью поиска путей исправления проблем в освоении материала.&lt;/div&gt;</summary>
		<author><name>Objatie groba</name></author>
	</entry>
</feed>