User Tools

Site Tools


start:prog2:lectures

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
start:prog2:lectures [2023/02/08 18:16]
yaroslav.gosudarkin
start:prog2:lectures [2023/06/01 10:36] (current)
yaroslav.gosudarkin
Line 3: Line 3:
 План-проспект лекций:​ План-проспект лекций:​
  
-== Выборочный обзор libc ==+== Выборочный обзор libc (09.02) ​==
  
   - Вспоминаем организационные моменты (лабораторные,​ курсы, рейтинговая система,​ экзамен)   - Вспоминаем организационные моменты (лабораторные,​ курсы, рейтинговая система,​ экзамен)
   - Подробное рассмотрение assert, errno, signal, stddef, stdlib, time, wchar с приближенными к реальности примерами   - Подробное рассмотрение assert, errno, signal, stddef, stdlib, time, wchar с приближенными к реальности примерами
   - Поверхностное рассмотрение остальных библиотек   - Поверхностное рассмотрение остальных библиотек
-  - Повторение пройденного материала,​ вопросы по задачам 1 семестра. ​Анализ нескольких работ ​семестра, основная задача -- "отучить студентов" ​изобретать велосипед без необходимостипобудить активно изучать инструментарий с которым они работают.+  - Повторение пройденного материала,​ вопросы по задачам 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
  
 === [АРХИВ] Программирование (Весна) === === [АРХИВ] Программирование (Весна) ===
Line 30: Line 115:
  
 == Обзор стандартной библиотеки Си. Различие базового синтаксиса Си и Си++ == == Обзор стандартной библиотеки Си. Различие базового синтаксиса Си и Си++ ==
- 
-Повторение пройденного материала. Представление готовых решений для большого количества типовых задач с которыми ученики столкнулись в реальности в течение первого семестра. Основная задача -- "​отучить студентов"​ изобретать велосипед без необходимости,​ побудить активно изучать инструментарий с которым они работают. 
  
 == Структуры. Объединения. Списки. Динамическая и статическая реализация ==  == Структуры. Объединения. Списки. Динамическая и статическая реализация == 
  
-Повторение. Обзор основных структур данных:​ односвязные/​двусвязные списки,​ однонаправленные/​двунаправленные,​ циклические;​ деревья,​ графы, стек, очередь. На примере различных реализаций обратить внимание на то, что динамические структуры данных могут использоваться как контейнеры для данных и как контейнеры для мета-информации (например,​ индексы). Использование указателей на функции внутри структур,​ идея хранения данных вместе с функциями по их обработке. 
 [[.:​lectures:​code2]] [[.:​lectures:​code2]]
  
 == Практики проектирования,​ разработки,​ отладки,​ сопровождения. Стили кодирования ==  == Практики проектирования,​ разработки,​ отладки,​ сопровождения. Стили кодирования == 
- 
-Основные приемы "​инжиниринга"​ программного обеспечения. Описание и объяснение смысла проектирования (данные,​ функции,​ интерфейсы,​...) Подходы к тестированию. Проверка инвариантов,​ пост- пред- условий. Логгирование. Точки отладки. Комментарии и документирование. Тесты. Соглашения об именовании,​ стили кодирования. Примеры и объяснения. 
  
 == Работа со строками. Алгоритмы на строках. Обработка текстов ==  == Работа со строками. Алгоритмы на строках. Обработка текстов == 
- 
-Обзор алгоритмов на строках. Применение (Интернет. Биоинформатика) Алгоритмы поиска подстроки. Вычисление расстояний. Замена. Потоковая обработка строк. 
  
 == Регулярные выражения ==  == Регулярные выражения == 
-Применение. Из чего может состоять регулярное выражение,​ метасимволы. Find, grep демо. regex.h демо 
  
 == Рекурсия и циклы ==  == Рекурсия и циклы == 
- 
-Эффективная замена рекурсии на цикл. Обзор примеров,​ когда предпочтительнее использовать рекурсию или циклы. Контроль стека, оценка глубины рекурсии и размера стека. ​ 
  
 == Ввод вывод. Файлы ==  == Ввод вывод. Файлы == 
  
-Рекурсивный обход дерева файловой системы. Поиск файлов по атрибутам. ​[[.:​lectures:​code3| Пример.]]+[[.:​lectures:​code3| Пример.]]
  
 == Разработка Command Line Interface (CLI) ==  == Разработка Command Line Interface (CLI) == 
- 
-Что такое и зачем. Длинные/​короткие флаги. Доступ к аргументам командной строки в программе на языке С (argc, argv). getopt(), getopt_long() демо. ​ 
  
 == Хэширование и хэш-таблицы ==  == Хэширование и хэш-таблицы == 
- 
-Хэш-функция,​ её св-ва, идеальная хэш-ф-я,​ коллизии,​ парадокс дней рождений. Ассоциативный массив. Хэш-таблицы,​ с цепочками/​открытой адресацией. Перехэширование. ​ 
  
 == Алгоритмы обхода,​ концепция итератора. ​ Использование текстовых форматов ==  == Алгоритмы обхода,​ концепция итератора. ​ Использование текстовых форматов == 
Line 78: Line 149:
  
 == Отладка. Обработка исключительных ситуаций и ошибок ==  == Отладка. Обработка исключительных ситуаций и ошибок == 
- 
-GDB, backtrace, поиск ошибки. Способы сообщения об исключительных ситуациях:​ возвращаемое значение,​ аргумент,​ errno, exception. Иерархия исключений. 
  
start/prog2/lectures.1675880193.txt.gz · Last modified: 2023/02/08 18:16 by yaroslav.gosudarkin