Бакалавриат
2026/2027





Разработка на Go
ID 1270847
Статус:
Курс по выбору (Компьютерные науки и анализ данных)
Где читается:
Факультет компьютерных наук
Когда читается:
3-й курс, 1, 2 модуль
Охват аудитории:
для своего кампуса
Язык:
русский
Кредиты:
5
Контактные часы:
32
Программа дисциплины
Аннотация
Язык программирования Go является одним из ключевых инструментов современной серверной разработки и широко применяется при создании облачной инфраструктуры, высоконагруженных сетевых сервисов и микросервисных систем. Его востребованность обусловлена лаконичным синтаксисом, строгой типизацией, высокой производительностью и встроенной поддержкой конкурентного программирования. В рамках дисциплины «Разработка на Go» рассматриваются синтаксис и основные конструкции языка, интерфейсы и обработка ошибок, организация кода в пакеты и архитектурные слои, принципы проектирования HTTP-сервисов и REST API, механизмы конкурентности (горутины, каналы, примитивы синхронизации), а также интеграция приложений с реляционными базами данных и написание модульных тестов. Результатом освоения дисциплины является разработка обучающимися бэкенд-сервиса с OpenAPI-документацией и его контейнеризацией с использованием Docker.
Цель освоения дисциплины
- Целью освоения дисциплины является формирование навыков разработки приложений с использованием языка Go, освоение подходов к конкурентному и сетевому программированию – осуществляя тем самым подготовку обучающихся к профессиональной деятельности.
Планируемые результаты обучения
- Описывать принципы работы и устройство языка Go.
- Определять основные понятия и терминологию в области реализации сетевого взаимодействия.
- Объяснять принципы проектирования, разработки и документирования RESTful API.
- Описывать методы и подходы для реализации конкурентности.
- Описывать механизмы взаимодействия с базами данных и подходы к работе с миграциями.
- Описывать методы и подходы к модульному, интеграционному и API‑тестированию.
- Осуществлять поиск, критический анализ и синтез информации.
- Декомпозировать и приоритизировать задачи, выбирать оптимальные способы решения с учётом ресурсов и ограничений.
- Применять горутины, каналы и примитивы синхронизации для конкурентной обработки задач.
- Разрабатывать, тестировать и документировать бэкенд‑сервисы в соответствии с поставленной задачей.
- Настраивать подключение и взаимодействовать с базой данных, управлять изменениями схемы данных через миграции.
- Разрабатывать эффективные приложения на языке Go.
- Работать с библиотеками для создания бэкенд‑сервисов (net/http, chi, gorilla).
- Использовать инструменты для описания сервисов и генерации документации (Swagger, OpenAPI).
- Использовать библиотеки для взаимодействия с PostgreSQL (database/sql, sqlx/pgx) и инструменты для миграций (goose, migrate).
- Применять методы и средства покрытия сервиса модульными, интеграционными и API‑тестами (testing, testify, httptest).
Содержание учебной дисциплины
- Введение в дисциплину
- Типы данных, управляющие конструкции и функции
- Интерфейсы, встраивание и обработка ошибок
- Пакеты, модули и архитектура сервиса
- Юнит-тестирование
- HTTP-сервер на net/http
- Проектирование API-контрактов
- Горутины, каналы и примитивы синхронизации
- Обеспечение конкурентности в сервисах
- Взаимодействие с базами данных
- Итоговый проект
Элементы контроля
- Текущий контрольТекущий контроль представляет собой проверку знаний и освоенных студентов навыков по итогам первых семи тем. Задание представляет собой упрощённую и сокращенную вариацию итогового проекта и в том числе служит подготовкой к нему.
- Итоговый проект (промежуточная аттестация)Итоговый проект выполняется студентами в парах (если число студентов нечётное, одна группа будет из трёх человек). Проект оценивается очно, на двух заключительных занятиях курса. Подготовка к промежуточной аттестации происходит на протяжении курса: частично в аудиторном формате, частично за счет часов на самостоятельное изучение. Защита проектов проводится в три такта. Все проекты распределяются преподавателем на три равные группы. В каждом такте одна группа представляет свои проекты преподавателю, другая группа проверяет проекты третьей группы. Проверяющая группа не участвует в обсуждении защищаемых проектов. После каждого такта группы циклически меняются функциями. В результате за три такта каждая группа один раз защищается перед преподавателем, один раз проверяет проекты других групп и один раз подвергается проверке со стороны другой группы.
Промежуточная аттестация
- 2026/2027 2nd moduleИтог = Округление((ТК + Проект) / 10), где ТК – от 0 до 40, Проект – от 0 до 60. Итоговый рейтинг студента складывается из двух составляющих: ● текущая успеваемость (текущий контроль, поощрительные баллы) - 40%, ● итоговый проект - 60%.
Список литературы
Рекомендуемая основная литература
- Golang для профи: Создаем профессиональные утилиты, параллельные серверы и сервисы. 3-е изд. (Серия «Для профессионалов») - Цукалос Михалис - Санкт-Петербург: Питер - 978-5-4461-1999-8 - 2024 - русский - https://ibooks.ru/product/334804 - iBOOKS - 334804
- gRPC: запуск и эксплуатация облачных приложений. Go и Java для Docker и Kubernetes. . - Индрасири Касун, Курупу Данеш - Санкт-Петербург: Питер - 978-5-4461-1737-6 - 2021 - русский - https://ibooks.ru/product/336722 - iBOOKS - 336722
- Программирование на Go. Разработка приложений XXI века - Марк Саммерфильд - Издательство "ДМК Пресс" - 978-5-94074-854-0 - 2013 - русский - https://e.lanbook.com/book/69944 - ЛАНЬ - 69944
Рекомендуемая дополнительная литература
- 100 ошибок Go и как их избежать. (Серия «Для профессионалов»). - Харшани Тейва - Санкт-Петербург: Питер - 978-5-4461-2058-1 - 2024 - русский - https://ibooks.ru/product/334803 - iBOOKS - 334803
- Golang для профи: работа с сетью, многопоточность, структуры данных и машинное обучение с Go - Михалис Цукалос - Санкт-Петербург: Питер - 978-5-4461-1617-1 - 2021 - русский - https://ibooks.ru/product/336745 - iBOOKS - 336745
- Head First. Изучаем Go - Джей Макгаврен - Санкт-Петербург: Питер - 978-5-4461-1395-8 - 2020 - русский - https://ibooks.ru/product/337656 - iBOOKS - 337656