• A
  • A
  • A
  • АБB
  • АБB
  • АБB
  • А
  • А
  • А
  • А
  • А
Обычная версия сайта
Бакалавриат 2020/2021

Современные языки и технологии программирования

Лучший по критерию «Полезность курса для расширения кругозора и разностороннего развития»
Статус: Курс по выбору (Программная инженерия)
Направление: 09.03.04. Программная инженерия
Когда читается: 3-й курс, 3, 4 модуль
Формат изучения: с онлайн-курсом
Преподаватели: Ланин Вячеслав Владимирович, Фролова Наталья Владимировна, Шиловских Петр Александрович
Язык: русский
Кредиты: 5
Контактные часы: 56

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

Аннотация

Настоящая программа учебной дисциплины устанавливает требования к образовательным результатам и результатам обучения студента и определяет содержание и виды учебных занятий и отчетности. Программа предназначена для преподавателей, ведущих дисциплину «Современные языки и технологии программирования», учебных ассистентов и студентов направления подготовки 09.03.04 Программная инженерия, обучающихся по образовательной программе «Программная инженерия».
Цель освоения дисциплины

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

  • Развитие профессионального кругозора и алгоритмического мышления студентов.
  • Выработка у студентов навыков решения задач, требующих разработку и формализацию алгоритмов на современных языках программирования.
  • Выработка у студентов навыков использования современных средств разработки программного обеспечения.
Планируемые результаты обучения

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

  • Знает основы языка программирования Java.
  • Владеет дополнительными возможностями программирования на платформе Jаva
  • Разбирается в технологиях Java Enterprise Edition
  • Владеет технологиями декларативного программирования
Содержание учебной дисциплины

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

  • Раздел 1. Основы языка Java
    Введение в технологию Java Описание Java технологий. Особенности языка программирования Java. Использование интегрированной среды разработки. Установка JDK/IDE, настройка параметров среды. Работа в командной строке. Язык программирования Java Языковые лексемы Java. Введение в систему типов языка Java. Работа с примитивными типами и константами. Операции языка Java. Преобразование простых типов. Создание и вызов методов. Перегрузка и методы с переменным числом аргументов. Операторы ветвления. Операторы циклов. Объектно-ориентированное программирование в Java Обзор основных концепций ООП. Объявление класса. Члены класса и создание объектов класса. Модификаторы доступа. Модификаторы final & static. Использование пакетов, директив импорта и переменной среды CLASSPATH. Наследование как механизм повторного использования кода. Конструктор при наследовании Преобразование типов и операция instanceof. Виртуальные методы и позднее связывание. Абстрактные классы и методы. Концепция интерфейсов. Объявление интерфейса. Реализация интерфейса. Статические методы и методы по умолчанию в интерфейсах. Использование и создание аннотаций. Позднее и раннее связывание. Настраиваемые типы. Типы данных. Упаковка и автораспаковка. Коллекции. Иерархия классов коллекций. Концепция параметризованных типов данных. Работа с параметризованным методов и интерфейсом. Обзор возможностей списков, множеств и словарей в Java. Выполнение запросов. Параметрические запросы. Использование метаданных. Компоненты JavaBeans. Создание и применение компонентов JavaBeans. Формы и методы проведения занятий по разделу, применяемые учебные технологии: Обязательное выделение задач, актуальных для данной аудитории, и демонстрация применения изучаемых средств для их решения. Оперативные опросы по материалам занятий.
  • Раздел 2. Дополнительные возможности программирования на платформе Jаva
    Разработка приложений с графическим пользовательским интерфейсом Основы построения графического интерфейса пользователя. Модель ожидаемых событий. Компоновки. Управление размещением компонентов. Использование AWT и SWING компонентов. Обзор возможностей JavaFX. Основные объекты в архитектуре JavaFX. Интеграция JavaFX и Swing. Создание приложения JavaFX и JavaFX FXML. Коллекции JavaFX. Многопоточное программирование Средства Java для управления многопоточностью. Класс Thread и интерфейс Runnable. Создание потоков. Мониторы и синхронизация потоков. Современные средства по управлению потоками (Executors, Fork/Join Framework). Новые поток безопасные коллекции и классы (ThreadLocalRandom, AtomicInteger и др.). Использование JDBC API в приложениях Java Java и взаимодействие с СУБД. JDBC, использование SQL в Java-приложениях для доступа к реляционным БД. JDBC-драйвера, их виды. Основные объекты JDBC. Транзакции JDBC. Web-приложения Java Архитектура распределенных приложений. Сервлеты и страницы JSP. Введение в JavaServer Faces (JSF). Структура JSF приложения. Компоненты ввода-вывода в JSF. Создание пользовательских компонентов в JSF. Веб-сервисы. Формы и методы проведения занятий по разделу, применяемые учебные технологии: Обязательное выделение задач, актуальных для данной аудитории, и демонстрация применения изучаемых средств для их решения. Оперативные опросы по материалам занятий.
  • Раздел 3. Технология Java Enterprise Edition
    Введение в Java EE Шаблоны проектирования. Платформа Java EE. Основные элементы платформы Java EE. Структура Enterprise приложения. Роли при создании и использовании EJB-компонентов. Типы EJB-компонентов. EJB-компоненты Шаблоны проектирования. Шаблон MVC. Основные элементы платформы Java EE. Структура Enterprise приложения. Роли при создании и использовании EJB-компонентов. Типы EJB-компонентов. Платформа Java EE. Удаленное взаимодействие компонентов EJB Технология JNDI. Регистрация ресурсов и доступ к ним. Получение локальной ссылки на экземпляр компонента. Технология RMI. Получение удаленной ссылки на экземпляр компонента. Удаленный консольный клиент. Структура описателя развертывания Java EE. Развертывание приложения в сервере приложений. Формы и методы проведения занятий по разделу, применяемые учебные технологии: Обязательное выделение задач, актуальных для данной аудитории, и демонстрация применения изучаемых средств для их решения. Оперативные опросы по материалам занятий.
  • Раздел 4. Декларативное программирование
    Введение в декларативное программирование Краткая история появления декларативного программирования, его направления развития. Особенности декларативного программирования, отличие от традиционного императивного стиля. Преимущества и недостатки. Свойство контекстной независимости. Функциональная парадигма Функциональное программирование, основные особенности, области применения. Строго функциональный язык. Аппликативный стиль программирования. Функциональные типы. Каррирование. Рекурсия. Использование рекурсии для организации повторяющихся вычислений. «Ленивые» вычисления. Введение в лямбда-исчисление. Язык программирования F#. Имя, значение, выражение. Автоматическое выведение типа. Упорядоченные кортежи и списки. Описание функций. Условное выражение. Опциональный тип. Пользовательские типы. Размеченное объединение. Сопоставление с образцом. Передача функции как параметра. Рекурсивные функции. Понятие списков, генерация списков. Функции высших порядков: отображение, фильтрация, свертка, итерация. Краткий обзор других функциональных языков программирования: Lisp, Haskell. Логическая парадигма Логическое программирование, основные особенности, области применения. Представление знаний при помощи фактов и правил. Цели и подцели. Результат доказательства цели. Внутренние подпрограммы унификации. Программирование повторяющихся операций. Повторение и откат. Метод отката после неудачи. Метод отсечения и отката. Метод повтора, определяемый пользователем. Методы организации рекурсии. Введение в язык Prolog. Prolog и логика предикатов. Факты, правила, цели. Prolog как система управления базами знаний. Алгоритм логического вывода. Управление переходом. Отсечения. Организация рекурсии. Использование списков. Программирование различных операций над списками. Динамические базы данных. Создание экспертной системы на языке Prolog. Сравнение и интеграция различных языков программирования Преимущества и недостатки различных парадигм программирования (императивная и декларативная; процедурная, объектно-ориентированная, функциональная и логическая). Мультипарадигмальные возможности современных языков программирования. Интеграция программных модулей, реализованных в различных языках в различных парадигмах программирования. Возможности интеграции языков F# и C#, предоставляемые платформой .NET компании Microsoft. Формы и методы проведения занятий по разделу, применяемые учебные технологии: Обязательное выделение задач, актуальных для данной аудитории, и демонстрация применения изучаемых средств для их решения. Оперативные опросы по материалам занятий.
Элементы контроля

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

  • неблокирующий Лабораторные работы
  • неблокирующий Домашнее задание (самостоятельная работа)
  • неблокирующий Экзамен
Промежуточная аттестация

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

  • Промежуточная аттестация (4 модуль)
    0.3 * Домашнее задание (самостоятельная работа) + 0.3 * Лабораторные работы + 0.4 * Экзамен
Список литературы

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

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

  • Кубенский А. А. - ФУНКЦИОНАЛЬНОЕ ПРОГРАММИРОВАНИЕ. Учебник и практикум для академического бакалавриата - М.:Издательство Юрайт - 2019 - 348с. - ISBN: 978-5-9916-9242-7 - Текст электронный // ЭБС ЮРАЙТ - URL: https://urait.ru/book/funkcionalnoe-programmirovanie-433710

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

  • Лаврищева Е. М. - ПРОГРАММНАЯ ИНЖЕНЕРИЯ И ТЕХНОЛОГИИ ПРОГРАММИРОВАНИЯ СЛОЖНЫХ СИСТЕМ 2-е изд., испр. и доп. Учебник для вузов - М.:Издательство Юрайт - 2019 - 432с. - ISBN: 978-5-534-07604-2 - Текст электронный // ЭБС ЮРАЙТ - URL: https://urait.ru/book/programmnaya-inzheneriya-i-tehnologii-programmirovaniya-slozhnyh-sistem-436514
  • Соколова В. В. - ВЫЧИСЛИТЕЛЬНАЯ ТЕХНИКА И ИНФОРМАЦИОННЫЕ ТЕХНОЛОГИИ. РАЗРАБОТКА МОБИЛЬНЫХ ПРИЛОЖЕНИЙ. Учебное пособие для прикладного бакалавриата - М.:Издательство Юрайт - 2019 - 175с. - ISBN: 978-5-9916-6525-4 - Текст электронный // ЭБС ЮРАЙТ - URL: https://urait.ru/book/vychislitelnaya-tehnika-i-informacionnye-tehnologii-razrabotka-mobilnyh-prilozheniy-433981