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

Материал из Wiki - Факультет компьютерных наук
Перейти к навигации Перейти к поиску
Нет описания правки
Нет описания правки
Строка 1: Строка 1:
Чат курса: https://t.me/+irrVLXs6nXo1MDM6
{| style="width:100%; margin:0 0 16px 0; background:#eefbff; border:1px solid #b8e6f2; border-left:6px solid #00add8;"
| 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/-/profile/keys SSH-ключ в GitLab] и склонируйте личный репозиторий.
# В корне репозитория выполните <code>make setup</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>]. Для локальной проверки конкретной задачи используйте:
 
* <code>go test ./sum/...</code> — тесты;
* <code>golangci-lint run ./sum/...</code> — линтер.


{| class="wikitable" style="text-align:center"
{| style="width:100%; margin:12px 0; background:#fff8e1; border:1px solid #f0d98c; border-left:5px solid #f2c037;"
|-
| style="padding:12px 14px;" | '''Важно про отправку.''' Manytask проверяет только задания, изменённые в последнем коммите. Повторную проверку можно запустить кнопкой <code>Retry</code> либо новым коммитом.
! Группа !! Группа 1 || Группа 2 || Группа 3 || [https://t.me/+UK13ntnO4Sw3OGYy Группа 4] || Группа 5
|-
|| Лектор ||colspan="4"| [https://t.me/imaximus3 Иванов Максим Юрьевич]
|-
|| Семинарист || [https://t.me/imaximus3 Иванов Максим] || [https://t.me/edgar_oganisian Оганисян Эдгар] || [https://t.me/edgar_oganisian Оганисян Эдгар] || [https://t.me/kiDaniel Даниэль Хайбулин] || Кирилл Шубников
|}
|}
Если проверка не прошла, сначала прочитайте лог. Чтобы вам быстрее помогли, приложите к вопросу '''название задачи, ссылку на посылку, точный текст ошибки''' и коротко напишите, что уже пробовали сделать.


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


* [https://gitlab.manytask.org/hse/go/public-2026-fall Репозиторий с лекциями и заданиями]
* [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]
* [https://app.manytask.org/hse-go-2026-fall/ Manytask]
* Публичные результаты TODO
* Публичные результаты 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 Даниэль Хайбулин]
| Кирилл Шубников
|}


== Лекции и ДЗ ==
== Лекции и ДЗ ==


{| class="wikitable" style="text-align:center"
Таблица пополняется по мере публикации материалов.
 
{| class="wikitable" style="width:100%; text-align:center;"
|-
|-
! № !! Дата !! Тема !! Материалы !! ДЗ !! Мягкий дедлайн !! Жесткий дедлайн
! №
|-
! Дата
|| 1 || 08.09.2026 || Введение || [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:59 23.09.2026 || 23:59 30.09.2026
! Тема
! Материалы
! ДЗ
! Мягкий дедлайн
! Жёсткий дедлайн
|-
|-
| 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
|}
|}


Строка 32: Строка 93:
=== Итоговая оценка ===
=== Итоговая оценка ===


'''О<sub>итог</sub> = min(10, 0.6 × ДЗ + 0.1 × Семинары + 0.3 × Экзамен + 0.1 × Бонусы)'''
{| 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%;"
* '''ДЗ''' — сумма баллов по всем обычным домашним заданиям относительно максимально возможной суммы, нормированная к шкале 0-10. '''Важно:''' Большие домашние задания (БДЗ) '''НЕ учитываются''' в этой сумме
|-
* '''Семинары''' — оценка за посещение и активность на семинарах (0-10 баллов)
! style="width:18%;" | Компонент
* '''Экзамен''' — оценка за итоговый экзамен (0-10 баллов)
! style="width:12%; text-align:center;" | Вес
* '''Бонусы''' — дополнительные баллы за активность, помощь другим студентам, доклады и т.д. (0-10 баллов)
! Как считается
|-
! ДЗ
| 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="text-align:center"
{| class="wikitable" style="width:100%; text-align:center;"
|-
|-
! Оценка !! Условие ДЗ !! Условие БДЗ !! Условие Семинары
! Оценка
! Семинары
! ДЗ при 1 зачтённом БДЗ
! ДЗ при 2 зачтённых БДЗ
|-
|-
|| '''10''' || 95% по ДЗ || 1 большое ДЗ (БДЗ) || 9+ баллов за семинары
| '''10''' || 9+ || 95% || 85%
|-
|-
|| '''10''' || 85% по ДЗ || 2 больших ДЗ (БДЗ) || 9+ баллов за семинары
| '''9''' || 9+ || 90% || 80%
|-
|-
|| '''9''' || 90% по ДЗ || 1 большое ДЗ (БДЗ) || 9+ баллов за семинары
| '''8''' || 8+ || 85% || 75%
|-
|| '''9''' || 80% по ДЗ || 2 больших ДЗ (БДЗ) || 9+ баллов за семинары
|-
|| '''8''' || 85% по ДЗ || 1 большое ДЗ (БДЗ) || 8+ баллов за семинары
|-
|| '''8''' || 75% по ДЗ || 2 больших ДЗ (БДЗ) || 8+ баллов за семинары
|}
|}


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


=== Правила ===
=== Правила ===


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


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


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


'''Особенности БДЗ:'''
* Дедлайн на выполнение — '''3 недели''' с момента выдачи.
* Дедлайн на выполнение — '''3 недели''' с момента выдачи
* Работы проверяются '''вручную преподавателями''' с подробным ревью кода.
* Работы проверяются '''вручную преподавателями''' с подробным code review
* Оценка <code>1.0</code> от автоматических тестов '''не гарантирует зачёт БДЗ''': финальная оценка выставляется только после ручной проверки.
* '''Важно:''' Оценка 1.0 от автоматических тестов '''НЕ гарантирует''' зачет БДЗ — финальная оценка выставляется только после ручной проверки
* Выполненные БДЗ учитываются при получении автомата (см. таблицу выше)


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


* Создается issue под названием "BHW-1: Check" (или "BHW-2: Check" для второго БДЗ)
Для проверки создаётся issue под названием <code>BHW-1: Check</code> или <code>BHW-2: Check</code>.
* Если задание зачтено:
 
  * В issue будет оставлен комментарий о зачете
{| class="wikitable" style="width:100%;"
  * Issue будет закрыт
|-
  * В Manytask будет выставлена оценка 5 за БДЗ
! Результат
* Если требуются правки:
! Что происходит
  * Issue останется открыт с комментарием о необходимых исправлениях
|-
! БДЗ зачтено
| В 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 означает только то, что задание прошло автоматическое тестирование.
|}


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


Сам экзамен проходит в формате индивидуальной беседы со студентом по его решению — практически онлайн code review. Преподаватель будет задавать вопросы о решении, об используемых паттернах и оценивать работу студента на основании:
* критерии, указанные в <code>README.md</code> задания;
* Критериев, указанных в README задания
* способность студента объяснить, как работает его код.
* Способности студента объяснить, как работает его код

Версия от 22:34, 7 сентября 2026

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

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

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

Быстрый старт

  1. Зарегистрируйтесь в Manytask — система создаст личный репозиторий, ссылка на него появится в разделе My Repo.
  2. Добавьте SSH-ключ в GitLab и склонируйте личный репозиторий.
  3. В корне репозитория выполните make setup, чтобы загрузить зависимости и инструменты курса.
  4. Откройте условие задачи в README.md, реализуйте решение и запустите тесты и линтер.
  5. Сделайте commit и push, затем дождитесь результата в разделе My Submits.

Подробный маршрут первой сдачи с командами есть в задаче sum. Для локальной проверки конкретной задачи используйте:

  • go test ./sum/... — тесты;
  • golangci-lint run ./sum/... — линтер.
Важно про отправку. Manytask проверяет только задания, изменённые в последнем коммите. Повторную проверку можно запустить кнопкой Retry либо новым коммитом.

Если проверка не прошла, сначала прочитайте лог. Чтобы вам быстрее помогли, приложите к вопросу название задачи, ссылку на посылку, точный текст ошибки и коротко напишите, что уже пробовали сделать.

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

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

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

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

Лекции и ДЗ

Таблица пополняется по мере публикации материалов.

Дата Тема Материалы ДЗ Мягкий дедлайн Жёсткий дедлайн
1 08.09.2026 Введение Слайды ДЗ 1 23.09.2026, 23:59 30.09.2026, 23:59

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

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

Оитог = 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 задания;
  • способность студента объяснить, как работает его код.