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

Материал из Wiki - Факультет компьютерных наук
Перейти к навигации Перейти к поиску
Добавил лекторов
 
Нет описания правки
 
(не показано 13 промежуточных версий 2 участников)
Строка 1: Строка 1:
== Преподаватели и учебные ассистенты ==
{| style="width:100%; margin:0 0 16px 0; background:#eefbff; border:1px solid #b8e6f2; border-left:6px solid #00add8;"
{| class="wikitable" style="text-align:center"
| style="padding:18px 20px;" |
<span style="font-size:180%; font-weight:700;">Программирование на Go</span><br>
<span style="font-size:110%;">ВШЭ · осень 2026</span><br><br>
Материалы, дедлайны, правила сдачи и система оценивания курса — в одном месте. Все даты и время указаны '''по Москве'''.
|}
 
{| style="width:100%; border-collapse:separate; border-spacing:6px; margin:0 0 12px 0;"
| style="width:50%; padding:12px 14px; vertical-align:top; background:#f8f9fa; border:1px solid #eaecf0;" | '''💬 [https://t.me/+irrVLXs6nXo1MDM6 Чат курса]'''<br><small>Объявления и общие вопросы</small>
| style="width:50%; padding:12px 14px; vertical-align:top; background:#f8f9fa; border:1px solid #eaecf0;" | '''🧪 [https://app.manytask.org/hse-go-2026-fall/ Manytask]'''<br><small>Задания, посылки и текущие баллы</small>
|-
| style="padding:12px 14px; vertical-align:top; background:#f8f9fa; border:1px solid #eaecf0;" | '''📚 [https://gitlab.manytask.org/hse/go/public-2026-fall Репозиторий курса]'''<br><small>Условия задач, код лекций и документация</small>
| style="padding:12px 14px; vertical-align:top; background:#f8f9fa; border:1px solid #eaecf0;" | '''🎓 [http://pages.manytask.org/hse/go/public-2026-fall Слайды]'''<br><small>Материалы опубликованных лекций</small>
|}
 
__TOC__
 
== Быстрый старт и сдача ДЗ ==
 
# Зарегистрируйтесь в [https://app.manytask.org/hse-go-2026-fall/ Manytask], откройте <code>My Repo</code> и склонируйте личный репозиторий, добавив [https://gitlab.manytask.org/-/user_settings/ssh_keys SSH-ключ].
# Установите Go и выполните <code>make setup</code>. Версии инструментов указаны в <code>Makefile</code>.
# Решайте задачи в <code>main</code>. После проверки сделайте commit и push, результат смотрите в <code>My Submits</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>sum</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.
 
== Материалы курса ==
 
* [https://gitlab.manytask.org/hse/go/public-2026-fall Репозиторий с лекциями и заданиями]
* [http://pages.manytask.org/hse/go/public-2026-fall Слайды всех опубликованных лекций]
* [https://app.manytask.org/hse-go-2026-fall/ Manytask]
* Публичные результаты TODO
 
== Преподаватели ==
 
Общие вопросы и объявления — в [https://t.me/+irrVLXs6nXo1MDM6 чате курса]. По вопросам семинара ориентируйтесь на преподавателя своей группы.
 
{| class="wikitable" style="width:100%; text-align:center;"
|-
! style="width:14%;" | Роль
! Группа 1
! Группа 2
! Группа 3
! Группа 4<br><small>[https://t.me/+UK13ntnO4Sw3OGYy чат]</small>
! Группа 5
|-
! Лектор
| colspan="5" | [https://t.me/imaximus3 Иванов Максим Юрьевич]
|-
! Семинарист
| [https://t.me/imaximus3 Иванов Максим]
| [https://t.me/edgar_oganisian Оганисян Эдгар]
| [https://t.me/edgar_oganisian Оганисян Эдгар]
| [https://t.me/kiDaniel Даниэль Хайбулин]
| Кирилл Шубников
|}
 
== Лекции и ДЗ ==
 
Таблица включает опубликованные и ближайшие запланированные материалы. Ссылки запланированного занятия могут заработать после публикации; доступность ДЗ проверяйте в Manytask.
 
{| class="wikitable" style="width:100%; text-align:center;"
|-
! №
! Дата
! Тема
! Материалы
! ДЗ
! Дедлайн 100%
! Дедлайн 50%
|-
| 1
| 08.09.2026
| style="text-align:left;" | Введение
| [http://pages.manytask.org/hse/go/public-2026-fall/01-intro/lecture.slide.html Слайды]
| [https://gitlab.manytask.org/hse/go/public-2026-fall/-/tree/main/01-Hello-World ДЗ 1]
| 23.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.2026
| 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.
 
== Система оценки ==
 
=== Итоговая оценка ===
 
{| style="width:100%; margin:8px 0 14px 0; background:#eefbff; border:1px solid #b8e6f2;"
| style="padding:14px; text-align:center;" | <span style="font-size:125%;">'''О<sub>итог</sub> = min(10, 0.6 × ДЗ + 0.1 × Семинары + 0.3 × Экзамен + 0.1 × Бонусы)'''</span>
|}
 
{| class="wikitable" style="width:100%;"
|-
! style="width:18%;" | Компонент
! style="width:12%; text-align:center;" | Вес
! Как считается
|-
! ДЗ
| style="text-align:center;" | 60%
| Сумма баллов по всем обычным домашним заданиям относительно максимально возможной суммы, нормированная к шкале 0–10. '''БДЗ в эту сумму не входят.'''
|-
! Семинары
| style="text-align:center;" | 10%
| Посещение и активность на семинарах, 0–10 баллов.
|-
! Экзамен
| style="text-align:center;" | 30%
| Оценка за итоговый экзамен, 0–10 баллов.
|-
! Бонусы
| style="text-align:center;" | до +10%
| Дополнительные баллы за активность, помощь другим студентам, доклады и другие полезные инициативы, 0–10 баллов.
|}
 
=== Автоматы ===
 
Итоговая оценка может быть выставлена автоматически, без сдачи экзамена. Нужно выполнить '''все условия одной строки''':
 
{| class="wikitable" style="width:100%; text-align:center;"
|-
! Оценка
! Семинары
! ДЗ при 1 зачтённом БДЗ
! ДЗ при 2 зачтённых БДЗ
|-
| '''10''' || 9+ || 95% || 85%
|-
| '''9''' || 9+ || 90% || 80%
|-
|-
|| '''Лектор''' ||colspan="8"| [https://t.me/imaximus3 Иванов Максим Юрьевич]
| '''8''' || 8+ || 85% || 75%
|}
 
Процент по ДЗ рассчитывается как отношение набранных баллов к максимально возможным по всем обычным домашним заданиям.
 
=== Правила ===
 
* Оценка округляется арифметически '''один раз''' — при выставлении итоговой оценки.
* При выявлении списывания соответствующая ДЗ или БДЗ аннулируется целиком. Повторное нарушение может привести к более серьёзным последствиям.
 
== Большие домашние задания (БДЗ) ==
 
В течение курса предусмотрено '''2 больших домашних задания'''. Они учитываются при получении автомата, но не входят в компонент «ДЗ» итоговой формулы.
 
* Дедлайн на выполнение — '''3 недели''' с момента выдачи.
* Работы проверяются '''вручную преподавателями''' с подробным ревью кода.
* Оценка <code>1.0</code> от автоматических тестов '''не гарантирует зачёт БДЗ''': финальная оценка выставляется только после ручной проверки.
 
=== Как проверяется БДЗ ===
 
Для проверки создаётся issue под названием <code>BHW-1: Check</code> или <code>BHW-2: Check</code>.
 
{| class="wikitable" style="width:100%;"
|-
|-
|| '''Номер группы''' || [Группа 1] || [Группа 2] || [Группа 3]  || [Группа 4]
! Результат
! Что происходит
|-
|-
|| '''Семинаристы''' || [https://t.me/imaximus3 Иванов Максим] || [https://t.me/ Оганисян Эдгар] || [https://t.me/@edgar_oganisian Оганисян Эдгар]  || [https://t.me/kiDaniel Даниэль Хайбулин]
! БДЗ зачтено
| В issue появляется комментарий о зачёте, issue закрывается, в Manytask выставляется оценка 5 за БДЗ.
|-
|-
! Нужны исправления
| Issue остаётся открытым, в комментарии перечисляются необходимые правки.
|}
== Экзамен ==
К экзамену необходимо выполнить экзаменационное задание. Ссылка на него появится в таблице после публикации.
{| style="width:100%; margin:12px 0; background:#fff8e1; border:1px solid #f0d98c; border-left:5px solid #f2c037;"
| style="padding:12px 14px;" | '''Важно.''' Оценка <code>1.0</code> в Manytask означает только то, что задание прошло автоматическое тестирование.
|}
|}
Сам экзамен проходит в формате индивидуальной беседы по решению — практически онлайн-ревью кода. Преподаватель задаёт вопросы о решении и использованных паттернах. При оценивании учитываются:
* критерии, указанные в <code>README.md</code> задания;
* способность студента объяснить, как работает его код.

Текущая версия от 16:16, 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.2026 Коллекции, строки и данные Слайды ДЗ 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 задания;
  • способность студента объяснить, как работает его код.