CAOS-2021 — различия между версиями

Материал из Wiki - Факультет компьютерных наук
Перейти к: навигация, поиск
(Ссылки на канал и чат в телеграме)
 
(Как устроен курс)
 
(не показано 55 промежуточных версии 13 участников)
Строка 1: Строка 1:
  
 +
 +
== Важные ссылки ==
 +
 +
[https://caos.myltsev.ru Вход в Ejudge]
  
 
[https://t.me/joinchat/Fu0tpJqr1ppkMjMy Телеграм-канал с объявлениями]
 
[https://t.me/joinchat/Fu0tpJqr1ppkMjMy Телеграм-канал с объявлениями]
  
[https://t.me/joinchat/QBRLiLbw8A43OWYy Телеграм-чатик]
+
[https://t.me/joinchat/QBRLiLbw8A43OWYy Телеграм-чат курса]
 +
 
 +
[https://www.youtube.com/playlist?list=PLEwK9wdS5g0r5XFoE8dCzMng5CYrq-CKE Лекции и семинары на Ютюбе]
 +
 
 +
[https://caos.myltsev.ru/style.html Стайлгайд для языка Си]
 +
 
 +
[https://forms.gle/ZWxKuCLL2QZxzky27 Форма для фидбека]
 +
 
 +
== Чаты групп ==
 +
 
 +
{| class="wikitable"
 +
|- style="font-weight:bold; text-align:center;"
 +
! Группа
 +
! Telegram-чат
 +
|-
 +
| БПМИ201
 +
| https://t.me/joinchat/LnOwQ-Z6HAo2OTg6
 +
|-
 +
| БПМИ202
 +
| https://t.me/joinchat/OMRB-ZOwXXBhODBi
 +
|-
 +
| БПМИ203
 +
| https://t.me/joinchat/kyFY_eIp60cyODRi
 +
|-
 +
| БПМИ204
 +
| https://t.me/joinchat/RTey5l_q9LMyODIy
 +
|-
 +
| БПМИ205
 +
| https://t.me/joinchat/jw2Z5v5R0Es3OTli
 +
|-
 +
| БПМИ206
 +
| https://t.me/joinchat/eH0j31yf0QZkNGIy
 +
|-
 +
| БПМИ207
 +
| https://t.me/joinchat/pVQNC9kwwfFiYWRi
 +
|-
 +
| БПМИ208
 +
| https://t.me/joinchat/C7Wj_Cz-swUzZDEy
 +
|-
 +
| БПМИ209
 +
| https://t.me/joinchat/cuqnvg2qofYyOTky
 +
|-
 +
| БПМИ2010
 +
| https://t.me/joinchat/gyvWlC31TZ83NmNi
 +
|}
 +
 
 +
[[CAOS-2021/207_seminars|Страница семинаров 207 группы]]
 +
<br />
 +
[https://github.com/olegartys/hse_caos_208 GitHub семинаров 208 группы]
 +
 
 +
= Преподаватели и учебные ассистенты =
 +
 
 +
{| class="wikitable"
 +
|- style="font-weight:bold; text-align:center;"
 +
! Группа
 +
! Семинарист
 +
! Ассистенты
 +
|-
 +
| БПМИ201
 +
| [https://t.me/myltsev Александр Мыльцев]
 +
| [https://t.me/gitnab Наби Гитинов], [https://t.me/lodthe Игорь Балюк]
 +
|-
 +
| БПМИ202
 +
| [https://t.me/objatie_groba Игорь Минеев]
 +
| [https://t.me/vkh_ent Владислав Хохлов]
 +
|-
 +
| БПМИ203
 +
| [https://t.me/Exile333 Раиль Чабдаров]
 +
| [https://t.me/shamerd Шамиль Аюпов], [https://t.me/AtgshkaSan Александр Шитов]
 +
|-
 +
| БПМИ204
 +
| [https://www.hse.ru/org/persons/165212878 Роман Курынин]
 +
| [https://t.me/nnv_nick Никита Насонков], [https://t.me/Ch0p1k Иван Лущ]
 +
|-
 +
| БПМИ205
 +
| [https://t.me/a_salnikov Алексей Сальников]
 +
| [https://t.me/SphericalPotatoInVacuum Александр Богданов], [https://t.me/supremeSwings Даниил Рубин]
 +
|-
 +
| БПМИ206
 +
| [https://t.me/yuri3 Юрий Баранов]
 +
| [https://t.me/darkkeks Вячеслав Бобень], [https://t.me/m_stetsyuk Михаил Стецюк]
 +
|-
 +
| БПМИ207
 +
| [https://t.me/iiixphillxiii Михаил Филитов]
 +
| [https://t.me/vadim1705 Вадим Дудкин], [https://t.me/Night_RS Александр Стрыгин]
 +
|-
 +
| БПМИ208
 +
| [https://t.me/olegartys Олег Лёвин]
 +
| [https://t.me/allisyonok Алиса Вернигор], [https://t.me/Lirikl Кирилл Ахметшин]
 +
|-
 +
| БПМИ209
 +
| [https://www.hse.ru/org/persons/307352167 Сергей Горшков]
 +
| [https://t.me/Egor_Gutrov Егор Гутров], [https://t.me/Sm_Anastassya Анастасия Смородинникова]
 +
|-
 +
| БПМИ2010
 +
| [https://t.me/stealthekb Александр Раков]
 +
| [https://t.me/kussyadil Адильхан Кусиденов], [https://t.me/uliana_win Ульяна Виноградова]
 +
|}
 +
 
 +
= Распределение студентов =
 +
 
 +
[https://docs.google.com/spreadsheets/d/1WuwVK63MY3VrJR0-Ws5yC_TzHugME7znkOVuqaikAs4/edit?usp=sharing Распределение студентов по учебным группам]
 +
 
 +
[https://forms.gle/HoAuPz5uu14GQRes7 Форма для желающих пройти курс в роли вольнослушателей].
 +
 
 +
= Полезная информация =
 +
 
 +
===Материалы===
 +
 
 +
[https://exuberant-arthropod-be8.notion.site/21-22-0f236f7d03c74dfbbd945f93651758a2 '''Конспекты от студентов курса''']
 +
 
 +
Конспекты от студентки курса: https://curious-sailor-21e.notion.site/3c09a4793eb04e869529c600a33ebc99?v=55c0a11de5164509900fcc92ad7415e4
 +
 
 +
===Слайды с лекций===
 +
* 10 декабря:
 +
** [https://caos.myltsev.ru/lectures/lecture-2021-12-10.pdf Динамическая память в Си].
 +
** [https://github.com/blackav/hse-caos-2020/blob/master/00-lectures/11-memory/lecture11.pdf ОЗУ и кеши].
 +
 
 +
===Как устроен курс===
 +
Курс идёт три модуля, со второго по четвёртый. Раз в неделю читается две лекции, после них, как правило, выдаётся ДЗ — 5 задач начальной стоимостью 100 баллов каждая. В общем случае, штраф за неверную посылку - 1 балл (но лучше ориентироваться на Run penalty).
 +
 
 +
Дедлайны: через 2 недели после лекции (23:59:59 четверга) стоимость задач уменьшается до 50 баллов, ещё через 2 недели — до 20 баллов. Такая стоимость остаётся до конца курса.
 +
 
 +
Примерно раз в три недели вместо одной из лекций происходит контрольная.
 +
 
 +
За работу на семинарах преподаватель выставляет семинарские баллы на своё усмотрение. Можно посещать семинары любых групп в любом количестве. За каждую неделю (от лекции до лекции) студент может получить в совокупности не более 200 семинарских баллов.
 +
 
 +
{| class="wikitable"
 +
|-
 +
! Набрано баллов !! Накопленная оценка
 +
|-
 +
| 0 || 1
 +
|-
 +
| 1500 || 2
 +
|-
 +
| 2500 || 3
 +
|-
 +
| 4500 || 4
 +
|-
 +
| 7000 || 5
 +
|-
 +
| 9500 || 6
 +
|}
 +
 
 +
Шкала оценок 6..10 устроена следующим образом: берётся максимальный суммарный балл <em>max</em> за решение ДЗ и КР (без бонусов), набранный хотя бы одним студентом. Диапазон <em>score_range</em> = 9500..<em>max</em> разбивается на 5 градаций [T6, T7, T8, T9, T10], каждая шириной в (<em>max</em> - 9500) / 5 баллов.
 +
 
 +
Накопленная оценка выставляется так. Для каждого студента берётся полная сумма баллов <em>personal_sum</em> с учётом ДЗ (включая бонусные), КР и семинарские баллы.
 +
* Если <em>personal_sum</em> меньше 9500, то в соответствии с таблицей выставляется оценка 1..5.
 +
* Если <em>personal_sum</em> попадает в интервал <em>score_range</em>, то выставляется оценка соответствующей градации.
 +
* Иначе выставляется накопленная оценка 10.
 +
 
 +
В июне будет экзамен сразу по всему курсу. Итоговая оценка вычисляется как (0.4 × зкзамен + 0.6 × накоп). Перед экзаменом будет объявлен порог накопленных баллов, выше которого студент имеет право автоматом получить накопленную оценку как итоговую и не приходить на экзамен. Ожидается, что порог будет около оценки 8, но это не точно.
 +
 
 +
= Настройка рабочего окружения =
 +
 
 +
===Виртуальная машина (VirtualBox)===
 +
[https://caos.myltsev.ru/hse-caos-xubuntu.ova Образ виртуальной машины]
 +
 
 +
Рекомендуется скачать образ и установить его в эмулятор [https://www.virtualbox.org/ VirtualBox]. Логин-пароль xubuntu/xubuntu, можно делать sudo.
 +
 
 +
===Виртуальная машина (qemu)===
 +
 
 +
'''Проверялось только на MacOS 11.6.1.'''
 +
 
 +
* Установите qemu: <code>brew install qemu</code>
 +
* Загрузите и распакуйте архив с образом FS:
 +
<pre>
 +
wget -O xubuntu_caos_2021.qcow2.tar.gz https://caos.myltsev.ru/xubuntu_caos_2021.qcow2.tar.gz && \
 +
        tar zxvf xubuntu_caos_2021.qcow2.tar.gz
 +
</pre>
 +
* Запустите VM:
 +
<pre>
 +
QEMU_PATH=/usr/local/Cellar/qemu/6.1.0_1/bin/qemu-system-x86_64
 +
FS_IMAGE_PATH=xubuntu_caos_2021.qcow2
 +
 
 +
CPU_COUNT=2
 +
MEMORY_MB=2048
 +
 
 +
${QEMU_PATH} \
 +
-smp ${CPU_COUNT} \
 +
-m ${MEMORY_MB} \
 +
-name xubuntu_caos_2021 \
 +
-hda ${FS_IMAGE_PATH} \
 +
-accel hvf \
 +
-vga virtio \
 +
-display default,show-cursor=on \
 +
-usb \
 +
-device usb-tablet
 +
</pre>
 +
 
 +
Отобрать курсор у QEMU: <code>Ctrl+Alt+G</code> <br />
 +
Перейти в full-screen mode можно:
 +
:- передав опцию <code>--full-screen</code> при старте VM
 +
:- выбрав в меню <code>View->Full Screen</code>
 +
 
 +
===Получение доступа к учебному серверу===
 +
Если не получается настроить виртуальную машину (например, на Mac M1), то можно получить доступ к учебному серверу по ssh. Для этого необходимо сгенерировать ssh-ключ и заполнить [https://forms.gle/daPEGUMz9pajpb1F9 Google-форму].
 +
 
 +
Инструкции по генерации 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].
 +
 
 +
===Библиотека ввода-вывода===
 +
Библиотека ввода-вывода для ассемблера x86: [https://caos.myltsev.ru/simpleio_i686.S simpleio_i686.S]
 +
 
 +
Внутри виртуальной машины её можно скачать командой <code><nowiki>wget https://caos.myltsev.ru/simpleio_i686.S</nowiki></code>
 +
 
 +
Если получаете сообщение, что Wget не установлен на вашей системе (на Ubuntu Desktop по умолчанию нет), то установите его следующей командой: <code><nowiki>sudo apt install wget</nowiki></code>
 +
 
 +
===Docker для пользователей MacOS (intel based)===
 +
'''Проверялось на MacOS BigSur и Monterey'''
 +
 
 +
Загрузить сам докер можно отсюда: [https://docs.docker.com/get-docker/ тык]
 +
 
 +
Команда для запуска: <code><nowiki>docker run -it --rm -v `pwd`:/caos -w /caos ubuntu</nowiki></code>
 +
 
 +
В терминале заходите в свою папку с акосом и запускаете эту команду. После нее вы начинаете работать с контейнером Ubuntu в папке /caos, где будет все содержимое вашей папки в основной ОС.
 +
Изменять содержимое внутри /caos можно и изнутри контейнера, и снаружи, изменения будут видны и там и там.
 +
 
 +
Внутри контейнера стоит установить gcc-multilib, без неё не заведётся <code><nowiki>apt update && apt install -y gcc-multilib</nowiki></code>
 +
 
 +
Теперь вы можете писать код внутри своей любимой IDE (запущенной напрямую в вашей ОС, например VSCode), а компилить и запускать в докере через терминал.
 +
 
 +
Если будут трудности, то можно писать [https://t.me/thomasparovoz мне в тг], постараюсь помочь.
 +
 
 +
===Установка Clion в Linux-подобные системы===
 +
'''Проверялось на Ubuntu 20.04.03 LTS и 21.10'''
 +
 
 +
Я рекомендую устанавливать в Linux системы IDE от Jetbrains через их утилиту Jetbrains Toolbox, чтобы было проще в дальнейшем обновляться.
 +
 
 +
Предварительно надо установить Curl, если вы этого не сделали ранее: <code><nowiki>sudo apt install curl</nowiki></code>
 +
 
 +
Для этого переходим в терминале в домашнюю папку и выполняем установку следующими командами:
 +
:- <code><nowiki>curl -fsSL https://raw.githubusercontent.com/nagygergo/jetbrains-toolbox-install/master/jetbrains-toolbox.sh | bash</nowiki></code>
 +
:- <code><nowiki>cd /opt/jetbrains-toolbox</nowiki></code>
 +
:- <code><nowiki>./jetbrains-toolbox</nowiki></code>
 +
 
 +
Теперь установим всё необходимое, чтобы у нас нормально работал Clion после установки:
 +
:- <code><nowiki>sudo apt-get install build-essential</nowiki></code>
 +
 
 +
:- <code><nowiki>sudo snap install cmake --classic</nowiki></code>
 +
 
 +
Далее нужно установить оттуда Clion и авторизоваться в нём, интерфейс утилиты дружелюбный и интуитивно понятный.
 +
 
 +
Если будут трудности, то можно писать [https://t.me/thomasparovoz мне в тг], постараюсь помочь.

Текущая версия на 14:44, 15 февраля 2022


Важные ссылки

Вход в Ejudge

Телеграм-канал с объявлениями

Телеграм-чат курса

Лекции и семинары на Ютюбе

Стайлгайд для языка Си

Форма для фидбека

Чаты групп

Группа Telegram-чат
БПМИ201 https://t.me/joinchat/LnOwQ-Z6HAo2OTg6
БПМИ202 https://t.me/joinchat/OMRB-ZOwXXBhODBi
БПМИ203 https://t.me/joinchat/kyFY_eIp60cyODRi
БПМИ204 https://t.me/joinchat/RTey5l_q9LMyODIy
БПМИ205 https://t.me/joinchat/jw2Z5v5R0Es3OTli
БПМИ206 https://t.me/joinchat/eH0j31yf0QZkNGIy
БПМИ207 https://t.me/joinchat/pVQNC9kwwfFiYWRi
БПМИ208 https://t.me/joinchat/C7Wj_Cz-swUzZDEy
БПМИ209 https://t.me/joinchat/cuqnvg2qofYyOTky
БПМИ2010 https://t.me/joinchat/gyvWlC31TZ83NmNi

Страница семинаров 207 группы
GitHub семинаров 208 группы

Преподаватели и учебные ассистенты

Группа Семинарист Ассистенты
БПМИ201 Александр Мыльцев Наби Гитинов, Игорь Балюк
БПМИ202 Игорь Минеев Владислав Хохлов
БПМИ203 Раиль Чабдаров Шамиль Аюпов, Александр Шитов
БПМИ204 Роман Курынин Никита Насонков, Иван Лущ
БПМИ205 Алексей Сальников Александр Богданов, Даниил Рубин
БПМИ206 Юрий Баранов Вячеслав Бобень, Михаил Стецюк
БПМИ207 Михаил Филитов Вадим Дудкин, Александр Стрыгин
БПМИ208 Олег Лёвин Алиса Вернигор, Кирилл Ахметшин
БПМИ209 Сергей Горшков Егор Гутров, Анастасия Смородинникова
БПМИ2010 Александр Раков Адильхан Кусиденов, Ульяна Виноградова

Распределение студентов

Распределение студентов по учебным группам

Форма для желающих пройти курс в роли вольнослушателей.

Полезная информация

Материалы

Конспекты от студентов курса

Конспекты от студентки курса: https://curious-sailor-21e.notion.site/3c09a4793eb04e869529c600a33ebc99?v=55c0a11de5164509900fcc92ad7415e4

Слайды с лекций

Как устроен курс

Курс идёт три модуля, со второго по четвёртый. Раз в неделю читается две лекции, после них, как правило, выдаётся ДЗ — 5 задач начальной стоимостью 100 баллов каждая. В общем случае, штраф за неверную посылку - 1 балл (но лучше ориентироваться на Run penalty).

Дедлайны: через 2 недели после лекции (23:59:59 четверга) стоимость задач уменьшается до 50 баллов, ещё через 2 недели — до 20 баллов. Такая стоимость остаётся до конца курса.

Примерно раз в три недели вместо одной из лекций происходит контрольная.

За работу на семинарах преподаватель выставляет семинарские баллы на своё усмотрение. Можно посещать семинары любых групп в любом количестве. За каждую неделю (от лекции до лекции) студент может получить в совокупности не более 200 семинарских баллов.

Набрано баллов Накопленная оценка
0 1
1500 2
2500 3
4500 4
7000 5
9500 6

Шкала оценок 6..10 устроена следующим образом: берётся максимальный суммарный балл max за решение ДЗ и КР (без бонусов), набранный хотя бы одним студентом. Диапазон score_range = 9500..max разбивается на 5 градаций [T6, T7, T8, T9, T10], каждая шириной в (max - 9500) / 5 баллов.

Накопленная оценка выставляется так. Для каждого студента берётся полная сумма баллов personal_sum с учётом ДЗ (включая бонусные), КР и семинарские баллы.

  • Если personal_sum меньше 9500, то в соответствии с таблицей выставляется оценка 1..5.
  • Если personal_sum попадает в интервал score_range, то выставляется оценка соответствующей градации.
  • Иначе выставляется накопленная оценка 10.

В июне будет экзамен сразу по всему курсу. Итоговая оценка вычисляется как (0.4 × зкзамен + 0.6 × накоп). Перед экзаменом будет объявлен порог накопленных баллов, выше которого студент имеет право автоматом получить накопленную оценку как итоговую и не приходить на экзамен. Ожидается, что порог будет около оценки 8, но это не точно.

Настройка рабочего окружения

Виртуальная машина (VirtualBox)

Образ виртуальной машины

Рекомендуется скачать образ и установить его в эмулятор VirtualBox. Логин-пароль xubuntu/xubuntu, можно делать sudo.

Виртуальная машина (qemu)

Проверялось только на MacOS 11.6.1.

  • Установите qemu: brew install qemu
  • Загрузите и распакуйте архив с образом FS:
wget -O xubuntu_caos_2021.qcow2.tar.gz https://caos.myltsev.ru/xubuntu_caos_2021.qcow2.tar.gz && \
        tar zxvf xubuntu_caos_2021.qcow2.tar.gz
  • Запустите VM:
QEMU_PATH=/usr/local/Cellar/qemu/6.1.0_1/bin/qemu-system-x86_64
FS_IMAGE_PATH=xubuntu_caos_2021.qcow2

CPU_COUNT=2
MEMORY_MB=2048

${QEMU_PATH} \
	-smp ${CPU_COUNT} \
	-m ${MEMORY_MB} \
	-name xubuntu_caos_2021 \
	-hda ${FS_IMAGE_PATH} \
	-accel hvf \
	-vga virtio \
	-display default,show-cursor=on \
	-usb \
	-device usb-tablet

Отобрать курсор у QEMU: Ctrl+Alt+G
Перейти в full-screen mode можно:

- передав опцию --full-screen при старте VM
- выбрав в меню View->Full Screen

Получение доступа к учебному серверу

Если не получается настроить виртуальную машину (например, на Mac M1), то можно получить доступ к учебному серверу по ssh. Для этого необходимо сгенерировать ssh-ключ и заполнить Google-форму.

Инструкции по генерации ssh-ключа: от git-scm, от github.

Библиотека ввода-вывода

Библиотека ввода-вывода для ассемблера x86: simpleio_i686.S

Внутри виртуальной машины её можно скачать командой wget https://caos.myltsev.ru/simpleio_i686.S

Если получаете сообщение, что Wget не установлен на вашей системе (на Ubuntu Desktop по умолчанию нет), то установите его следующей командой: sudo apt install wget

Docker для пользователей MacOS (intel based)

Проверялось на MacOS BigSur и Monterey

Загрузить сам докер можно отсюда: тык

Команда для запуска: docker run -it --rm -v `pwd`:/caos -w /caos ubuntu

В терминале заходите в свою папку с акосом и запускаете эту команду. После нее вы начинаете работать с контейнером Ubuntu в папке /caos, где будет все содержимое вашей папки в основной ОС. Изменять содержимое внутри /caos можно и изнутри контейнера, и снаружи, изменения будут видны и там и там.

Внутри контейнера стоит установить gcc-multilib, без неё не заведётся apt update && apt install -y gcc-multilib

Теперь вы можете писать код внутри своей любимой IDE (запущенной напрямую в вашей ОС, например VSCode), а компилить и запускать в докере через терминал.

Если будут трудности, то можно писать мне в тг, постараюсь помочь.

Установка Clion в Linux-подобные системы

Проверялось на Ubuntu 20.04.03 LTS и 21.10

Я рекомендую устанавливать в Linux системы IDE от Jetbrains через их утилиту Jetbrains Toolbox, чтобы было проще в дальнейшем обновляться.

Предварительно надо установить Curl, если вы этого не сделали ранее: sudo apt install curl

Для этого переходим в терминале в домашнюю папку и выполняем установку следующими командами:

- curl -fsSL https://raw.githubusercontent.com/nagygergo/jetbrains-toolbox-install/master/jetbrains-toolbox.sh | bash
- cd /opt/jetbrains-toolbox
- ./jetbrains-toolbox

Теперь установим всё необходимое, чтобы у нас нормально работал Clion после установки:

- sudo apt-get install build-essential
- sudo snap install cmake --classic

Далее нужно установить оттуда Clion и авторизоваться в нём, интерфейс утилиты дружелюбный и интуитивно понятный.

Если будут трудности, то можно писать мне в тг, постараюсь помочь.