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

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

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

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

Аннотация

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

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

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

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

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

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

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

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

  • неблокирующий экзамен
    Экзамен проводится в форме создания программы в IDE и загрузки исходного программного кода для проверки преподавателем. Экзамен проводится на платформе MSTeams (https://teams.microsoft.com/l/team/19%3a4108e0d4ec7c4a249c9ec47c4571296f%40thread.tacv2/conversations?groupId=fa04fb5a-54ab-40f9-96c3-b2ea9a1c766e&tenantId=21f26c24-0793-4b07-a73d-563cd2ec235f). К экзамену необходимо подключиться за 5 минут до начала. Компьютер студента должен удовлетворять стандартным требованиям MSTeams для входа на канал и загрузки результатов работы. Для участия в экзамене студент обязан в начале экзамена включить камеру, показав свое лицо. Во время экзамена студентам разрешено пользоваться справочными материалами для написания программы в IDE. Долговременным нарушением связи во время экзамена считается потери связи на весь период экзамена (1,5 часа). При долговременном нарушении связи студент не может продолжить участие в экзамене. Процедура пересдачи аналогична процедуре сдачи.
  • неблокирующий текущий контроль
  • неблокирующий экзамен
    Экзамен проводится в форме создания программы в IDE и загрузки исходного программного кода для проверки преподавателем. Экзамен проводится на платформе MSTeams (https://teams.microsoft.com/l/team/19%3a4108e0d4ec7c4a249c9ec47c4571296f%40thread.tacv2/conversations?groupId=fa04fb5a-54ab-40f9-96c3-b2ea9a1c766e&tenantId=21f26c24-0793-4b07-a73d-563cd2ec235f). К экзамену необходимо подключиться за 5 минут до начала. Компьютер студента должен удовлетворять стандартным требованиям MSTeams для входа на канал и загрузки результатов работы. Для участия в экзамене студент обязан в начале экзамена включить камеру, показав свое лицо. Во время экзамена студентам разрешено пользоваться справочными материалами для написания программы в IDE. Долговременным нарушением связи во время экзамена считается потери связи на весь период экзамена (1,5 часа). При долговременном нарушении связи студент не может продолжить участие в экзамене. Процедура пересдачи аналогична процедуре сдачи.
  • неблокирующий текущий контроль
    Включает оценку за аудиторные задания с весом 1/3 и самостоятельную работу с весом 2/3.
Промежуточная аттестация

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

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

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

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

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

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

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