- 1 курс
- 2 курс
- 3 курс
- 4 курс
- 5 курс
- 6 курс
Old
Old
This is an old revision of the document!
План-проспект лекций:
—-
Повторение пройденного материала. Представление готовых решений для большого количества типовых задач с которыми ученики столкнулись в реальности в течение первого семестра. Основная задача – “отучить студентов” изобретать велосипед без необходимости, побудить активно изучать инструментарий с которым они работают.
Повторение. Обзор основных структур данных: односвязные/двусвязные списки, однонаправленные/двунаправленные, циклические; деревья, графы, стек, очередь. На примере различных реализаций обратить внимание на то, что динамические структуры данных могут использоваться как контейнеры для данных и как контейнеры для мета-информации (например, индексы). Использование указателей на функции внутри структур, идея хранения данных вместе с функциями по их обработке. Указатель на функцию
Основные приемы “инжиниринга” программного обеспечения. Описание и объяснение смысла проектирования (данные, функции, интерфейсы,…) Подходы к тестированию. Проверка инвариантов, пост- пред- условий. Логгирование. Точки отладки. Комментарии и документирование. Тесты. Соглашения об именовании, стили кодирования. Примеры и объяснения.
Обзор алгоритмов на строках. Применение (Интернет. Биоинформатика) Алгоритмы поиска подстроки. Вычисление расстояний. Замена. Потоковая обработка строк.
Применение. Из чего может состоять регулярное выражение, метасимволы. Find, grep демо. regex.h демо
Эффективная замена рекурсии на цикл. Обзор примеров, когда предпочтительнее использовать рекурсию или циклы. Контроль стека, оценка глубины рекурсии и размера стека.
Рекурсивный обход дерева файловой системы. Поиск файлов по атрибутам. Пример.
Что такое и зачем. Длинные/короткие флаги. Доступ к аргументам командной строки в программе на языке С (argc, argv). getopt(), getopt_long() демо.
Хэш-функция, её св-ва, идеальная хэш-ф-я, коллизии, парадокс дней рождений. Ассоциативный массив. Хэш-таблицы, с цепочками/открытой адресацией. Перехэширование.
GDB, backtrace, поиск ошибки. Способы сообщения об исключительных ситуациях: возвращаемое значение, аргумент, errno, exception. Иерархия исключений.