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