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