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
Last revision Both sides next revision
start:prog2:lectures [2023/02/08 18:16]
yaroslav.gosudarkin
start:prog2:lectures [2023/05/25 07:26]
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, пример на стеке 
 +  - Регулярные выражения -- как использовать,​ примеры
  
 === [АРХИВ] Программирование (Весна) === === [АРХИВ] Программирование (Весна) ===
Line 30: Line 107:
  
 == Обзор стандартной библиотеки Си. Различие базового синтаксиса Си и Си++ == == Обзор стандартной библиотеки Си. Различие базового синтаксиса Си и Си++ ==
- 
-Повторение пройденного материала. Представление готовых решений для большого количества типовых задач с которыми ученики столкнулись в реальности в течение первого семестра. Основная задача -- "​отучить студентов"​ изобретать велосипед без необходимости,​ побудить активно изучать инструментарий с которым они работают. 
  
 == Структуры. Объединения. Списки. Динамическая и статическая реализация ==  == Структуры. Объединения. Списки. Динамическая и статическая реализация == 
  
-Повторение. Обзор основных структур данных:​ односвязные/​двусвязные списки,​ однонаправленные/​двунаправленные,​ циклические;​ деревья,​ графы, стек, очередь. На примере различных реализаций обратить внимание на то, что динамические структуры данных могут использоваться как контейнеры для данных и как контейнеры для мета-информации (например,​ индексы). Использование указателей на функции внутри структур,​ идея хранения данных вместе с функциями по их обработке. 
 [[.:​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 141:
  
 == Отладка. Обработка исключительных ситуаций и ошибок ==  == Отладка. Обработка исключительных ситуаций и ошибок == 
- 
-GDB, backtrace, поиск ошибки. Способы сообщения об исключительных ситуациях:​ возвращаемое значение,​ аргумент,​ errno, exception. Иерархия исключений. 
  
start/prog2/lectures.txt · Last modified: 2023/06/01 10:36 by yaroslav.gosudarkin