12001
Комментарий:
|
12508
|
Удаления помечены так. | Добавления помечены так. |
Строка 8: | Строка 8: |
* Организовать практику по МТ и НАМ | * Организовать практику по МТ и НАМ (на основе реализаций МТ и НАМ, в идеале — скрещенных c edjuge) |
Строка 12: | Строка 12: |
* Использовать классы как конструкторы пространства имён (строго без ООП) * Подробно описывать достаточное подмножество языка, остальное тезисно (спецкурс? 4-й семестр?) |
* Использовать классы только в качестве конструкторов пространств имён (строго без ООП) * Подробно описывать минимально достаточное подмножество языка, остальное давать тезисно (спецкурс? 4-й семестр?) |
Строка 17: | Строка 17: |
* Возможно, хватит времени для большего числа алгоритмов | * Возможно, хватит времени для большего числа хороших, представительных алгоритмов |
Строка 19: | Строка 19: |
К лекциям (!) прилагаются задания в EJudge. | К лекциям (sic!) прилагаются небольшие задания в EJudge. |
Строка 22: | Строка 22: |
''В таблице для краткости используются урезанные формулировки, полные формулировки забраны в комментарии (для просмотра нажать на ссылку «комментарии» в шапке страницы). | В таблице для краткости используются урезанные формулировки, полные формулировки забраны в комментарии (для просмотра нажать на ссылку «комментарии» в шапке страницы). Обозначения: . (./) — тема практически не меняется . {2} — тему придётся частично переработать/дополнить . <!> — новая тема |
Строка 26: | Строка 31: |
|| Интуитивное понятие алгоритма /* Интуитивное понятие алгоритма. Свойства алгоритмов. */ || … || … || | || Интуитивное понятие алгоритма /* Интуитивное понятие алгоритма. Свойства алгоритмов. */ || (./) || … || |
Строка 31: | Строка 36: |
|| Алгоритмические языки /* Характеристика алгоритмических языков. Понятие трансляции. Алфавит, синтаксис и семантика алгоритмического языка. Описание синтаксиса языка с помощью металингвистических формул (БНФ) и синтаксических диаграмм. */ || || || | || Алгоритмические языки /* Характеристика алгоритмических языков. Понятие трансляции. Алфавит, синтаксис и семантика алгоритмического языка. Описание синтаксиса языка с помощью металингвистических формул (БНФ) и синтаксических диаграмм. */ || Алгоритмические языки || || |
Строка 46: | Строка 51: |
|| Таблицы, оценка сложности /* Таблицы, операция поиска по ключу. Последовательные таблицы (неупорядоченные и упорядоченные). Понятие о (временнóй) оценке сложности алгоритмов в худшем случае и в среднем. Оценка сложности оптимального алгоритма поиска по ключу. Бинарный поиск в упорядоченных таблицах. Методы сортировки, оптимальные оценки числа сравнений и перемещений при сортировке. */ || Оценка сложности. Методы сортировки. /* Функция `sort()` и её параметры || || | || Таблицы, оценка сложности /* Таблицы, операция поиска по ключу. Последовательные таблицы (неупорядоченные и упорядоченные). Понятие о (временнóй) оценке сложности алгоритмов в худшем случае и в среднем. Оценка сложности оптимального алгоритма поиска по ключу. Бинарный поиск в упорядоченных таблицах. Методы сортировки, оптимальные оценки числа сравнений и перемещений при сортировке. */ || Оценка сложности. Методы сортировки. /* Функция `sort()` и её параметры */ || || |
Алгоритмы и алгоритмические языки
Предполагается адаптация курса на базе Паскаля, в котором сохранить структуру изложения, а темы адаптировать к Питону. При необходимости добавить / преобразовать / удалить подтемы.
Концепция
- Введение в теорию алгоритмов
- В основном без изменений
- Организовать практику по МТ и НАМ (на основе реализаций МТ и НАМ, в идеале — скрещенных c edjuge)
- Увеличить в объёме тему УМ, организовать практику и построить обучение второго семестра на этой базе (примерно наполовину)
- Алгоритмические языки. Язык Python
- Выделить тематические составляющие и построить большую часть курса аналогично
- Использовать классы только в качестве конструкторов пространств имён (строго без ООП)
- Подробно описывать минимально достаточное подмножество языка, остальное давать тезисно (спецкурс? 4-й семестр?)
- Динамические структуры данных
- «Динамические структуры данных» — это не «то, что можно сконструировать», а «то, что удобно использовать в алгоритмах» ⇒ конструируем сами, изучаем, некоторые берём готовые
- Возможно, хватит времени для большего числа хороших, представительных алгоритмов
К лекциям (sic!) прилагаются небольшие задания в EJudge.
Сравнительная таблица
В таблице для краткости используются урезанные формулировки, полные формулировки забраны в комментарии (для просмотра нажать на ссылку «комментарии» в шапке страницы).
Обозначения:
— тема практически не меняется
— тему придётся частично переработать/дополнить
— новая тема
Курс Паскаля |
Курс Питона |
Замечания |
Часть 1. Введение в теорию алгоритмов |
||
Интуитивное понятие алгоритма |
|
… |
Алгоритм как преобразование слов в алфавите, МТ, НАМ, … |
|
|
Алгоритмически неразрешимые проблемы |
|
|
Модельная ЭВМ |
|
|
Часть 2. Алгоритмические языки. Язык Паскаль |
||
Алгоритмические языки |
Алгоритмические языки |
|
Язык Паскаль |
Язык Python |
+Понятие исполнителя |
Типы данных, переменные, присваивание, выражения |
Типы объектов, выражения, понятие о связывании объектов. Именование. |
Не все типы объектов (но последовательности нужны) и не все их конструкторы |
Управление потоком вычислений |
Управление потоком вычислений |
Исключения описываются не здесь, в цикле for рассказать про «вычислимые последовательности», например xrange() |
Структурное программирование и комментарии |
Структурное программирование. Строки документации и комментарии |
Перенести на после функций |
Нестандартные типы данных, |
Стандартные типы данных |
Выдержать баланс разумного при выборе (словари точно не надо) |
Процедуры и функции |
Функции. Пространства имён: видимость и время жизни. |
Упаковка/распаковка параметров, видимо, не здесь. А lambda? Было бы уместно в контексте «параметров-функций» |
Рекурсия |
Рекурсия |
|
Сложные типы данных |
Классы как констукторы пространств имён. Экземпляры классов |
|
Динамические переменные. Ссылочные типы данных. |
Счётчик связей. Строки. Множества. Файлы. |
Много небольших тем. |
Методы разработки программы |
Методы разработки программы |
|
Часть 3. Динамические структуры данных |
||
Списки. |
Варианты последовательностей и их свойства. |
Генераторы, очень уж к месту? |
Стек, очередь |
Реализация списков: динамические массивы vs. связанные списки vs. вложенные пары. Тип deque. |
|
Двоичные деревья |
Двоичные деревья |
|
Таблицы, оценка сложности |
Оценка сложности. Методы сортировки. |
|
Деревья поиска, АВЛ-деревья |
Деревья поиска, АВЛ-деревья |
|
Перемешанные таблицы |
Перемешанные таблицы, функция расстановки. Словари и их свойства |
|