Алгоритмы и алгоритмические языки
Предполагается адаптация курса на базе Паскаля, в котором сохранить структуру изложения, а темы адаптировать к Питону. При необходимости добавить / преобразовать / удалить подтемы.
Концепция
- Введение в теорию алгоритмов
- В основном без изменений
- Организовать практику по МТ и НАМ (на основе реализаций МТ и НАМ, в идеале ? скрещенных c edjuge)
- Увеличить в объеме тему УМ, организовать практику и построить обучение второго семестра на этой базе (примерно наполовину)
- Алгоритмические языки. Язык Python
- Выделить тематические составляющие и построить большую часть курса аналогично
- Использовать классы только в качестве конструкторов пространств имен (строго без ООП)
- Подробно описывать минимально достаточное подмножество языка, остальное давать тезисно (спецкурс? 4-й семестр?)
- Динамические структуры данных
- ?Динамические структуры данных? ? это не ?то, что можно сконструировать?, а ?то, что удобно использовать в алгоритмах? ? конструируем сами, изучаем, некоторые берем готовые
- Возможно, хватит времени для большего числа хороших, представительных алгоритмов
К лекциям (sic!) прилагаются небольшие задания в EJudge.
Сравнительная таблица
В таблице для краткости используются урезанные формулировки, полные формулировки забраны в комментарии (для просмотра нажать на ссылку ?комментарии? в шапке страницы).
Обозначения:
? тема практически не меняется
? тему придется частично переработать/дополнить
? полностью переработанная / другая тема
Курс Паскаля |
Курс Питона |
Замечания |
Часть 1. Введение в теорию алгоритмов |
||
Интуитивное понятие алгоритма |
|
? |
Алгоритм как преобразование слов в алфавите, МТ, НАМ, ? |
|
|
Алгоритмически неразрешимые проблемы |
|
|
Модельная ЭВМ |
|
На мой взгляд, это половина второго семестра |
Часть 2. Алгоритмические языки. Язык Паскаль |
||
Алгоритмические языки |
|
|
Язык Паскаль |
|
+Понятие исполнителя |
Типы данных, переменные, присваивание, выражения |
|
Не все типы объектов (но последовательности нужны) и не все их конструкторы |
Управление потоком вычислений |
|
Исключения описываются не здесь; в цикле for рассказать про ?вычислимые последовательности?, например xrange(), и вчерне ? про ?протокол последовательностей? |
Структурное программирование и комментарии |
|
Перенести на после функций |
Нестандартные типы данных, |
|
Выдержать баланс разумного при выборе (словари точно не надо) |
Процедуры и функции |
|
Упаковка/распаковка параметров, видимо, не здесь. А lambda? Было бы уместно в контексте ?параметров-функций? |
Рекурсия |
|
|
Сложные типы данных |
|
Файл не является типом данных, темы ?Строки. Множества, ?? можно переместить сюда |
Динамические переменные. Ссылочные типы данных. |
|
Много небольших тем, которые можно поделить с предыдущим разделом. ?Файлы? не вписываются никуда, но в для них есть хорошая тема ?сериализация? |
Методы разработки программы |
|
|
Часть 3. Динамические структуры данных |
||
Списки. |
|
Генераторы, очень уж к месту? |
Стек, очередь |
|
|
Двоичные деревья |
|
|
Таблицы, бинарный поиск, оценка сложности, сортировка |
|
Мне кажется, или это довольно объемный раздел, много больше, чем на 2 часа? |
Деревья поиска, АВЛ-деревья |
|
|
Перемешанные таблицы |
|
|