Магистратура
2020/2021
Веб-программирование
Лучший по критерию «Полезность курса для Вашей будущей карьеры»
Лучший по критерию «Полезность курса для расширения кругозора и разностороннего развития»
Лучший по критерию «Новизна полученных знаний»
Статус:
Курс по выбору (Программирование и анализ данных)
Направление:
01.04.02. Прикладная математика и информатика
Кто читает:
Департамент информатики
Когда читается:
2-й курс, 1, 2 модуль
Формат изучения:
без онлайн-курса
Преподаватели:
Брыксин Матвей Александрович
Прогр. обучения:
Программирование и анализ данных
Язык:
русский
Кредиты:
4
Контактные часы:
40
Программа дисциплины
Аннотация
Курс знакомит студентов с основными подходами, технологиями, протоколами взаимодействия, используемыми в веб-программировании. Программа состоит из 2х частей: первая посвящена языку программирования JavaScript и программированию с использованием этого языка, вторая рассматривает основные прикладные аспекты программирования для веб и используемые современные технологии.
Цель освоения дисциплины
- Научить студентов разрабатывать клиентские web, mobile, desktop приложения на единой кодовой базе и серверные приложения для взаимодействия с ними.
Планируемые результаты обучения
- Выбирать необходимый для эффективного решения тип данных
- Использовать базовый синтаксис для решения прикладных задач
- Применять декларативный и императивный подходы в программировании
- Выделять общие части кода с помощью указанных методов
- Выделять общую часть программ используя прототипное наследование
- Запускать программные компоненты при наступлении определённых событий
- Использовать асинхронные интерфейсы и структуры данных разных платформ (NodeJs, Браузер)
- Создавать изменяемые и неизменяемые структуры данных
- Использовать динамический контекст и определять его текущее значение
- Использовать менеджер пакетов для управления зависимостями проекта
- Использовать встроенные функции языка для управления и трансформации типов
- Использовать инкапсуляцию для сокрытия части реализации
- Использовать подходы Объектно-ориентированно программирования для предотвращения возникновения проблем при масштабировании программ
- Использовать подходы функционального программирования для асинхронных программ
- Обеспечивать быстродействие для работы программы в реальном времени
- Использовать протоколы более высокого уровня на основе HTTP
- Использовать рекурсию и функции как объекты первого класса
- Определять область видимости обвяленных переменных
- Создавать надежные, расширяемые программные интерфейсы
- Определять события браузера при пользовательском взаимодействии
- Оценивать эффективность (сложность алгоритма) на базе выбранного типа
- Применять сборщик пакетов для компиляция исходного кода в бандл
- Создавать необходимые структуры данных на базе примитивов
- Использовать встроенные в браузер механики HTML элементов
- Описывать структуру отображаемых данных в виде HTML
- Управлять отображением данных при помощи CSS
- Управлять представлением в браузере посредством изменения дерева DOM
- Находить требуемый элемент в дереве DOM
- Передавать данные между веб серверами или между клиентом и сервером через протокол HTTP
Содержание учебной дисциплины
- Обзор синтаксиса JavaScriptОбъявления переменных, операторы, базовые типы данных, управляющие структуры и встроенные функции.
- Типы и структуры данныхВстроенные типы данных, приведение типов, создание структур из примитивов, передача данных по значению и ссылке.
- Функции, области видимости и замыканияОпределение функций, области видимости переменных, лексический контекст, замыкания и выделения памяти.
- Объекты и прототипыДескрипторы свойств объектов, изменяемость данных, динамический контекст и прототипное наследование
- Объектно-ориентированное программирование в JavaScriptИнкапсуляция, наследование и полиморфизм в JavaScript. Объектная композиция и делегация поведения.
- Функциональное программирование в JavaScriptРекурсия, функциональная композиция, частичное применение, мемоизация
- Асинхронное программирование в JavaScriptАсинхронная модель в JavaScript, блокировка ввода-вывода, продолжения, асинхронные структуры данных, условия гонки и синхронизация асинхронных потоков
- Веб инфраструктураУправление зависимостями, система модулей, сборка проекта
- HTML и CSSСтруктура и свойства HTML, каскадные таблицы стилей, пре- и постпроцессоры стилей
- Публичные интерфейсы браузера, DOMУправление деревом представления DOM. Модель событий, селекторы HTML элементов
- Транспортные протоколыHTTP, REST, GraphQL, Websocket, CORS
Элементы контроля
- Лабораторная работа 1
- Лабораторная работа 2
- Лабораторная работа 3
- Лабораторная работа 4
- Лабораторная работа 5
- Лабораторная работа 6
- Лабораторная работа 7
- Экзамен
Промежуточная аттестация
- Промежуточная аттестация (2 модуль)0.25 * Лабораторная работа 1 + 0.05 * Лабораторная работа 2 + 0.05 * Лабораторная работа 3 + 0.05 * Лабораторная работа 4 + 0.05 * Лабораторная работа 5 + 0.05 * Лабораторная работа 6 + 0.05 * Лабораторная работа 7 + 0.45 * Экзамен
Список литературы
Рекомендуемая основная литература
- - Введение в HTML5 - Национальный Открытый Университет "ИНТУИТ" - 2016 - 133с. - ISBN: - Текст электронный // ЭБС ЛАНЬ - URL: https://e.lanbook.com/book/100680
- Gamma, E., Helm, R., Johnson, R. E., & Vlissides, J. (2009). Design Patterns : Elements of Reusable Object-Oriented Software. Reading, MA: Addison-Wesley Professional. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=1599365
- Goralski, W. (2017). The Illustrated Network : How TCP/IP Works in a Modern Network (Vol. Second edition). Amsterdam: Morgan Kaufmann. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=1450801
- Haverbeke, M. (2019). Eloquent JavaScript, 3rd Edition : A Modern Introduction to Programming (Vol. Third edition). San Francisco, CA: No Starch Press. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=1739634
- Каскиаро М., Маммино Л. - Шаблоны проектирования Node.js. Воспользуйтесь самыми мощными компонентами и шаблонами платформы Node.js для создания масштабируемых модульных приложений - Издательство "ДМК Пресс" - 2017 - 396с. - ISBN: 978-5-97060-485-4 - Текст электронный // ЭБС ЛАНЬ - URL: https://e.lanbook.com/book/108127
Рекомендуемая дополнительная литература
- Computer Networks : A Systems Approach. (2019). Princeton, New Jersey: Larry Peterson and Bruce Davie. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsotl&AN=edsotl.OTLid0000771
- Государев И.Б. - Введение в веб-разработку на языке JavaScript: учебное пособие - Издательство "Лань" - 2019 - 144с. - ISBN: 978-5-8114-3539-5 - Текст электронный // ЭБС ЛАНЬ - URL: https://e.lanbook.com/book/118648
- Диков А.В. - Клиентские технологии веб-дизайна. HTML5 и CSS3: учебное пособие - Издательство "Лань" - 2019 - 188с. - ISBN: 978-5-8114-3822-8 - Текст электронный // ЭБС ЛАНЬ - URL: https://e.lanbook.com/book/122174