• A
  • A
  • A
  • АБВ
  • АБВ
  • АБВ
  • А
  • А
  • А
  • А
  • А
Обычная версия сайта

Веб-программирование

2019/2020
Учебный год
RUS
Обучение ведется на русском языке
4
Кредиты

Преподаватель


Пученкин Артем Викторович

Программа дисциплины

Аннотация

Дисциплина "Веб программирование" знакомит студентов с основными подходами, технологиями, протоколами взаимодействия, используемыми в Веб программировании. Программа состоит из 2х частей: первая посвящена языку программирования JavaScript и программирования с использованием этого языка, вторая рассматривает основные прикладные аспекты программирования для веб и используемые современные технологии.
Цель освоения дисциплины

Цель освоения дисциплины

  • Знакомство с языком программирования JavaScript
  • Знакомство с основными технологиями, подходами и решениями в области веб программирования
  • Умение выбрать нужную веб технологию, и внедрить в решение
  • Получение навыков создания работоспособного веб приложения
Планируемые результаты обучения

Планируемые результаты обучения

  • Применять интерпретатор JavaScript для запуска программ
  • Использовать базовый синтаксис для решения прикладных задач
  • Создавать простые программы с использованием синтаксиса языка JavaScript
  • Выбирать необходимый для эффективного решения тип данных
  • Оценивать эффективность (сложность алгоритма) на базе выбранного типа
  • Использовать встроенные функции языка для управления и трансформации типов
  • Создавать необходимые структуры данных на базе примитивов
  • Определять область видимости обвяленных переменных
  • Использовать инкапсуляцию для сокрытия части реализации
  • Использовать рекурсию и функции как объекты первого класса
  • Определять объем необходимой памяти, а также понимать принцип работы автоматического сборщика мусора
  • Выделять общую часть программ используя прототипное наследование
  • Использовать динамический контекст и определять его текущее значение
  • Создавать изменяемые и неизменяемые структуры данных
  • Использовать подходы Объектно-ориентированно программирования для предотвращения возникновения проблем при масштабировании программ
  • Выделять общие части кода с помощью указанных методов
  • Создавать надежные, расширяемые программные интерфейсы
  • Использовать подходы функционального программирования для асинхронных программ
  • Применять декларативный и императивный подходы в программировании
  • Использовать асинхронные интерфейсы и структуры данных разных платформ (NodeJs, Браузер)
  • Определять порядок выполнения инструкций при параллельном исполнении программ
  • Обеспечивать быстродействие для работы программы в реальном времени
  • Использовать менеджер пакетов для управления зависимостями проекта
  • Применять сборщик пакетов для компиляция исходного кода в бандл
  • Создавать собственные модули, обеспечивать независимость модулей
  • Описывать структуру отображаемых данных в виде HTML
  • Использовать встроенные в браузер механики HTML элементов
  • Управлять отображением данных при помощи CSS
  • Находить требуемый элемент в дереве DOM
  • Управлять представлением в браузере посредством изменения дерева DOM
  • Определять события браузера при пользовательском взаимодействии
  • Запускать программные компоненты при наступлении определённых событий
  • Передавать данные между веб серверами или между клиентом и сервером через протокол HTTP
  • Использовать протоколы более высокого уровня на основе HTTP
Содержание учебной дисциплины

Содержание учебной дисциплины

  • Обзор синтаксиса JavaScript
    Объявления переменных, операторы, базовые типы данных, управляющие структуры и встроенные функции.
  • Типы и структуры данных
    Встроенные типы данных, приведение типов, создание структур из примитивов, передача данных по значению и ссылке.
  • Функции, области видимости и замыкания
    Определение функций, области видимости переменных, лексический контекст, замыкания и выделения памяти.
  • Объекты и прототипы
    Дескрипторы свойств объектов, изменяемость данных, динамический контекст и прототипное наследование
  • Объектно-ориентированное программирование в JavaScript
    Инкапсуляция, наследование и полиморфизм в JavaScript. Объектная композиция и делегация поведения.
  • Функциональное программирование в JavaScript
    Рекурсия, функциональная композиция, частичное применение, мемоизация
  • Асинхронное программирование в JavaScript
    Асинхронная модель в JavaScript, блокировка ввода-вывода, продолжения, асинхронные структуры данных, условия гонки и синхронизация асинхронных потоков
  • Веб инфраструктура
    Управление зависимостями, система модулей, сборка проекта
  • Html и CSS
    Структура и свойства HTML, каскадные таблицы стилей, пре- и постпроцессоры стилей
  • Публичные интерфейсы браузера, DOM
    Управление деревом представления DOM. Модель событий, селекторы HTML элементов
  • Транспортные протоколы
    HTTP, REST, GraphQL, Websocket, CORS
Элементы контроля

Элементы контроля

  • неблокирующий Лабораторная работа - Простая программа на JavaScript
  • неблокирующий Лабораторная работа – Структуры данных
  • неблокирующий Лабораторная работа – Алгоритмы
  • неблокирующий Лабораторная работа – Инкапсуляция и наследование
  • неблокирующий Лабораторная работа – Управление общим состоянием
  • неблокирующий Лабораторная работа – Обработка данных и оптимизация
  • неблокирующий Лабораторная работа – Асинхронное выполнение
  • неблокирующий Лабораторная работа - Веб приложение
  • неблокирующий Экзамен
Промежуточная аттестация

Промежуточная аттестация

  • Промежуточная аттестация (2 модуль)
    0.25 * Лабораторная работа - Веб приложение + 0.05 * Лабораторная работа - Простая программа на JavaScript + 0.05 * Лабораторная работа – Алгоритмы + 0.05 * Лабораторная работа – Асинхронное выполнение + 0.05 * Лабораторная работа – Инкапсуляция и наследование + 0.05 * Лабораторная работа – Обработка данных и оптимизация + 0.05 * Лабораторная работа – Структуры данных + 0.05 * Лабораторная работа – Управление общим состоянием + 0.4 * Экзамен
Список литературы

Список литературы

Рекомендуемая основная литература

  • - Введение в HTML5 - Национальный Открытый Университет "ИНТУИТ" - 2016 - ISBN: - Текст электронный // ЭБС Лань - URL: https://e.lanbook.com/book/100680
  • - Каскиаро М., Маммино Л. — Шаблоны проектирования Node.js. Воспользуйтесь самыми мощными компонентами и шаблонами платформы Node.js для создания масштабируемых модульных приложений - Издательство "ДМК Пресс" - 2017 - ISBN: 978-5-97060-485-4 - Текст электронный // ЭБС Лань - URL: https://e.lanbook.com/book/108127
  • 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

Рекомендуемая дополнительная литература

  • - Государев И.Б. — Введение в веб-разработку на языке JavaScript: учебное пособие - Издательство "Лань" - 2019 - ISBN: 978-5-8114-3539-5 - Текст электронный // ЭБС Лань - URL: https://e.lanbook.com/book/118648
  • - Диков А.В. — Клиентские технологии веб-дизайна. HTML5 и CSS3: учебное пособие - Издательство "Лань" - 2019 - ISBN: 978-5-8114-3822-8 - Текст электронный // ЭБС Лань - URL: https://e.lanbook.com/book/122174
  • 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