Язык программирования Go: различия между версиями
Maximus3 (обсуждение | вклад) Нет описания правки |
Maximus3 (обсуждение | вклад) Нет описания правки |
||
| (не показано 12 промежуточных версий 2 участников) | |||
| Строка 1: | Строка 1: | ||
{| 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/-/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 | |||
== Преподаватели == | == Преподаватели == | ||
{| class="wikitable" style="text-align:center" | |||
Общие вопросы и объявления — в [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% | |||
|- | |- | ||
| '''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%;" | |||
|- | |- | ||
! Результат | |||
! Что происходит | |||
|- | |- | ||
| | ! БДЗ зачтено | ||
| В 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 |
| 💬 Чат курса Объявления и общие вопросы |
🧪 Manytask Задания, посылки и текущие баллы |
| 📚 Репозиторий курса Условия задач, код лекций и документация |
🎓 Слайды Материалы опубликованных лекций |
Быстрый старт и сдача ДЗ
- Зарегистрируйтесь в Manytask, откройте
My Repoи склонируйте личный репозиторий, добавив SSH-ключ. - Установите Go и выполните
make setup. Версии инструментов указаны вMakefile. - Решайте задачи в
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.
Материалы курса
- Репозиторий с лекциями и заданиями
- Слайды всех опубликованных лекций
- Manytask
- Публичные результаты TODO
Преподаватели
Общие вопросы и объявления — в чате курса. По вопросам семинара ориентируйтесь на преподавателя своей группы.
| Роль | Группа 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задания; - способность студента объяснить, как работает его код.