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

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

Материалы

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

  1. Введение

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

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

    • Большие языковые модели (БЯМ/LLM) в разработке ПО: обзор и типичные сценарии применения.
    • Использование БЯМ как ассистента: генерация, объяснение, ревью и улучшение кода.
    • Агентные системы: автономные агенты и субагенты, планирование и декомпозиция задач.
    • Скиллы (встраиваемые наборы инструкций и навыков) и расширения.
    • MCP-серверы: интеграция языковых моделей с инструментами и данными.
    • RAG: извлечение и подача релевантного контекста в запрос.
    • Место ИИ в жизненном цикле ПО: проектирование, реализация, написание тестов, отладка, рефакторинг.
    • Ограничения, риски и ответственность при использовании ИИ.
  4. Язык программирования C: программирование, структура и сборка проектов

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

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

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

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

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

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

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

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

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

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

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

Софт

Литература

  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
  4. Таулли, Т. Программирование с помощью искусственного интеллекта. Улучшенное планирование, кодирование, тестирование и развертывание : [перевод с английского] / Том Таулли. — Санкт-Петербург : БХВ-Петербург, 2025. — 288 с. — URL: https://bhv.ru/
  5. Рассел, С. Искусственный интеллект: современный подход / С. Рассел, П. Норвиг. — 4-е изд. — Москва : Вильямс, 2021. — 1408 с.

Note

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