Современные инструменты и технологии проргаммирования
Коммуникация
- Курс на HwProj
- Чатик? Ну подумаем...
Материалы
Примерное Общее содержание курса (один из вариантов =))
-
Введение
- Почему, для кого и зачем этот курс
- Общая историческая справка
-
Основной инструментарий продвинутого пользователя и программиста
- Введение: Задачи, решаемые с помощью ЭВМ, понятия алгоритма и данных
- Среды исполнения программ: Unix-подобные системы, командные оболочки, сборка простой программы на C
- Основы конфигурационного управления: версионирование: система Git; сервисы GitHub/GitLab/BitBucket
-
Искусственный интеллект в программировании
- Большие языковые модели (БЯМ/LLM) в разработке ПО: обзор и типичные сценарии применения.
- Использование БЯМ как ассистента: генерация, объяснение, ревью и улучшение кода.
- Агентные системы: автономные агенты и субагенты, планирование и декомпозиция задач.
- Скиллы (встраиваемые наборы инструкций и навыков) и расширения.
- MCP-серверы: интеграция языковых моделей с инструментами и данными.
- RAG: извлечение и подача релевантного контекста в запрос.
- Место ИИ в жизненном цикле ПО: проектирование, реализация, написание тестов, отладка, рефакторинг.
- Ограничения, риски и ответственность при использовании ИИ.
-
Язык программирования C: программирование, структура и сборка проектов
- Основы C: функции, операторы, примитивные типы данных; стиль кодирования. Aлгоритмизация и программирование простых задач на практике.
- Основы C: массивы, указатели, строки, структуры и объединения. Алгоритмизация и программирование простых задач на практике.
- Основы C: препроцессор, система юнитов. Алгоритмизация и программирование простых задач на практике.
- Конфигурационное управление: сборка проектов. Инструменты Make, CMake.
-
Опционально: язык прогарммирования C++
- История, мотивация, основные возможности
- Стандарты языка
- Актуальные возможности С++11, 14, 17 и 20
-
Библиотеки, инструментальные средства и продвинутое конфигурационное управление
- Инструментальные средства разработки, отладки и профилирования. Инструменты GDB/LLDB, gprof, VS Code.
- Использование внешних библиотек. Pkgconfig, Conan.
- Тестирование. Автоматизация тестирования, модульные тесты.
- Конфигурационное управление: непрерывная интеграция. GitHub Actions.
-
Опционально: элементы архитектуры вычислительных систем
- Виды архитектур
- Основы схемотехники
- Современные семейства процессоров
-
Опционально: Решение вычислительных задач с использованием различных аппаратных платформ.
- Решение простых вычислительных задач. Суммирования рядов Тейлора, решение СЛАУ методом Гаусса, реализация длинной арифметики, хэш-функций и простых функций симетричного шифрования.
- Кросс-разработка: кросс-компиляция для аппаратных платформ RISC-V и ARM; запуск и отладка на симуляторах.
Лекционные и побочные материалы
По «первой части» курса
- Немного вводных слайдов
- «Про Git» (английская версия актуальнее)
- Руководство по командной оболочке
- Любое общее руководство, например это
- Про работу с файлами (1), (2), (3)
- Курс «Пропущенный семестр»: в оригинале и в переводе на русский
- Про C и системное программирование
- Примеры
- По ИИ в разработке 🤖
- Обзорное введение в большие языковые модели и агентные системы: OpenAI guides, Model Context Protocol
- Практика использования ИИ в разработке ПО (агенты, субагенты, скиллы, MCP-серверы, RAG) и примеры конфигураций ассистентов
- Место ИИ в жизненном цикле ПО: проектирование, реализация, написание тестов, отладка, рефакторинг
По «второй части» курса 🧔🏻
- Make: «Метапрограммирование» «Пропущенного семестра», GNU Make Manual, пример методики использования Make, наконец наш пример
- CMake, Meson: Неплохое вводное описание CMake от коллег из ИТМО, Meson Quickstart Guide, «Meson как собрать и пользоваться», наконец наши примеры (1) (2)
- GDB, LLDB, отладка в «человеческом» отладчике: LLDB Tutorial, справочник по GDB наконец наш пример отладки и сборки
- CI: «Что такое CI (Continuous Integration)», «Что такое непрерывная интеграция (CI)?» уже в исполнении JB, Github Actions. Простой пример для уверенного знакомства
- Наши примеры на тему:
- программы, просто состоящей из нескольких юнитов (Фрактал), но с аккуратной сборкой
- симулятора RISC-Z — цикл выборки команд, другие системы сборки, опять же разделение на юниты по принципу того, что в них делается
- простенького интерпретатора — тут важно, что синтаксический анализатор генерируется при сборке программы
Вопросы к экзамену
- История и назначение языка Си в разные эпохи.
- Командные оболочки: интерактивный и пакетный режимы, основные возможности.
- Управление вводом и выводом в командных оболочках и в компилируемых языках на примере Си.
- Системы управления версиями. Git Workflow, GitHub Workflow.
- Большие языковые модели в разработке ПО: сценарии применения, ограничения и ответственность.
- Агентные системы в программировании: агенты и субагенты, скиллы, MCP-серверы, RAG.
- Использование ИИ в жизненном цикле ПО: проектирование, реализация, написание тестов, отладка, рефакторинг.
- Язык Си: примитивные типы данных, управляющие конструкции, функции.
- Язык Си: указатели и массивы.
- Язык Си: пользовательские типы — структуры, объединения, битовые поля.
- Язык Си: модель единиц сборки, препроцессор. Сборка с использованием откомпилированных библиотек, сокрытие реализации библиотеки, минимизация её интерфейса.
- Автоматизация пакетных задач: Make.
- Генераторы и современные системы сборки: CMake, Meson.
- Отладка откомпилированных программ при помощи GDB, LLDB и графических оболочек над ними (например, VS Code).
- Модульное тестирование: назначение, реализация, примеры.
- Непрерывная интеграция. GitHub Actions.
- Система команд RISC-V. Формат машинного кода.
- Общее описание архитектуры и функционирования простейшего симулятора RISC-процессора.
- Вдумчивые и конструктивные замечания по содержанию курса.
Литература и другие информационные источники
Софт
-
Операционная система и окружение
-
Универсальные средства разработки
- Git
- Visual Studio Code
- Любой хороший текстовый редактор
-
Для пользователей GNU/Linux
- Git and VS Code as system packages
- GCC or CLang, recent versions
- Make, CMake
- DGB & LLDB
- Valgrind
- Qemu
-
Для пользователей OS X
-
Для пользователей Windows:
- Unix-подобные подсистемы и указанные выше пакеты (GCC и т.д.)
- C++ support for Visual Studio (и немного несвежие инструкции)
Литература
- Керниган, Б. В. Язык программирования C : учебник / Б. В. Керниган, Д. М. Ричи. — 2-е изд. — Москва : ИНТУИТ, 2016. — 313 с. — Текст : электронный // Лань : электронно-библиотечная система. — [Электронный ресурс] https://e.lanbook.com/book/100543
- Довек, Ж. Введение в теорию языков программирования / Ж. Довек, Ж. -. Леви. — Москва : ДМК Пресс, 2013. — 134 с. — ISBN 978-5-94074-913-4. — Текст : электронный // Лань : электронно-библиотечная система (доступно по подписке СПбГУ). — [Электронный ресурс] https://e.lanbook.com/book/82826
- Сартасов С.Ю. Практикум на ЭВМ. [Электронный ресурс] http://hdl.handle.net/11701/15461
- Таулли, Т. Программирование с помощью искусственного интеллекта. Улучшенное планирование, кодирование, тестирование и развертывание : [перевод с английского] / Том Таулли. — Санкт-Петербург : БХВ-Петербург, 2025. — 288 с. — URL: https://bhv.ru/
- Рассел, С. Искусственный интеллект: современный подход / С. Рассел, П. Норвиг. — 4-е изд. — Москва : Вильямс, 2021. — 1408 с.
https://edu.dluciv.name/search_index.ru.json $MATCHES more matchesNote