Розробники та рецензенти
Заклад вищої освіти:

Компанія-рецензент 1:

Компанія-рецензент 2:
Валідація:
Розробник навчальної програми:
Олійник Олена Володимирівна — старший викладач кафедри «Програмної інженерії» Харківського національного університету радіоелектроніки
Базова інформація
Шифр та назва спеціальності:
121 - Програмна інженеріяНазва освітньо-наукової програми
Програмна інженеріяНазва дисципліни
Вивчення GoLangВид дисципліни
ОсновнаБлок дисципліни
Алгоритмізація і програмуванняКількість студентів
Курс/Семестр
8Загальна інформація про дисципліну
Анотація
Golang (Go) – це мова програмування народжена всередині Google, дизайн якої, базується на принципі KISS. Go – сучасна мова програмування, призначена для розробки висококонкурентних додатків, що працюють на багатопроцесорних системах. Go підтримує типобезпеку, можливість динамічного введення даних, а також містить багату стандартну бібліотеку функцій і вбудовані типи даних на зразок масивів з динамічним розміром і асоціативних масивів. За допомогою механізмів багато поточності Go спрощує розподіл обчислень і мережевої взаємодії, а сучасні типи даних відкривають програмісту світ гнучкого і модульного коду. Курс «Вивчення Golang» дасть основи програмування на мові Go, а так само досвід застосування мови в основних завданнях, які зустрічаються сьогодні в серверній веброзробці.Анотація
Метою дисципліни є вивчення основ синтаксису та керуючих структур мови Golang, внутрішніх механізмів, реальних кейсів перекладу на стек мови Golang з інших технологічних стеків (PHP, C #, JavaScript) великих високонавантажених проектів, реальних проблем і їх рішень, з якими зіткнулися програмісти при роботі з Go, застосуванні моделей паралелізму Go для побудови масово паралельних систем, розуміння призначення типів, організуванні коду за допомогою пакетів.Анотація
Лекції, лабораторні роботи, самостійна робота. Підсумковий контроль – іспитРозподіл часу
Загальний обсяг (кредитів): 5; Лекції (занять): 15; Лабораторні (занять): 5; Практичні (занять): 5; Самостійна робота (годин): 90
Попередні дисципліни
Основи програмування, Архітектура комп’ютера та організація комп’ютерних мереж, Алгоритми та структури даних, Бази даних, Паралельне програмування, Скриптові мови програмуванняМатеріально-технічне та програмне забезпечення дисципліни
Комп'ютер з встановленим компілятором для мови GoLang та будь-яким текстовим редактором, або з середовищем розробки для GoLangСтруктура дисципліни
Тема 1 – Основи мови GoLang
Основи синтаксису та структура програми в Go.
- Структура програми. Основні конструкції: лінійна, розгалужена, циклічна.
- Змінні: іменування, ініціалізація, час життя. Покажчики.
- Збірник мусору.
- Пакети та файли
- defer та його використання під час журналювання.
- Числові типи даних: цілі, з плаваючою крапкою, комплексні числа, булеві значення.
- Рядки: рядкові літерали, unicode, перетворення між рядками та числами.
- Константи: генератор iota, нетипізовані константи.
- Масиви, зрізи, відображення.
- Структури: створення, ініціалізація, експорт, інкапсуляція та вбудовування.
- Типи даних користувача. Регулярні вирази.
- JSON. Текстові та HTML-шаблони.
- Функції: об’явлення, рекурсія, множинні значення.
- Помилки. Анонімні та варіативні функції.
- Паніки. Відновлення.
- Методи. Значення-методи та вирази-методи. Інкапсуляція.
- Типи інтерфейсів.
- Інтерфейси користувача.
- Відображення.
- Основи git та GitHub.
- Об’явлення, імпорт та іменування пакетів.
- Завантаження та побудова пакетів.
- Документування пакетів.
- Go-модулі.
- Go-підпрограми.
- Канали: запис в канал, читання з каналу, канали як аргументи функції.
- Конвеєри. Стан гонки.
- Паралельність та спільно використовувані змінні.
- Планувальник Go.
- Типи каналів: сигнальні, буферізовані, нульові, канали каналів.
- Загальна пам’ять та загальні змінні.
- Оптимізація коду Go.
- Профілювання коду.
- Тестування коду.
- Генерація документації.
- Браузери, запити, сервери та відповіді.
- Утиліта командного рядка.
- Виконання DNS-пошуку.
- Шаблони HTML.
- Профілювання HTTP-сервера.
- Створення веб-сайту на Go.
- HTTP-трасування.
- Створення та удосконалення веб-клієнта.
- Затримки HTTP-з’єднання.
- Go та gRPC
- Створення сертифікатів.
- HTTP-клієнт.
- Простий HTTP-сервер.
- Розробка TLS-сервера та TLS-клієнта.
- Стандартний Go-пакет net.
- ТСР-клієнт.
- ТСР-сервер.
- Конкурентний ТСР-сервер.
- Дистанційний виклик процедур.
- Рефлексія.
- Низькорівневе програмування.
- Машинне навчання.
Теми та завдання для самостійної роботи
- GoLang та різні платформи створення програмного забезпечення. Підсумковий тест. 5% питань підсумкового тесту.
- Пакети, функції, типи даних, змінні та константи. Пз-1, Лр-1, Лр-2 - теоретична частина захисту робіт. 50% оцінки при захисті даних робіт.
- Основні мовні конструкції. Пз-1, Лр-1, Лр-2 - теоретична частина захисту робіт. 50% оцінки при захисті даних робіт.
- Організація даних. Пз-1, Лр-1, Лр-2 - теоретична частина захисту робіт. 50% оцінки при захисті даних робіт.
- Структурування програм: функції. Пз-1, Лр-1, Лр-2 - теоретична частина захисту робіт. 50% оцінки при захисті даних робіт.
- Структурування програм: методи та інтерфейси. Пз-1, Лр-1, Лр-2 - теоретична частина захисту робіт. 50% оцінки при захисті даних робіт.
- Багатопоточність. Пз-2, Лр-3 - теоретична частина захисту робіт. 50% оцінки при захисті даних робіт.
- Помилки, паніки, відновлення. Пз-2, Лр-3 - теоретична частина захисту робіт. 50% оцінки при захисті даних робіт.
- Створення та імпорт пакетів. Пз-2, Лр-3 - теоретична частина захисту робіт. 50% оцінки при захисті даних робіт.
- Основи створення веб-додатків. Пз-3, Лр-4, Лр-5 - теоретична частина захисту робіт. 50% оцінки при захисті даних робіт.
- Шаблони, редагування, валідація даних у веб-додатках. Пз-3, Лр-4, Лр-5 - теоретична частина захисту робіт. 50% оцінки при захисті даних робіт.
- Конектування з різними базами даних. Пз-3, Лр-4, Лр-5 - теоретична частина захисту робіт. 50% оцінки при захисті даних робіт.
- Мережеве програмування. Пз-3, Лр-4, Лр-5 - теоретична частина захисту робіт. 50% оцінки при захисті даних робіт.
- Роути, моделі, фронтенд. Пз-3, Лр-4, Лр-5 - теоретична частина захисту робіт. 50% оцінки при захисті даних робіт.
- Сучасні тенденції розвитку GoLang. Підсумковий тест. 5% питань підсумкового тесту.
Проєкт
Рекомендовані джерела інформації та навчальні матеріали
- А. Донован, Б.У.Керниган Язык программирования Go. - 978-617-7812-22-6 изд. - Киев: Диалектика, 2019.
- Цукалос Михалис. Golang для профи: работа с сетью, многопоточность, структуры данных и машинное обучение с Go. — СПб.: Питер, 2020. — 720 с.: ил.
- Батчер М., Фарина М. Go на практике. - 978-5-97060-477-9 изд. - Харьков: ДМК-пресс, 2017. - 374 с.
- Марк Саммерсфильд Программирование на языке Go. - 978-5-97060-338-3 изд. - Харьков: ДМК-пресс, 2016. - 550 с
- William KennedyBrian KetelsenErik St. Martin Go in Action. - 978-1617291784 изд. Manning Publications Co., 2015. - 264 с.
- Калеб Докси ВВЕДЕНИЕ В ПРОГРАММИРОВАНИЕ НА GO. 2015. - 90 с.
- Макгаврен Джей. Изучаем Go. — СПб.: Питер, 2020. — 544 с.: ил
- Блог о языке программирования Go https://golang-blog.blogspot.com/p/go-essentials.html
- Tproger. GoLang: основы для начинающих. https://tproger.ru/translations/golang-basics/
- https://metanit.com/go/tutorial/1.1.php
Контрольні заходи
Захист завдання з практичного заняття.
Захист завдання з лабораторної роботи
Іспит (підсумковий тест)
Підсумкова оцінка
Результати навчання
За результатом вивчення дисципліни студенти повинні: знати: - основні поняття мови GоLang; - методи та форми типізації даних; - принципи та методи структурування програм; - методи створення типів користувача; - методи паралельного програмування в GоLang; - методи використання помилок та панік при відновлені роботи програм; - методи проектування програмного забезпечення засобами GoLang; - принципи та технології веб-програмування GoLang; - принципи та технології конектування з базами даних в GoLang; - принципи та технології мережевого програмування в GoLang; - особливості використання інших технологічних стеків (PHP, C #, JavaScript) великих високонавантажених проектів; - принципи застосування моделей паралелізму Go для побудови масово паралельних систем вміти: - формувати концепт програмного забезпечення, виходячи з технічного завдання; - розробляти та структурувати програмне забезпечення мовою GoLang; - розробляти програмне забезпечення з використанням технологій паралельного програмування GoLang; - розробляти веб-застосування з використанням технологій GoLang; - проводити конектування розробленого програмного забезпечення з різними базами даних.
Зв'язок з ринком праці
Спеціальність/професія, підготовці до діяльності в якій читається курс:
Розробник серверної частиниПосилання на вакансії (понад 3),
Перелік компетентностей із вказаних як вимоги до вакансії, які набувають студенти, в процесі проходження дисципліни.
Інструменти оцінювання результатів навчання за дисципліною
Захист завдання з практичного заняття: Усний контроль. Мінімальна оцінка для зарахованого захисту 3,6 балів, максимальна - 6 балів. Мінімальна оцінка за всі Пз - 18 балів, максимальна - 30 балів.
Захист завдання з лабораторної роботи: Усний контроль. Мінімальна оцінка для зарахованого захисту 7,2 бали максимальна оцінка 12 балів. Мінімальна оцінка за всі Лр - 36 балів, максимальна 70 балів.
Іспит (підсумковий тест): Комп’ютерне опитування. Менше 60% правильних відповідей - тест не зараховано. Від 60% до 100% - тест зараховано. Мінімальна оцінка за тест - 60 балів, максимальна 100 балів
Підсумкова оцінка: 0,6*(сума оцінок за Пз та Лр)+0,4*оцінку з підсумкового тесту.
