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

Материал из Wiki - Факультет компьютерных наук
Перейти к: навигация, поиск
(Виртуальная машина: логин-пароль)
м (Добавлена ссылка на материалы 204 группы)
 
(не показаны 33 промежуточные версии 10 участников)
Строка 1: Строка 1:
  
 
+
== Важные ссылки ==
== Три главные ссылки ==
+
[[CAOS-2021/Exam|Информация про экзамен]]
  
 
[https://caos.myltsev.ru Вход в Ejudge]
 
[https://caos.myltsev.ru Вход в Ejudge]
Строка 8: Строка 8:
  
 
[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 Форма для фидбека]
  
 
== Чаты групп ==
 
== Чаты групп ==
Строка 20: Строка 26:
 
|-
 
|-
 
| БПМИ202
 
| БПМИ202
|  
+
| https://t.me/joinchat/OMRB-ZOwXXBhODBi
 
|-
 
|-
 
| БПМИ203
 
| БПМИ203
Строка 48: Строка 54:
  
 
[[CAOS-2021/207_seminars|Страница семинаров 207 группы]]
 
[[CAOS-2021/207_seminars|Страница семинаров 207 группы]]
 +
<br />
 +
[https://github.com/olegartys/hse_caos_208 GitHub семинаров 208 группы]
 +
<br />
 +
[https://github.com/kurynin/hse.caos.2021-2022.practice GitHub семинаров 204 группы]
  
 
= Преподаватели и учебные ассистенты =
 
= Преподаватели и учебные ассистенты =
Строка 91: Строка 101:
 
| БПМИ209
 
| БПМИ209
 
| [https://www.hse.ru/org/persons/307352167 Сергей Горшков]
 
| [https://www.hse.ru/org/persons/307352167 Сергей Горшков]
| [https://t.me/Egor_Gutrov Егор Гутров], [https://t.me/AraTiCho Ваге Оганнисян]
+
| [https://t.me/Egor_Gutrov Егор Гутров], [https://t.me/Sm_Anastassya Анастасия Смородинникова]
 
|-
 
|-
 
| БПМИ2010
 
| БПМИ2010
Строка 106: Строка 116:
 
= Полезная информация =
 
= Полезная информация =
  
===Виртуальная машина===
+
===Материалы===
[https://caos.myltsev.ru/hse-caos-xubuntu.ova Образ виртуальной машины]
+
  
Рекомендуется скачать образ и установить его в эмулятор [https://www.virtualbox.org/ VirtualBox]. Логин-пароль xubuntu/xubuntu, можно делать sudo.
+
[https://exuberant-arthropod-be8.notion.site/21-22-0f236f7d03c74dfbbd945f93651758a2 '''Конспекты от студентов курса''']
  
Если не получается настроить виртуальную машину (например, на Mac M1), то можно получить доступ к учебному серверу по ssh. Для этого необходимо сгенерировать ssh-ключ и заполнить [https://forms.gle/daPEGUMz9pajpb1F9 Google-форму].
+
Конспекты от студентки курса: https://curious-sailor-21e.notion.site/3c09a4793eb04e869529c600a33ebc99?v=55c0a11de5164509900fcc92ad7415e4
  
Инструкции по генерации 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].
+
===Слайды с лекций===
 
+
* 10 декабря:
===Материалы===
+
** [https://caos.myltsev.ru/lectures/lecture-2021-12-10.pdf Динамическая память в Си].
Библиотека ввода-вывода для ассемблера x86: [https://caos.myltsev.ru/simpleio_i686.S simpleio_i686.S]
+
** [https://github.com/blackav/hse-caos-2020/blob/master/00-lectures/11-memory/lecture11.pdf ОЗУ и кеши].
 
+
Внутри виртуальной машины её можно скачать командой <code><nowiki>wget https://caos.myltsev.ru/simpleio_i686.S</nowiki></code>
+
  
 
===Как устроен курс===
 
===Как устроен курс===
Курс идёт три модуля, со второго по четвёртый. Раз в неделю читается две лекции, после них, как правило, выдаётся ДЗ — 5 задач начальной стоимостью 100 баллов каждая.
+
Курс идёт три модуля, со второго по четвёртый. Раз в неделю читается две лекции, после них, как правило, выдаётся ДЗ — 5 задач начальной стоимостью 100 баллов каждая. В общем случае, штраф за неверную посылку - 1 балл (но лучше ориентироваться на Run penalty).
  
Дедлайны: через 2 недели после выдачи стоимость задач уменьшается до 50 баллов, ещё через 2 недели — до 20 баллов. Такая стоимость остаётся до конца курса.
+
Дедлайны: через 2 недели после лекции (23:59:59 четверга) стоимость задач уменьшается до 50 баллов, ещё через 2 недели — до 20 баллов. Такая стоимость остаётся до конца курса.
  
 
Примерно раз в три недели вместо одной из лекций происходит контрольная.
 
Примерно раз в три недели вместо одной из лекций происходит контрольная.
Строка 133: Строка 140:
 
! Набрано баллов !! Накопленная оценка
 
! Набрано баллов !! Накопленная оценка
 
|-
 
|-
| 500 || 1
+
| 0 || 1
 
|-
 
|-
 
| 1500 || 2
 
| 1500 || 2
Строка 146: Строка 153:
 
|}
 
|}
  
Оценки 7-10 выставляются по линейной шкале с учётом максимального количества набранных баллов за решение задач.
+
Шкала оценок 6..10 устроена следующим образом: берётся максимальный суммарный балл <em>max=17776</em> за решение ДЗ и КР (без бонусов), набранный хотя бы одним студентом. Диапазон <em>score_range</em> = 9500..17776 разбивается на 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.
 +
 
 +
24 июня будет экзамен сразу по всему курсу. Итоговая оценка вычисляется как (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 мне в тг], постараюсь помочь.

Текущая версия на 22:36, 29 июня 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 группы
GitHub семинаров 204 группы

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

Группа Семинарист Ассистенты
БПМИ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=17776 за решение ДЗ и КР (без бонусов), набранный хотя бы одним студентом. Диапазон score_range = 9500..17776 разбивается на 5 градаций [T6, T7, T8, T9, T10], каждая шириной в (max - 9500) / 5 баллов.

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

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

24 июня будет экзамен сразу по всему курсу. Итоговая оценка вычисляется как (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 и авторизоваться в нём, интерфейс утилиты дружелюбный и интуитивно понятный.

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