Материалы для студентов

Меня зовут Пелевин Максим Сергеевич, с 2010 года я помогал при проведении занятий по курсу «Языки программирования», а с 2013 работаю на кафедре ИС Санкт-Петербургского государственного электротехнического университета «ЛЭТИ» преподавателем. Материалы для всех курсов можно найти здесь.

— курсы, которые больше не со мной

Курс «Алгоритмы и структуры данных» расчитан на бакалавров и специалистов 2-го курса по направлению компьютерных технологий и информаций.

Материалы для изучения

Практические задачи

Списочные структуры. Реализовать следующие структуры: двусвязный список, динамический массив и стек. Стек можно реализовать как на базе списка, так и отдельно. Использовать стек для реализации алгоритма сортировочной станции. Разрешённые символы в исходном выражении: +, -, *, /, ^, sin, cos, (, ), 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. Для упрощения разбиения входной строки на токены разрешается отделять каждый символ пробелом.
Сортировки. Реализовать сортировку Timsort. В реализации должны быть выполнены все основные элементы алгоритма: сортировка вставками, поиск последовательностей run, подсчёт minrun, слияние последовательностей run, режим галопа при слиянии.
Деревья. Реализовать:

  1. Обычное двоичное дерево (не поиска и не балансирующее) с реализацией обхода этого дерева в глубину (направление обхода не важно, обход через рекурсию).
  2. Алгоритм для парсинга скобочной записи дерева. Пример: (8 (9 (5)) (1)) — корень 8, левый сын 9, правый 1, левый сын узла 9 – 5.
  3. Реализовать АВЛ дерево (усложненный вариант — КЧ дерево) с реализацией алгоритмов вставки, удаления, поиска, обхода в ширину, обхода в глубину (все 3 вида и использовать итеративный вариант).

Продемонстрировать:

  1. Чтение скобочной записи (путем чтения из файла).
  2. Шаг 1 или создает двоичное дерево или сообщает об ошибке (неправильные символы, неправильно расставлены скобки, не двоичное дерево вообще и т.п.).
  3. Обойти полученное дерево и создать АВЛ (или КЧ) дерево.
  4. Продемонстрировать вывод всех узлов 4 способами: в ширину и 3 в глубину.
Курсовой проект

Книги

  1. Кормен Т., Алгоритмы. Построение и анализ
  2. Адитья Бхаргава, Грокаем алгоритмы. Иллюстрированное пособие для программистов и любопытствующих

Курс «Функциональное программирование» для бакалавров состоит из 11 недель, в течение которых предлагается изучить как теоретические основы функционального программирования, так и его практическое применение (на Haskell).

Материалы для изучения

Сайты и ссылки

Курс «Языки программирования» состоит из 2-х семестров и посвящён изучению следующих тем:

  1. Процедурное программирование приложений для консольного использования.
  2. Объектно-ориентированное программирование UI приложения с использованием фреймворка Qt.

Материалы для изучения

Практические задачи (Осень)

Практические задачи (Весна)

Текстовый редактор: Реализовать графический текстовый редактор с подсветкой синтаксиса.
Игра в жизнь: используя результаты 2 задания осеннего семестра перенести отображение процесса игры в графическую форму с поддержкой расстановки изначальной позиции через мышь.
Чат: реализовать клиентскую и серверную часть для передачи сообщений между несколькими пользователями.

Книги

  1. Бьерн Страуструп «Язык программирования C++. Специальное издание», БИНОМ, 2011
  2. С.А. Орлов «Теория и практика языков программирования», ПИТЕР, 2013
  3. Э. Таненбаум «Современные операционные системы. 3-е издание», ПИТЕР, 2010
  4. М. Полубенцева «С/С++. Процедурное программирование», БХВ-Петербург, 2008

Сайты и ссылки

Нашли ошибку в тексте? Выделите ошибку в тексте и нажмите Ctrl + Enter на любой странице сайта.

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: