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

Коммуникация

Материалы

Примерное Общее содержание курса (один из вариантов =))

  1. Введение

    • Почему, для кого и зачем этот курс
    • Общая историческая справка
  2. Основной инструментарий продвинутого пользователя и программиста

    • Введение: Задачи, решаемые с помощью ЭВМ, понятия алгоритма и данных
    • Среды исполнения программ: Unix-подобные системы, командные оболочки, сборка простой программы на C
    • Основы конфигурационного управления: версионирование: система Git; сервисы GitHub/GitLab/BitBucket
  3. Язык программирования C: программирование, структура и сборка проектов

    • Основы C: функции, операторы, примитивные типы данных; стиль кодирования. Aлгоритмизация и программирование простых задач на практике.
    • Основы C: массивы, указатели, строки, структуры и объединения. Алгоритмизация и программирование простых задач на практике.
    • Основы C: препроцессор, система юнитов. Алгоритмизация и программирование простых задач на практике.
    • Конфигурационное управление: сборка проектов. Инструменты Make, CMake.
  4. Опционально: язык прогарммирования C++

    • История, мотивация, основные возможности
    • Стандарты языка
    • Актуальные возможности С++11, 14, 17 и 20
  5. Библиотеки, инструментальные средства и продвинутое конфигурационное управление

    • Инструментальные средства разработки, отладки и профилирования. Инструменты GDB/LLDB, gprof, VS Code.
    • Использование внешних библиотек. Pkgconfig, Conan.
    • Тестирование. Автоматизация тестирования, модульные тесты.
    • Конфигурационное управление: непрерывная интеграция. GitHub Actions.
  6. Опционально: элементы архитектуры вычислительных систем

    • Виды архитектур
    • Основы схемотехники
    • Современные семейства процессоров
  7. Опционально: Решение вычислительных задач с использованием различных аппаратных платформ.

    • Решение простых вычислительных задач. Суммирования рядов Тейлора, решение СЛАУ методом Гаусса, реализация длинной арифметики, хэш-функций и простых функций симетричного шифрования.
    • Кросс-разработка: кросс-компиляция для аппаратных платформ RISC-V и ARM; запуск и отладка на симуляторах.

Лекционные и побочные материалы

По «первой части» курса

По «второй части» курса 🧔🏻‍

Вопросы к экзамену

  1. История и назначение языка Си в разные эпохи.
  2. Командные оболочки: интерактивный и пакетный режимы, основные возможности.
  3. Управление вводом и выводом в командных оболочках и в компилируемых языках на примере Си.
  4. Системы управления версиями. Git Workflow, GitHub Workflow.
  5. Язык Си: примитивные типы данных, управляющие конструкции, функции.
  6. Язык Си: указатели и массивы.
  7. Язык Си: пользовательские типы — структуры, объединения, битовые поля.
  8. Язык Си: модель единиц сборки, препроцессор. Сборка с использованием откомпилированных библиотек, сокрытие реализации библиотеки, минимизация её интерфейса.
  9. Автоматизация пакетных задач: Make.
  10. Генераторы и современные системы сборки: CMake, Meson.
  11. Отладка откомпилированных программ при помощи GDB, LLDB и графических оболочек над ними (например, VS Code).
  12. Модульное тестирование: назначение, реализация, примеры.
  13. Непрерывная интеграция. GitHub Actions.
  14. Общее описание архитектуры и функционирования простейшего симулятора RISC-процессора.
  15. Вдумчивые и конструктивные замечания по содержанию курса.

Литература и другие информационные источники

Софт

Литература

  1. Керниган, Б. В. Язык программирования C : учебник / Б. В. Керниган, Д. М. Ричи. — 2-е изд. — Москва : ИНТУИТ, 2016. — 313 с. — Текст : электронный // Лань : электронно-библиотечная система. — [Электронный ресурс] https://e.lanbook.com/book/100543
  2. Довек, Ж. Введение в теорию языков программирования / Ж. Довек, Ж. -. Леви. — Москва : ДМК Пресс, 2013. — 134 с. — ISBN 978-5-94074-913-4. — Текст : электронный // Лань : электронно-библиотечная система  (доступно по подписке СПбГУ). — [Электронный ресурс] https://e.lanbook.com/book/82826
  3. Сартасов С.Ю. Практикум на ЭВМ. [Электронный ресурс] http://hdl.handle.net/11701/15461

Note

Эта страница доступна на старом сайте