Язык программирования Go: различия между версиями

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


== Быстрый старт ==
== Быстрый старт и сдача ДЗ ==


# Зарегистрируйтесь в [https://app.manytask.org/hse-go-2026-fall/ Manytask] — система создаст личный репозиторий, ссылка на него появится в разделе <code>My Repo</code>.
# Зарегистрируйтесь в [https://app.manytask.org/hse-go-2026-fall/ Manytask], откройте <code>My Repo</code> и склонируйте личный репозиторий, добавив [https://gitlab.manytask.org/-/user_settings/ssh_keys SSH-ключ].
# Добавьте [https://gitlab.manytask.org/-/profile/keys SSH-ключ в GitLab] и склонируйте личный репозиторий.
# Установите Go и выполните <code>make setup</code>. Версии инструментов указаны в <code>Makefile</code>.
# В корне репозитория выполните <code>make setup</code>, чтобы загрузить зависимости и инструменты курса.
# Решайте задачи в <code>main</code>. После проверки сделайте commit и push, результат смотрите в <code>My Submits</code>.
# Откройте условие задачи в <code>README.md</code>, реализуйте решение и запустите тесты и линтер.
# Сделайте commit и push, затем дождитесь результата в разделе <code>My Submits</code>.


Подробный маршрут первой сдачи с командами есть в задаче [https://gitlab.manytask.org/hse/go/public-2026-fall/-/tree/main/01-Hello-World/sum <code>sum</code>]. Для локальной проверки конкретной задачи используйте:
Все команды запускайте '''из корня личного репозитория'''. На Windows используйте '''Git Bash''' из [https://git-scm.com/install/windows Git for Windows]. Установка инструментов и первая сдача подробно описаны в [https://gitlab.manytask.org/hse/go/public-2026-fall/-/tree/main/01-Hello-World/sum инструкции sum].


* <code>go test ./sum/...</code> — тесты;
=== Проверка и форматирование ===
* <code>golangci-lint run ./sum/...</code> — линтер.


{| style="width:100%; margin:12px 0; background:#fff8e1; border:1px solid #f0d98c; border-left:5px solid #f2c037;"
Пример для <code>sum</code>; для другой задачи замените путь:
| style="padding:12px 14px;" | '''Важно про отправку.''' Manytask проверяет только задания, изменённые в последнем коммите. Повторную проверку можно запустить кнопкой <code>Retry</code> либо новым коммитом.
 
|}
<syntaxhighlight lang="bash">
make format 01-Hello-World/sum
go test ./01-Hello-World/sum/...
golangci-lint run ./01-Hello-World/sum/...
git add 01-Hello-World/sum/sum.go
git commit -m "Solve sum"
git push origin main
</syntaxhighlight>
 
Без <code>make</code> форматирование выполняется так:
 
<syntaxhighlight lang="bash">
golangci-lint run --no-config --enable-only wsl_v5 --fix ./01-Hello-World/sum/...
golangci-lint fmt ./01-Hello-World/sum/...
</syntaxhighlight>
 
'''Проверяются задачи из последнего коммита''': удобный порядок — задача → commit → push. Повторить проверку той же посылки можно кнопкой <code>Retry</code> в GitLab. При ошибке прочитайте лог <code>grade</code>; к вопросу в чате приложите название задачи, ссылку на посылку и текст ошибки.
 
=== Как получить новые ДЗ ===
 
Сохраните решения коммитом. При чистом <code>git status</code> выполните:
 
<syntaxhighlight lang="bash">
make rebase-on-public
git push --force-with-lease origin main
</syntaxhighlight>
 
Без <code>make</code>: один раз добавьте источник командой <code>git remote add public-repo git@gitlab.manytask.org:hse/go/public-2026-fall.git</code>, затем используйте <code>git fetch public-repo</code> и <code>git rebase public-repo/main</code>.


Если проверка не прошла, сначала прочитайте лог. Чтобы вам быстрее помогли, приложите к вопросу '''название задачи, ссылку на посылку, точный текст ошибки''' и коротко напишите, что уже пробовали сделать.
Rebase переносит ваши коммиты поверх новых материалов. При конфликте совместите изменения, выполните <code>git add путь/к/файлу</code> и <code>git rebase --continue</code>. Для отмены — <code>git rebase --abort</code>. Не используйте <code>--skip</code> вслепую: он пропускает ваш коммит. После rebase нужен <code>--force-with-lease</code>, при обычной сдаче — обычный push.


== Материалы курса ==
== Материалы курса ==
Строка 68: Строка 92:
== Лекции и ДЗ ==
== Лекции и ДЗ ==


Таблица пополняется по мере публикации материалов.
Таблица включает опубликованные и ближайшие запланированные материалы. Ссылки запланированного занятия могут заработать после публикации; доступность ДЗ проверяйте в Manytask.


{| class="wikitable" style="width:100%; text-align:center;"
{| class="wikitable" style="width:100%; text-align:center;"
Строка 77: Строка 101:
! Материалы
! Материалы
! ДЗ
! ДЗ
! Мягкий дедлайн
! Дедлайн 100%
! Жёсткий дедлайн
! Дедлайн 50%
|-
|-
| 1
| 1
Строка 87: Строка 111:
| 23.09.2026, 23:59
| 23.09.2026, 23:59
| 30.09.2026, 23:59
| 30.09.2026, 23:59
|-
| 2
| 15.09.2026
| style="text-align:left;" | Функции, типы, пакеты и память
| [http://pages.manytask.org/hse/go/public-2026-fall/02-language/lecture.slide.html Слайды]
| [https://gitlab.manytask.org/hse/go/public-2026-fall/-/tree/main/02-Language ДЗ 2]
| 30.09.2026, 23:59
| 07.10.2026, 23:59
|-
| 3
| 22.09.202
| style="text-align:left;" | Коллекции, строки и данные
| [http://pages.manytask.org/hse/go/public-2026-fall/03-collections/lecture.slide.html Слайды]
| [https://gitlab.manytask.org/hse/go/public-2026-fall/-/tree/main/03-Collections ДЗ 3]
| 07.10.2026, 23:59
| 14.10.2026, 23:59
|}
|}
Даты в последних двух колонках соответствуют ступеням <code>1.0</code> и <code>0.5</code> в настройках курса. Актуальную доступность задачи и коэффициент за срок сдачи смотрите в Manytask.


== Система оценки ==
== Система оценки ==

Версия от 13:31, 20 сентября 2026

Программирование на Go
ВШЭ · осень 2026

Материалы, дедлайны, правила сдачи и система оценивания курса — в одном месте. Все даты и время указаны по Москве.

💬 Чат курса
Объявления и общие вопросы
🧪 Manytask
Задания, посылки и текущие баллы
📚 Репозиторий курса
Условия задач, код лекций и документация
🎓 Слайды
Материалы опубликованных лекций

Быстрый старт и сдача ДЗ

  1. Зарегистрируйтесь в Manytask, откройте My Repo и склонируйте личный репозиторий, добавив SSH-ключ.
  2. Установите Go и выполните make setup. Версии инструментов указаны в Makefile.
  3. Решайте задачи в main. После проверки сделайте commit и push, результат смотрите в My Submits.

Все команды запускайте из корня личного репозитория. На Windows используйте Git Bash из Git for Windows. Установка инструментов и первая сдача подробно описаны в инструкции sum.

Проверка и форматирование

Пример для sum; для другой задачи замените путь:

make format 01-Hello-World/sum
go test ./01-Hello-World/sum/...
golangci-lint run ./01-Hello-World/sum/...
git add 01-Hello-World/sum/sum.go
git commit -m "Solve sum"
git push origin main

Без make форматирование выполняется так:

golangci-lint run --no-config --enable-only wsl_v5 --fix ./01-Hello-World/sum/...
golangci-lint fmt ./01-Hello-World/sum/...

Проверяются задачи из последнего коммита: удобный порядок — задача → commit → push. Повторить проверку той же посылки можно кнопкой Retry в GitLab. При ошибке прочитайте лог grade; к вопросу в чате приложите название задачи, ссылку на посылку и текст ошибки.

Как получить новые ДЗ

Сохраните решения коммитом. При чистом git status выполните:

make rebase-on-public
git push --force-with-lease origin main

Без make: один раз добавьте источник командой git remote add public-repo git@gitlab.manytask.org:hse/go/public-2026-fall.git, затем используйте git fetch public-repo и git rebase public-repo/main.

Rebase переносит ваши коммиты поверх новых материалов. При конфликте совместите изменения, выполните git add путь/к/файлу и git rebase --continue. Для отмены — git rebase --abort. Не используйте --skip вслепую: он пропускает ваш коммит. После rebase нужен --force-with-lease, при обычной сдаче — обычный push.

Материалы курса

Преподаватели

Общие вопросы и объявления — в чате курса. По вопросам семинара ориентируйтесь на преподавателя своей группы.

Роль Группа 1 Группа 2 Группа 3 Группа 4
чат
Группа 5
Лектор Иванов Максим Юрьевич
Семинарист Иванов Максим Оганисян Эдгар Оганисян Эдгар Даниэль Хайбулин Кирилл Шубников

Лекции и ДЗ

Таблица включает опубликованные и ближайшие запланированные материалы. Ссылки запланированного занятия могут заработать после публикации; доступность ДЗ проверяйте в Manytask.

Дата Тема Материалы ДЗ Дедлайн 100% Дедлайн 50%
1 08.09.2026 Введение Слайды ДЗ 1 23.09.2026, 23:59 30.09.2026, 23:59
2 15.09.2026 Функции, типы, пакеты и память Слайды ДЗ 2 30.09.2026, 23:59 07.10.2026, 23:59
3 22.09.202 Коллекции, строки и данные Слайды ДЗ 3 07.10.2026, 23:59 14.10.2026, 23:59

Даты в последних двух колонках соответствуют ступеням 1.0 и 0.5 в настройках курса. Актуальную доступность задачи и коэффициент за срок сдачи смотрите в Manytask.

Система оценки

Итоговая оценка

Оитог = min(10, 0.6 × ДЗ + 0.1 × Семинары + 0.3 × Экзамен + 0.1 × Бонусы)
Компонент Вес Как считается
ДЗ 60% Сумма баллов по всем обычным домашним заданиям относительно максимально возможной суммы, нормированная к шкале 0–10. БДЗ в эту сумму не входят.
Семинары 10% Посещение и активность на семинарах, 0–10 баллов.
Экзамен 30% Оценка за итоговый экзамен, 0–10 баллов.
Бонусы до +10% Дополнительные баллы за активность, помощь другим студентам, доклады и другие полезные инициативы, 0–10 баллов.

Автоматы

Итоговая оценка может быть выставлена автоматически, без сдачи экзамена. Нужно выполнить все условия одной строки:

Оценка Семинары ДЗ при 1 зачтённом БДЗ ДЗ при 2 зачтённых БДЗ
10 9+ 95% 85%
9 9+ 90% 80%
8 8+ 85% 75%

Процент по ДЗ рассчитывается как отношение набранных баллов к максимально возможным по всем обычным домашним заданиям.

Правила

  • Оценка округляется арифметически один раз — при выставлении итоговой оценки.
  • При выявлении списывания соответствующая ДЗ или БДЗ аннулируется целиком. Повторное нарушение может привести к более серьёзным последствиям.

Большие домашние задания (БДЗ)

В течение курса предусмотрено 2 больших домашних задания. Они учитываются при получении автомата, но не входят в компонент «ДЗ» итоговой формулы.

  • Дедлайн на выполнение — 3 недели с момента выдачи.
  • Работы проверяются вручную преподавателями с подробным ревью кода.
  • Оценка 1.0 от автоматических тестов не гарантирует зачёт БДЗ: финальная оценка выставляется только после ручной проверки.

Как проверяется БДЗ

Для проверки создаётся issue под названием BHW-1: Check или BHW-2: Check.

Результат Что происходит
БДЗ зачтено В issue появляется комментарий о зачёте, issue закрывается, в Manytask выставляется оценка 5 за БДЗ.
Нужны исправления Issue остаётся открытым, в комментарии перечисляются необходимые правки.

Экзамен

К экзамену необходимо выполнить экзаменационное задание. Ссылка на него появится в таблице после публикации.

Важно. Оценка 1.0 в Manytask означает только то, что задание прошло автоматическое тестирование.

Сам экзамен проходит в формате индивидуальной беседы по решению — практически онлайн-ревью кода. Преподаватель задаёт вопросы о решении и использованных паттернах. При оценивании учитываются:

  • критерии, указанные в README.md задания;
  • способность студента объяснить, как работает его код.