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

Магистерская программа «Науки о данных (Data Science)»

Обучение современному C++

2020/2021
Учебный год
RUS
Обучение ведется на русском языке
5
Кредиты
Статус:
Курс по выбору
Когда читается:
1-й курс, 1, 2 модуль

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

Аннотация

С++ - мощный язык с богатым наследием. Тем, кто только ступил на путь освоения этого языка, очень просто заблудиться в изобилии техник и приёмов, созданных за последние 30 лет. Курс учит "Modern C++" - современному подмножеству языка (стандарты 14, 17 и 20). Много внимания уделяется инструментам и библиотекам - вещам которые не являются частью языка, но без которых не получится построить большой и сложный проект.
Цель освоения дисциплины

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

  • знать основные конструкции и идиомы современного языка С++
  • уметь писать работающие программы на языке С++
  • уметь отлаживать код программ на языке C++
  • уметь использовать язык С++ в качестве инструмента для решения практических задач
  • владеть основными средствами языка С++
Планируемые результаты обучения

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

  • знать основные конструкции и идиомы современного языка С++
  • уметь писать работающие программы на языке С++
  • уметь использовать язык С++ в качестве инструмента для решения практических задач
  • владеть основными средствами языка С++
  • уметь отлаживать код программ на языке C++
  • уметь использовать язык С++
  • в качестве инструмента для решения практических задач владеть основными средствами языка С++
Содержание учебной дисциплины

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

  • Введение в С++. Настройка окружения
    Компиляторы , Типы данных в C++, Циклы while и for
  • Константы, ссылки и указатели. Структуры
    Введение в структуры, константные ссылки, изменяемые итераторы, работы с памятью, ввод и вывод программы
  • Классы
    Экземпляры или объекты класса, Методы классов,Модификаторы доступа public и private
  • Динамическое управление памятью.
    Функции calloc, malloc, free, операторы new и delete
  • Умные указатели.
    Деструкторы и идиомы RAII, Unique_ptr и shared_ptr и weak_ptr, Шаблоны и методы
  • Стандартная библиотека шаблонов. Шаблоны
    Знакомства с Standard Template Library, Очередь, Сортировка, Стэк
  • Наследование и виртуальные функции
    Знакомства со средствами объектно-ориентированного программирования, Модификаторы доступа, Уровни наследования
  • Обработка ошибок
    Типы исключений, Stdexcept, Обработка исключений с помощью try, catch и throw.
  • Паттерны проектирования
    Проектирования GOF, Порождающие паттерны, Структурные паттерны, Паттерны поведения
  • Python C Api
    Знакомство с Python C Api,Интерпретатор питона,Функции и методы работы с api Python C
  • Пространства имен, move-семантика, perfect forwarding. Регулярные выражения
    Rvalue-ссылки,Проблемы идеальной передачи,Сжатие ссылок, Основы синтаксиса регулярных выражений,Квантификаторы,Скобочные группы
  • Представление структур и классов в памяти. Выравнивание данных. Указатели на члены-методы класса. Variadic templates.
    Основы устройства современных ЭВМ, RAM, CPU, Представление класса С++ в памяти,Указатели на функции,Шаблоны с переменным количеством параметров
  • Кодировки
    Различия кодировок, Работы с различными кодировками в С++, Кодировки UTF-8 и ASCII
  • Идиома pimpl
    Инкапсуляция, Общая механика работы pimpl
Элементы контроля

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

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

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

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

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

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

  • A facility for creating Python extensions in C++. (1998). Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsstc&AN=edsstc.14305
  • Мейерс С. - Наиболее эффективное использование C++. 35 новых рекомендаций по улучшению ваших программ и проектов - Издательство "ДМК Пресс" - 2007 - 294с. - ISBN: 5-94074-033-2 - Текст электронный // ЭБС ЛАНЬ - URL: https://e.lanbook.com/book/1224
  • Мэйерс С. - Эффективное использование C++. 55 верных способов улучшить структуру и код ваших прграмм - Издательство "ДМК Пресс" - 2008 - 300с. - ISBN: 5-94074-304-8 - Текст электронный // ЭБС ЛАНЬ - URL: https://e.lanbook.com/book/1245
  • Павловская Т.А. - Программирование на языке C++ - Национальный Открытый Университет "ИНТУИТ" - 2016 - 154с. - ISBN: - Текст электронный // ЭБС ЛАНЬ - URL: https://e.lanbook.com/book/100409
  • Энтони Уильямс - Параллельное программирование на C++ в действии. Практика разработки многопоточных программ - Издательство "ДМК Пресс" - 2012 - 672с. - ISBN: 978-5-94074-448-1 - Текст электронный // ЭБС ЛАНЬ - URL: https://e.lanbook.com/book/4813

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

  • Guido Van Rossum, & Fred L. Drake. (2004). Python/C API Reference Manual Release 2.3.4. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsbas&AN=edsbas.2FEE239A
  • Moore, B. (2016). Paraffin: a Parallelism API for Multiple Languages Including Ada, C, C++, C#, Java, FORTRAN, Python, Rust. Ada User Journal, 37(2), 99–109. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=asn&AN=119225673