Лекции

Практические занятия и семинары

16 дн. с момента
начала семестра

Алгоритмы и структуры данных

Общая информация

Программная инженерия

 Объем курса
 1/2 года (1 сем, 1 лекция в неделю)
 Отчётность теоретический экзамен
 Направление  231000, программная инженерия
 Семестр  II (1 курс, весна) 
 Код дисциплины
 CS103
 Трудоёмкость 3 зачётных единицы

Информационные технологии

 Объем курса
 1/2 года (1 сем, 1 лекция в неделю)
 Отчётность теоретический экзамен
 Направление  010400, информационные технологии
 Семестр  IV (2 курс, весна) 
 Код дисциплины
 CS103
 Трудоёмкость 3 зачётных единицы

Вопросы по курсу (2011 год)

Часть I

  1. Буква, символ, алфавит; кодирование и кодировки до Unicode.
  2. Unicode: пространство символов; модификаторы; нормализация; сравнение; кодировки.
  3. Абсолютная и относительная погрешности; позиционные системы счисления; дополнительный код.
  4. Симметричные системы; троичные арифметика и логика.
  5. Числа с плавающей запятой; нормализация; распределение.
  6. Комплексные числа, распределение разных представлений.
  7. Назначение линейных контейнеров; преимущества и недостатки массивов.
  8. Преимущества и недостатки списков; способы реализации списков; оптимизация работы списков: шитые и иерархические списки.
  9. Назначение, преимущества и недостатки деревьев.
  10. AVL - деревья.
  11. B - деревья.
  12. R - деревья.
  13. Красно-черные деревья.
  14. Декартовы деревья.
  15. Представления графов.

Часть II

  1. Хеш-таблицы: назначение, подходы к расширению, преимущества и недостатки перед деревьями.
  2. Хеш-функции: требуемые свойства, примеры.
  3. Распределенные хеш-таблицы.
  4. Строки; представление строк при помощи массивов, списков и деревьев (ациклических графов).
  5. Назначение кучи; куча для элементов одинакового размера.
  6. Тривиальная организация кучи; дефрагментация.
  7. Таблица виртуальных методов при одиночном наследовании.
  8. Таблица виртуальных методов и смещений для невиртуального множественного наследования.
  9. Таблица виртуальных методов и смещений для виртуального множественного наследования.
  10. Виртуальные таблицы для одиночного наследования и множественной реализации интерфейсов.
  11. Виртуальные таблицы для динамических языков.
  12. Распараллеливание алгоритмов на примере сортировок с и без использования дополнительной памяти; ускорение и эффективность, распараллеливание и оптимизация умножения квадратных матриц.
  13. Жадные и динамические алгоритмы.
  14. Генетические алгоритмы.
  15. Вдумчивые и конструктивные замечания по программе курса.

Не выносится на экзамен

  1. Массивы; представление многомерных массивов при помощи векторов Айлифа.
  2. Представление контекста вложенных процедур при помощи цепочек фреймов и мониторов.
  3. Передача процедур "вниз" по цепочке вызовов; поддержание статической цепочки.
  4. Произвольная передача замыканий (процедур с контекстом) с копированием или динамическим выделением контекста.
  5. Оптимизация дефрагментации методом граничных маркеров.
  6. Метод двоичных близнецов.

    Источники информации

    • Конспект.
    • Дж. Д. Ульман А. В. Ахо, Дж. Э. Хопкрофт. Структуры данных и алгоритмы. Издательский дом «Вильямс», 2000.
    • Дональд Э. Кнут. Искусство Программирования. Издательский дом «Вильямс», 2000.
    • Томас Кормен, Чарльз Лейзерсон, Рональд Ривест. Алгоритмы: построение и анализ. М.: МЦНМО, 1999.
    • Кубенский А. А. Структуры и алгоритмы обработки данных. Объектно-ориентированный подход и реализация на C++. СПб.: БХВ-Петербург, 2004.
    • Кузнецов С. Д. Методы сортировки и поиска. ИСП РАН, Центр Информационных Технологий.
    • Материалы лектора:
      • Приложение к данной странице; кому-то может показаться, что это лучше, чем ничего.
      • Первую лекцию следует брать не из приложения, а отсюда.
    Č
    Ċ
    ď
    Dmitry Luciv,
    10.02.2012 4:20
    Ċ
    ď
    Dmitry Luciv,
    21.02.2012 7:49