[АРХИВ] Программирование (Весна 2024)

Темы лекций, осень 2024

Записи лекций, осень 2023 + весна 2024

[АРХИВ] Программирование (Весна 2023)

План-проспект лекций:

Выборочный обзор libc (09.02)
  1. Вспоминаем организационные моменты (лабораторные, курсы, рейтинговая система, экзамен)
  2. Подробное рассмотрение assert, errno, signal, stddef, stdlib, time, wchar с приближенными к реальности примерами
  3. Поверхностное рассмотрение остальных библиотек
  4. Повторение пройденного материала, вопросы по задачам 1 семестра.
Структуры данных + остаточный обзор libc (02.03)
  1. Рассмотрение оставшихся после string.h библиотек
  2. Введение в структуры данных – массивы, списки, деревья, графы, примеры работы со списком
Списки (09.03)
  1. Разбор списков – написать вместе со студентами за лекцию готовый код линейного списка (insert, remove, find, create, printList).
Разбор стека и очереди (16.03)
  1. Разбор реализации стека и очереди на списке и на массиве, сравнение реализаций
Введение в С++ (23.03)
  1. Что такое язык С++, его назначение
  2. Пространства имен, подключение библиотек
  3. Инкапсуляция на примере структур данных из прошлых занятий (список, стек)
  4. Классы, методы (конструктор, деструктор), спецификаторы доступа
Рекурсия, работа с файлами, обход файлового дерева (30.03)
  1. Рекурсия, глубина рекурсии
  2. Файловый дескриптор – что это такое, и зачем нужно. Сценарии: tail и ls -l /proc/…..; lsof и несколько tail-ов; fprintf и IO потоки;
  3. Базовые функции работы с файлами fopen, fclose, fread, fwrite, fseek, ftell и тп. Дескриптор в директории
  4. Рекурсивный обход файловой системы
  5. (optional) Getopt и аргументы командной строки
Getopt, отладка в виртуальных машинах, С++ (06.04)
  1. Пара слов по контрольной – какие задачи, какое выбрать время
  2. Разработка программ – почему важно запускать и тестировать свои программы в виртуальных машинах
  3. С++ – исключения, new/delete
  4. Getopt и аргументы командной строки
  5. Отладка программ в виртуальных машинах через IDE
  6. (optional) Системы сборки – Makefile (вспомнить), Autotools
Autotools, словари, инкапсуляция (как сломать, сделать в Си) (13.04)
  1. Системы сборки – Makefile (вспомнить), Autotools
  2. Темы для контрольной + словари (от простой реализации до хэш-таблиц)
  3. Как сломать инкапсуляцию в С++
  4. Как сделать инкапсуляцию в Си
Разбор контрольной (20.04)
  1. Примеры работ
  2. Разбор сложных задач
Курсовая, BMP (27.04)
  1. Базовая задача курсовой – как может выглядеть решение
  2. Поверхностный разбор структуры BMP (особое внимание на сложные поля, таблицу цветов)
  3. Sizeof struct, директива pragma
  4. Как создать BMP с нуля
  5. Пример, как считать, изменить и сохранить BMP файл. Как учесть все версии заголовков.
Курсовая, libpng (03.05)
  1. Структура формата PNG – сигнатура и чанки (критические/необязательные/пользовательские)
  2. Разбора примера READ/WRITE, как обработать пиксельные данные
Курсовая, libpng (18.05)
  1. Shared-библиотеки – как создать, как использовать
  2. Системы сборки – Autotools, CMake
  3. C++ ссылки (объявления, копии, присваивание)
Регулярные выражения (25.05)
  1. Как работать с libc и другими .so библиотеками в Python
  2. Doxygen, пример на стеке
  3. Регулярные выражения – как использовать, примеры
Регулярные выражения (01.06)
  1. Регулярные выражения – Libc
  2. Полезные утилиты, которые стоит помнить: find, grep, ssh, gpg
  3. История терминала (history) – как увеличить хранилище, где посмотреть (разные пользователи), reverse-search
  4. Valgrind (+ callgrind) – анализ программы
  5. Программные каналы – mkfifo

[АРХИВ] Программирование (Весна)

—-

Обзор стандартной библиотеки Си. Различие базового синтаксиса Си и Си++
Структуры. Объединения. Списки. Динамическая и статическая реализация

Указатель на функцию

Практики проектирования, разработки, отладки, сопровождения. Стили кодирования
Работа со строками. Алгоритмы на строках. Обработка текстов
Регулярные выражения
Рекурсия и циклы
Ввод вывод. Файлы

Пример.

Разработка Command Line Interface (CLI)
Хэширование и хэш-таблицы
Алгоритмы обхода, концепция итератора. Использование текстовых форматов
Введение в синтаксис С++
Отладка. Обработка исключительных ситуаций и ошибок