CAOS-2022

Материал из Wiki - Факультет компьютерных наук
Перейти к: навигация, поиск

Вход в тестирующую систему: https://caos.myltsev.ru

Материалы лекций: https://caos.myltsev.ru/lectures/

Чатик курса

Канал с объявлениями

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

Конспект лекций прошлого года от студентов

Чатики и преподаватели по группам

Лектор — Александр Мыльцев @myltsev

Ассистент лектора — Фёдор Быков @placeholderplaceholder

Группа Чатик Преподаватель Ассистенты
211 чат Грибов Филипп @grphil Козлова Екатерина @h1de0us, Романова Анастасия @romanova_nastya
212 чат Минеев Игорь @objatie_groba Гончаров Фёдор @fmgoncharov, Разин Арслан @CrazyBadRedCat
213 чат Александр Осадчий @aiosadchy Алашеев Иван @yorky0, Артеменко Михаил @Michicosun
214 чат Сальников Алексей @a_salnikov Афанасьева Анастасия @afnastya, Шапрунов Кирилл @shapkk
215 чат Сафронов Евгений @youagain Неудачина Ева @cocosinca, Сазонов Михаил @worldstonekeep
216 чат Филитов Михаил @iiixphillxiii Осташов Денис @igreetyou, Петренко Ксения @KseniaPetrenko
217 чат Галицкий Борис @Mr_galitskii Прокопчук Леонид @leoproko_work, Киселев Максим @profilehooks
218 чат Пономарев Алексей @Lexolordan Ершов Иван @tutugarin, Константинов Андрей @intergalacticshaverma
219 чат Чабдаров Раиль @Exile333 Жукова Дарья @ch3repashka, Шитов Даниил @jpepper
2110 чат Галицкий Борис @Mr_galitskii Драганов Александр @nomapunk, Дудкин Вадим @vadim1705

Ссылка на страничку 216 группы

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

kks

https://github.com/darkkeks/kks

kks это консольная утилитка для курса, выполняющая много вещей, среди которых можно выделить несколько основных:

  1. Скачивание задач/сэмплов/контрольных с помощью одной команды. То же самое со сдачей задач: можно сдать и получить сразу результат.
  2. Генерация тестов с помощью скриптов и их тестирование.
  3. Просмотр рейтинга (как общего, так и по группам) в удобном формате

Пример использования:

kks sync  # скачивание задач
# тут вы написали свой код
kks test --sample  # тестирование
kks submit

Больше примеров можно посмотреть в репозитории

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

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

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

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

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

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

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

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), а компилить и запускать в докере через терминал.

Docker для пользователей MacOS на Apple Silicon

Добавьте в .bashrc или .zshrc:

export DOCKER_DEFAULT_PLATFORM=linux/amd64

После этого перезапустите Docker.

Вариант2:

  • Скачиваем docker.
  • Переходим в папку с задачами в терминале.
  • Выполняем docker run --platform linux/amd64 -it --rm -v `pwd`:/caos -w /caos ubuntu
  • Делаем apt update
  • Делаем apt -y install build-essential gcc-multilib
  • Собираем задачки командой gcc -m32 -g задача.S simpleio_i686.S

CLion

Для начала скачайте CLion с официального сайта и устанавите его.

Если у вас не linux: вар. 1 - docker

Скачайте и установите docker desktop. Добейтесь того, чтобы у вас заработал docker hello world (docker run --rm hello-world).

Если у вас MacOs на арме сделайте то, что написано выше.

После этого нам потребуется специальный образ с необходимыми для курса библиотеками и программами. Создайте файл с именем Dockerfile и следующим содержанием:

FROM ubuntu:latest

RUN apt update && apt install -y gcc-multilib gdb make cmake g++
WORKDIR /caos

В директории с этим запустите эту команду чтобы собрать образ: docker build -t caos . и дождитесь пока она выполнится.

После этого откройте окно настроек, перейдите в пункт Build, Execution, Deployment -> Toolchains и добавьте новый Toolchain с типом Docker. В поле Image укажите caos:latest, а остальные поля должны определиться автоматически. Поместите этот Toolchain первым в списке сделав его default'ным.

Если у вас не linux: вар. 2 - wsl (Windows only)

Установите wsl, выберите дистрибутив Ubuntu. Внутри wsl поставьте необходимые пакеты (sudo apt install gcc-multilib make cmake g++ gdb.

После этого откройте окно настроек, перейдите в пункт Build, Execution, Deployment -> Toolchains и добавьте новый Toolchain с типом WSL. Все поля должны определиться автоматически. Поместите этот Toolchain первым в списке сделав его default'ным.

Далее

Создайте проект (можете выбрать C Executable, но это не особо принципиально) Скачайте simpleio_i686.S и поместите в корень проекта.

В CMakeLists.txt удалите всё и вставьте это:

cmake_minimum_required(VERSION 3.10)
project(caos ASM)

add_compile_options(-m32)
add_link_options(-m32)

file(GLOB_RECURSE sources_list LIST_DIRECTORIES true ./*)
foreach(file ${sources_list})
    IF(${file} MATCHES ".S$" AND NOT ${file} MATCHES "simpleio_i686.S")
        get_filename_component(X ${file} NAME)
        add_executable(${X} ${file} simpleio_i686.S)
    endif()
endforeach()

Сделайте Reload Cmake project (Внизу выберите вкладку Cmake и нажмите слева на кнопку обновления с двумя стрелочками).

Этот конфиг написан таким образом, чтобы эффективно работать совместно с kks. На каждый .S файл (кроме библиотеке simpleio_i686.S) он создаст цель для сборки. После того как у вас в проекте появляется новый файл (например после kks sync) нужно делать Reload Cmake project. Выберите справа сверху интересующий вас файл и запускайте.

Подсветка синтаксиса

Если она работает не правильно, откройте файл simpleio_i686.S, нажмите на его вкладку в списке открытых файлов сверху правой кнопкой мыши и выберите "Associate file type". В списке выберите Assembly Language.

Дебагер

Дебагер работает из-коробки.

Чтобы узнать значения регистра напишите в поле снизу строку $eax и нажмите на кнопку "+".

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

Контрольные мероприятия

Когда Что По какому материалу
Раз в три недели контрольная работа по предыдущим трём ДЗ
В конце 3-го модуля экзамен по 2-му и 3-му модулям
В конце 4-го модуля экзамен по 4-му модулю

Формула оценки

За курс в зачетку выставляется 2 оценки: в конце 3 модуля O3 и в конце 4 модуля O4 - по следующим формулам:

  • O3 = 0.6 * H3 + 0.4 * Э3
  • O4 = 0.5 * O3 + 0.3 * H4 + 0.2 * Э4

Hi и Эi - накопленная оценка и оценка за экзамен в конце модуля i, соответственно. Эти оценки дробные от 0 до 10. Оценка за 3 модуль O3 учитывается в формуле для 4 модуля также в неокругленном виде.


Накопленная оценка Hi = ДЗi + Сi

Накопленная оценка (от 0 до 10) складывается из оценки за ДЗ (от 0 до 9) и оценки за семинары (от 0 до 1), все оценки дробные.

  • оценка за ДЗ дробная, от 0 до 9 баллов, получается из вашего общего балла, набранного в тестирующей системе. Общий балл в тестирующей системе - сумма баллов за все выданные контесты, включая домашние, контрольные, дорешки контрольных и бонусные.
    • оценки за ДЗ от 0.0 до 6.0 ставятся по линейной шкале, если в тестирующей системе набрано от 0 до Ki баллов;
    • оценки за ДЗ от 6.0 до 9.0 ставятся по рейтинговой линейной шкале, если набрано более Ki баллов. Подробнее, берётся максимальный балл max_score (сумма по всем контестам, кроме бонусных), набранный хотя бы одним студентом. Тогда, если Ki < your_score, то ваша оценка за ДЗ равна min(9, 6 + 3 * (your_score - Ki) / (max_score - Ki)), где your_score - ваш общий балл в тестирующей системе (включая бонусные контесты)
  • оценка за семинары дробная, от 0 до 1 балла, выставляется по правилам, оговоренным семинаристом

Значения порогов Ki следующие:

  • в 3 модуле: K3 = 5000
  • в 4 модуле: K4 = 3500


Округление арифметическое, применяется только в самом конце к итоговым оценкам O3 и O4.

"Автомат" выдаётся, если оценки за ДЗ и семинары не ниже некоторых пороговых значений, которые будут объявлены дополнительно.

Записи лекций

Записи лекций и семинаров на Яндекс-Диске

Когда Ссылка Конспекты
05.11 https://www.youtube.com/watch?v=NNfqpUp3nBo 01 02 03 04
12.11 https://www.youtube.com/watch?v=HscPRNxJPy0 05 06
19.11 https://www.youtube.com/watch?v=9WE3AKEdesw
26.11 https://www.youtube.com/watch?v=pMng13chjiE