• A
  • A
  • A
  • АБB
  • АБB
  • АБB
  • А
  • А
  • А
  • А
  • А
Обычная версия сайта
Специалитет 2019/2020

Языки программирования

Лучший по критерию «Полезность курса для Вашей будущей карьеры»
Лучший по критерию «Новизна полученных знаний»
Статус: Курс обязательный (Компьютерная безопасность)
Когда читается: 1-й курс, 1-4 модуль
Формат изучения: Full time
Специальность: 10.05.01. Компьютерная безопасность
Язык: русский
Кредиты: 8

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

Аннотация

Основной целью освоения дисциплины «Языки программирования» является формирование базовых компетенций, связанных с разработкой программного обеспечения при решении профессиональных задач. В рамках дисциплины вырабатываются навыки программирования и алгоритмизации с применением современных процедурных и объектно-ориентированных языков программирования. Параллельно с рассмотрением данных языков, демонстрируется их связь с языком ассемблера. За счёт рассмотрения основных представителей языков различного уровня и их связей, закладывается понимание иерархии существующего ПО, происходит освоение разнообразного инструментария и подготовка специалиста к проектированию и анализу программных систем.
Цель освоения дисциплины

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

  • Знакомство слушателей дисциплины с основными парадигмами и теоретическими основами программирования, терминологией объектно-ориентированного программирования
  • Формирование базовых компетенций, связанных с разработкой программного обеспечения при решении профессиональных задач и представления о возможностях и особенностях объектно-ориентированных языков программирования при проектировании, разработке и отладке компьютерных программ
  • Изучение теоретических основ программирования, методов реализации алгоритмов различного типа, базовых принципов объектно-ориентированного программирования, основных подходов машинного обучения
  • Выработка навыков программирования и алгоритмизации с применением современных процедурных и объектно-ориентированных языков программирования
  • Получение опыта работы с механизмами статического полиморфизма, такими как шаблоны функций и классов; поиска эффективных реализаций различных алгоритмов, практических навыков разработки прикладных программ, в том числе для методов анализа данных
Планируемые результаты обучения

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

  • Знать парадигмы и методологии программированияю
  • Знать общие принципы построения и использования современных языков программирования высокого уровня.
  • Знать особенности наиболее распространенных объектно-ориентированных языков программирования.
  • Знать базовые структуры данных.
  • Уметь формализовать поставленную задачу
  • Уметь применять в профессиональной деятельности современные объектно-ориентированные языки программирования
  • Уметь работать с интегрированными средами разработки программного обеспечения
  • Знать современные технологии программирования
  • Знать основные комбинаторные и теоретико-графовые алгоритмы
Содержание учебной дисциплины

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

  • Введение в языки программирования
    Общие сведения о языках программирования. Инструментальные средства разработки ПО. Основные понятия архитектуры ЭВМ
  • Знакомство с ООП
    Структурные типы данных. Абстракция, инкапсуляция, наследование. Полиморфизм
  • Введение в программирование на С++.
    Общая структура программы. Пространства имен. Ввод/вывод в С++. Операции инкремента и декремента. Особенности операторов инкремента и декремента при работе с указателями. Функции. Ссылки. Выделение/освобождение памяти в С++. Константы и макроопределения. Перегрузка функций.
  • Построение пользовательских типов данных
    Понятие объекта и класса. Создание пользовательских классов. Принцип композиции при конструировании новых классов. Инициализация данных объекта класса (Конструктор по умолчанию, конструктор с параметрами). Назначение деструктора. Способы передачи объекта в функцию, конструктор копирования. Перегрузка операторов. Статические переменные и методы класса. Константные методы.
  • Знакомство с библиотекой STL.
    Классы стандартной библиотеки для работы со строками. Классы стандартной библиотеки для работы с контейнерами. Операции с объектами стандартной библиотеки. Преобразование типов.
  • Обработка исключений.
    Понятие исключения. Механизм генерации и обработки исключений
  • Наследование, виртуальные функции, полиморфизм.
    Спецификаторы доступа public, protected, private. Понятие и механизм наследования классов. Преимущества и недостатки наследования по сравнению с композицией. Перегруженные методы. Виртуальные функции, понятие полиморфизма. Чистые виртуальные функции и абстрактные классы. Доступ к объекту через указатель, преобразование типов. Непрямые базовые классы. Виртуальный деструктор. Множественное наследование
  • Шаблоны С++.
    Понятие обобщенного программирования. Определение шаблона класса. Создание объектов шаблона класса. Наследование шаблонных классов. Шаблоны функций.
  • Использование С++ в алгоритмах на графах.
    Основные алгоритмы на графах и структуры данных, используемых в них, поиск в глубину, поиск в ширину, алгоритм Дейкстры, минимальное остовное дерево. Более сложные алгоритмы на графах
Элементы контроля

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

  • неблокирующий экзамен
    Создание программы в IDE и защита ее текста, 60 минут
  • неблокирующий текущий контроль
Промежуточная аттестация

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

  • Промежуточная аттестация (3 модуль)
    0.5 * текущий контроль + 0.5 * экзамен
Список литературы

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

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

  • Искусство программирования. Т.1: Основные алгоритмы, Кнут Д. Э., 2011

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

  • - Алексеев Е.Р., Злобин Г.Г., Костюк Д.А. — Программирование на языке С++ в среде Qt Creator - Национальный Открытый Университет "ИНТУИТ" - 2016 - ISBN: - Текст электронный // ЭБС Лань - URL: https://e.lanbook.com/book/100414
  • С/С++. Алгоритмы и приемы программирования, Фридман А., Кландер Л., 2009