=== Программирование (Весна 2023) === План-проспект лекций: == Выборочный обзор libc (09.02) == - Вспоминаем организационные моменты (лабораторные, курсы, рейтинговая система, экзамен) - Подробное рассмотрение assert, errno, signal, stddef, stdlib, time, wchar с приближенными к реальности примерами - Поверхностное рассмотрение остальных библиотек - Повторение пройденного материала, вопросы по задачам 1 семестра. == Структуры данных + остаточный обзор libc (02.03) == - Рассмотрение оставшихся после string.h библиотек - Введение в структуры данных -- массивы, списки, деревья, графы, примеры работы со списком == Списки (09.03) == - Разбор списков -- написать вместе со студентами за лекцию готовый код линейного списка (insert, remove, find, create, printList). == Разбор стека и очереди (16.03) == - Разбор реализации стека и очереди на списке и на массиве, сравнение реализаций == Введение в С++ (23.03) == - Что такое язык С++, его назначение - Пространства имен, подключение библиотек - Инкапсуляция на примере структур данных из прошлых занятий (список, стек) - Классы, методы (конструктор, деструктор), спецификаторы доступа == Рекурсия, работа с файлами, обход файлового дерева (30.03) == - Рекурсия, глубина рекурсии - Файловый дескриптор -- что это такое, и зачем нужно. Сценарии: tail и ls -l /proc/.....; lsof и несколько tail-ов; fprintf и IO потоки; - Базовые функции работы с файлами fopen, fclose, fread, fwrite, fseek, ftell и тп. Дескриптор в директории - Рекурсивный обход файловой системы - (optional) Getopt и аргументы командной строки == Getopt, отладка в виртуальных машинах, С++ (06.04) == - Пара слов по контрольной -- какие задачи, какое выбрать время - Разработка программ -- почему важно запускать и тестировать свои программы в виртуальных машинах - С++ -- исключения, new/delete - Getopt и аргументы командной строки - Отладка программ в виртуальных машинах через IDE - (optional) Системы сборки -- Makefile (вспомнить), Autotools == Autotools, словари, инкапсуляция (как сломать, сделать в Си) (13.04) == - Системы сборки -- Makefile (вспомнить), Autotools - Темы для контрольной + словари (от простой реализации до хэш-таблиц) - Как сломать инкапсуляцию в С++ - Как сделать инкапсуляцию в Си == Разбор контрольной (20.04) == - Примеры работ - Разбор сложных задач == Курсовая, BMP (27.04) == - Базовая задача курсовой -- как может выглядеть решение - Поверхностный разбор структуры BMP (особое внимание на сложные поля, таблицу цветов) - Sizeof struct, директива pragma - Как создать BMP с нуля - Пример, как считать, изменить и сохранить BMP файл. Как учесть все версии заголовков. == Курсовая, libpng (03.05) == - Структура формата PNG -- сигнатура и чанки (критические/необязательные/пользовательские) - Разбора примера READ/WRITE, как обработать пиксельные данные == Курсовая, libpng (18.05) == - Shared-библиотеки -- как создать, как использовать - Системы сборки -- Autotools, CMake - C++ ссылки (объявления, копии, присваивание) == Регулярные выражения (25.05) == - Как работать с libc и другими .so библиотеками в Python - Doxygen, пример на стеке - Регулярные выражения -- как использовать, примеры == Регулярные выражения (01.06) == - Регулярные выражения -- Libc - Полезные утилиты, которые стоит помнить: find, grep, ssh, gpg - История терминала (history) -- как увеличить хранилище, где посмотреть (разные пользователи), reverse-search - Valgrind (+ callgrind) -- анализ программы - Программные каналы -- mkfifo === [АРХИВ] Программирование (Весна) === [[https://docs.google.com/document/d/e/2PACX-1vREUCMXjSkfCWTX92KUpUsrcjpnuiEifOgge-vGberr3OOVYM8EduVJWnRDEkzkzzEDL9R8nJoFqziU/pub|Список тем лекций]] - [[https://youtu.be/2kA9JwnlEuw|Лекция 1 (07.02.22)]] - [[https://youtu.be/YC3s_1szRGw|Лекция 2 (14.02.22)]] - [[https://youtu.be/L2Mbmh6Nju4|Лекция 3 (21.02.22)]] - [[https://youtu.be/YnL6mZIeCHc|Лекция 4 (28.02.22)]] - [[https://youtu.be/2nvASmQuULw|Лекция 5 (05.03.22)]] - [[https://youtu.be/QsiMkqlhb7A|Лекция 6 (14.03.22)]] - [[https://youtu.be/x_VmX8g_0qs|Лекция 7 (28.03.22)]] - [[https://youtu.be/fCQRboLFAbg|Лекция 8 (04.04.22)]] - [[https://youtu.be/nMTRHeZwYMU|Лекция 9 (11.04.22)]] - [[https://youtu.be/NKIKkBridks|Лекция 10 (25.04.22)]] - [[https://youtu.be/hgHDPoeNomU|Лекция 11 (16.05.22)]] - [[https://youtu.be/Ti8DNCCQHWg|Лекция 12 (23.05.22)]] ---- == Обзор стандартной библиотеки Си. Различие базового синтаксиса Си и Си++ == == Структуры. Объединения. Списки. Динамическая и статическая реализация == [[.:lectures:code2]] == Практики проектирования, разработки, отладки, сопровождения. Стили кодирования == == Работа со строками. Алгоритмы на строках. Обработка текстов == == Регулярные выражения == == Рекурсия и циклы == == Ввод вывод. Файлы == [[.:lectures:code3| Пример.]] == Разработка Command Line Interface (CLI) == == Хэширование и хэш-таблицы == == Алгоритмы обхода, концепция итератора. Использование текстовых форматов == * [[.:lectures:code4| Пример программы осуществляющей перебор атрибутов в xml.]] * [[.:lectures:extra| Дополнительное задание по уроку]] == Введение в синтаксис С++ == * [[.:lectures:code5]] * [[.:lectures:code6]] * [[.:lectures:code7]] == Отладка. Обработка исключительных ситуаций и ошибок ==