• A
  • A
  • A
  • АБB
  • АБB
  • АБB
  • А
  • А
  • А
  • А
  • А
Обычная версия сайта
Бакалавриат 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