Модуль 1. Введение в структурное программирование на языке Python: линейные и разветвляющиеся алгоритмы
Тема 1.1. Программа и алгоритм
Лекции:
- Программа как вид информационной модели.
- Программа как информационный процесс.
- Понятия «Данные» и «Алгоритм».
- Алгоритм: исполнитель, система команд.
- Свойства алгоритмов.
Практические занятия:
- Программа как вид информационной модели.
- Программа как информационный процесс.
- Формы записи алгоритмов (словесный, блок-схема, псевдокод).
- Упражнения и задания на работу с различными видами информационных моделей и их анализ, на исполнение алгоритмов, перевод словесного описания алгоритма в другую форму записи.
Самостоятельная работа:
- Упражнения и задания на работу с различными видами информационных моделей и их анализ, на исполнение алгоритмов, перевод словесного описания алгоритма в другую форму записи.
Тема 1.2. От алгоритма к программе
Лекции:
- Языки программирования, обзор, классификация.
- Python – особенности, достоинства.
- Установка Python на компьютере.
- Версии Python: совместимость, различия.
Практические занятия:
- Тест по теме «Тема 1.1. Программа и алгоритм».
- Знакомство с IDLE.
- Настройка интерфейса.
- Режимы работы.
- Упражнения и задания на эксперименты с Python Shell, на ввод, сохранение и запуск программы.
Самостоятельная работа:
- Упражнения и задания на эксперименты с Python Shell, на ввод, сохранение и запуск программы.
Тема 1.3. Типы данных
Лекции:
- Организация вычислений.
- Понятие переменная.
- Описание данных в алгоритме при разных формах его записи.
Практические занятия:
- Тест по теме «Тема 1.2. От алгоритма к программе».
- Числа и строки в Python – эксперименты и выводы.
- «Утиная типизация», преобразование данных.
- Операторы ввода, вывода, присваивания.
- Упражнения и задания на разработку программ по работе с различными типами данных.
Самостоятельная работа:
- Упражнения и задания на разработку программ по работе с различными типами данных.
Тема 1.4. Линейные алгоритмы
Лекции:
- Базовые алгоритмические структуры.
- Понятие линейного алгоритма.
- Входные, выходные, промежуточные данные.
Практические занятия:
- Тест по теме «Тема 1.3. Типы данных».
- Арифметические операции и выражения.
- Математические функции.
- Использование библиотеки math.
- Синтаксис вызова функций.
- Упражнения и задания на разработку и программирование линейных алгоритмов разной сложности.
Самостоятельная работа:
- Упражнения и задания на разработку и программирование линейных алгоритмов разной сложности.
Тема 1.5. Разветвлённые алгоритмы
Лекции:
- Условия и выбор в алгоритмах.
- Разветвленные алгоритмы, их описание при разных способах записи алгоритма.
Практические занятия:
- Тест по теме «Тема 1.4. Линейные алгоритмы».
- Условный оператор на Python.
- Структурные операторы Python на примере условного оператора, общие правила структуризации программы.
- Вложенность операторов.
- Упражнения и задания на использование условного оператора.
Самостоятельная работа:
- Упражнения и задания на использование условного оператора.
Тема 1.6. Логические данные, логические операции
Лекции:
- Алгебра логики: высказывания, логические операции.
- Логический тип данных.
Практические занятия:
- Тест по теме «Тема 1.5. Разветвлённые алгоритмы».
- Логические операции Python, их применение для формулировки сложных условий.
- Оптимизация кода.
- Упражнения – разработка программ, реализующих линейные и разветвлённые алгоритмы.
Самостоятельная работа:
- Упражнения – разработка программ, реализующих линейные и разветвлённые алгоритмы.
Тема 1.7. Техника отладки программы
Лекции:
- Понятие отладки.
- Виды ошибок.
- Способы отладки программы.
Практические занятия:
- Тест по теме «Тема 1.7. Техника отладки программы».
- Приёмы и инструментарий отладки в Python.
- Упражнения и задания на отладку программ с различными типами ошибок.
Самостоятельная работа:
- Упражнения и задания на отладку программ с различными типами ошибок.
- Промежуточная аттестация - тест по модулю 1 включает в себя вопросы на знание следующих тем: типы данных, линейные алгоритмы, разветвленные алгоритмы, логические операции, отладка программ.
Модуль 2. Введение в структурное программирование на языке Python: циклические алгоритмы
Тема 2.1. Символы и строки
Лекции:
- Нечисловые данные: примеры, назначение.
- Символьные и строковые данные.
Практические занятия:
- Операции со строковыми данными: присваивание значений, сцепление.
- Организация дружественного интерфейса программы.
- Упражнения и задания на программные эксперименты со строками Python, символьная графика.
Самостоятельная работа:
- Упражнения и задания на программные эксперименты со строками Python, символьная графика.
Тема 2.2. Циклические алгоритмы
Лекции:
- Примеры ситуаций, моделируемых циклами.
- Цикл с заданным количеством итераций, его описание в блок-схеме и на псевдокоде.
- Циклы с условием, их реализация в блок-схеме и на псевдокоде.
Практические занятия:
- Тест по теме «Тема 2.1. Символы и строки».
- Оператор цикла с параметром на Python, функция range().
- Операторы цикла с условием на Python.
- Классические алгоритмы перебора данных с использованием цикла.
- Счетчики и сумматоры.
- Упражнения и задания на исполнение алгоритмов, содержащих циклы, с помощью таблицы значений; на эксперименты с операторами циклов; на распознавание циклических алгоритмов; на исполнение алгоритмов с циклами.
Самостоятельная работа:
- Упражнения и задания на исполнение алгоритмов, содержащих циклы, с помощью таблицы значений; на эксперименты с операторами циклов; на распознавание циклических алгоритмов; на исполнение алгоритмов с циклами.
Тема 2.3. Математика и циклы
Лекции:
- Алгоритмы с вложенными циклами, особенности использования.
- Циклы и математика.
Практические занятия:
- Тест по теме «Тема 2.2. Циклические алгоритмы».
- Особенности использования цикла while в разных ситуациях.
- Оператор break и continue.
- Использование циклических конструкций для решения типовых задач: алгоритм разбиения числа на цифры, перевод между системами счисления, вычисление факториала, НОД, НОК.
- Упражнения и задания на разработку программ, использующих циклы.
Самостоятельная работа:
- Упражнения и задания на разработку программ, использующих циклы.
Тема 2.4. Структурированные данные
Лекции:
- Понятие структурированных типов данных.
- Кортеж.
- Списки.
- Поиск и сортировка структурированных данных: цель и алгоритмы.
Практические занятия:
- Тест по теме «Тема 2.3. Математика и циклы».
- Индексация элементов, перебор элементов.
- Создание списка, доступ к элементам списка.
- Методы списков.
- Поиск и сортировка структурированных данных: цель и алгоритмы.
- Упражнения и задания на разработку программ, работающих с кортежами и списками.
Самостоятельная работа:
- Упражнения и задания на разработку программ, работающих с кортежами и списками.
Тема 2.5. Многомерные списки
Лекции:
- Понятие многомерного списка, множественная индексация данных.
- Типовые операции с двумерными списками.
Практические занятия:
- Тест по теме «Тема 2.4. Структурированные данные».
- Множественная индексация данных.
- Типовые операции с двумерными списками.
- Упражнения и задания на разработку программ, использующих одномерные и многомерные списки.
Самостоятельная работа:
- Упражнения и задания на разработку программ, использующих одномерные и многомерные списки.
Тема 2.6. Компьютерное моделирование
Лекции:
- Понятие модели, цели моделирования, примеры.
- Виды моделей.
- Информационные модели.
- Компьютерный эксперимент.
- Компьютерное моделирование.
Практические занятия:
- Тест по теме «Тема 2.5. Многомерные списки».
- Примеры разработки информационных моделей различного назначения и их программная реализация.
- Структурированные данные в информационных моделях.
- Упражнения и задания на разработку информационных моделей различного назначения и их программная реализация.
Самостоятельная работа:
- Упражнения и задания на разработку информационных моделей различного назначения и их программная реализация.
- Промежуточная аттестация - тест по модулю 2 включает вопросы, касающиеся тем: символы и строки, циклические алгоритмы, математика и циклы, структурированные данные, многомерные списки.
Модуль 3. Введение в структурное программирование на языке Python: работа с функциями
Тема 3.1. Процесс разработки программы
Лекции:
- Структурное программирование – школа настоящего программиста.
- Процесс разработки программы, его организация.
- Каскадная и спиральная схемы разработки.
- Основные этапы разработки программы.
Практические занятия:
- Типы данных, их классификация.
- Текст программы как документ.
- Комментирование программы.
- Упражнения и задания на полный цикл разработки программы и разработку программ с вложенными алгоритмическими конструкциями.
Самостоятельная работа:
- Упражнения и задания на полный цикл разработки программы и разработку программ с вложенными алгоритмическими конструкциями.
Тема 3.2. Строки и срезы
Лекции:
- Строка как итерируемый тип данных.
- Обращение к символу строки по индексу.
- Срезы строк, срезы списков.
Практические занятия:
- Тест по теме «Тема 3.1. Процесс разработки программы».
- Переборные алгоритмы для строковых типов данных.
- Методы строк.
- Срез и range.
- Упражнения и задания на работу со строками с помощью методов строк и через реализацию переборных алгоритмов, на применение срезов.
Самостоятельная работа:
- Упражнения и задания на работу со строками с помощью методов строк и через реализацию переборных алгоритмов, на применение срезов.
Тема 3.3. Стандартные функции Python
Лекции:
- Понятие функции.
- Параметры, возвращаемое значение.
- Примеры использования функций.
Практические занятия:
- Тест по теме «Тема 3.2. Строки и срезы».
- Примеры использования функций.
- Подключение библиотек.
- Упражнения и задания на применение функций, на подключение и использование библиотек.
Самостоятельная работа:
- Упражнения и задания на применение функций, на подключение и использование библиотек.
Тема 3.4. Пользовательские функции в Python
Лекции:
- Понятие подпрограммы.
- Структурирование программы, примеры применения.
- Пользовательские функции.
- Понятие рекурсии.
- Рекурсия в математике.
Практические занятия:
- Тест по теме «Тема 3.3. Стандартные функции Python».
- Возвращаемое значение.
- Объявление и вызов функции.
- Оператор return.
- Формальные и фактические параметры.
- Способы передачи параметров в функции.
- Пространство имён.
- Видимость данных.
- Локальные и глобальные данные.
- Программирование рекурсии.
- Примеры применения рекурсии.
- Оценка времени выполнения программ с рекурсией.
- Способы ускорения рекурсии.
- Упражнения и задания на создание собственных функций различного вида и назначения.
Самостоятельная работа:
- Упражнения и задания на создание собственных функций различного вида и назначения.
Тема 3.5. Программирование алгоритмов перебора
Лекции:
- Перебор в математике и в программировании.
- Алгоритмы перебора с помощью числового ключа.
- Вычислительная сложность алгоритма O(f(n)).
- Идея динамического программирования.
Практические занятия:
- Тест по теме «Тема 3.4. Пользовательские функции в Python».
- Перебор с параметром, индуктивный перебор.
- Перебор данных из текстового файла.
- Алгоритмы перебора с помощью числового ключа.
- Упражнения и задания на решение задач различными методами перебора, на решение задач с помощью динамического программирования.
Самостоятельная работа:
- Упражнения и задания на решение задач различными методами перебора, на решение задач с помощью динамического программирования.
- Промежуточная аттестация - тест по модулю 3 включает в себя вопросы по следующим темам: строки и срезы, стандартные функции Python, пользовательские функции в Python, списки, программирование алгоритмов перебора.
Модуль 4. Элементы функционального программирования на языке Python: более сложные приемы программирования
Тема 4.1. Парадигмы программирования
Лекции:
- Понятие парадигмы программирования.
- Стили программирования на Python.
- Модули.
- Аргументы функции: позиционные и именованные.
- Аннотирование и документирование функций.
Практические занятия:
- Встроенные функции.
- Подключение модулей.
- Аргументы функции: позиционные и именованные.
- Аннотирование и документирование функций.
- Упражнения и задания на решение задач в стиле структурного программирования, на планирование и разработка функций.
Самостоятельная работа:
- Упражнения и задания на решение задач в стиле структурного программирования, на планирование и разработка функций.
Тема 4.2. Особенности вызова функций в Python
Лекции:
- Анонимные функции – lambda-выражения.
- Списковый вызов функций.
- Функция высшего порядка map.
- Передача функции в качестве аргумента.
- Функция map – подробнее. Функции filter, zip, reduce.
Практические занятия:
- Тест по теме «Тема 4.1. Парадигмы программирования».
- lambda-выражения.
- Функция высшего порядка map.
- Передача функции в качестве аргумента.
- Функция map – подробнее. Функции filter, zip, reduce.
- Упражнения и задания на разработку программ в функциональном стиле.
Самостоятельная работа:
- Упражнения и задания на разработку программ в функциональном стиле.
Тема 4.3. Структурированные данные: взгляд вглубь
Лекции:
- Внутренняя реализация списка в Python.
- Различие между списком и массивом.
- Обобщение: итерируемые типы данных, работа с ними.
Практические занятия:
- Тест по теме «Тема 4.2. Особенности вызова функций в Python».
- Списковый вызов функций. «Синтаксический сахар» в Python.
- Обобщение: итерируемые типы данных, работа с ними.
- Упражнения и задания на работу с итерируемыми типами данных.
Самостоятельная работа:
- Упражнения и задания на работу с итерируемыми типами данных.
Тема 4.4. Библиотека NumPy и работа с массивами
Лекции:
- Библиотеки, их подключение.
- Массивы в NumPy.
- Индексация в массивах.
- Векторизованные вычисления.
- Методы массивов.
Практические занятия:
- Тест по теме «Тема 4.3. Структурированные данные: взгляд вглубь».
- Массивы в NumPy.
- Индексация в массивах.
- Векторизованные вычисления.
- Методы массивов.
- Структурированные данные: взгляд вглубь».
- Упражнения и задания на работу с массивами и подключение необходимых библиотек.
Самостоятельная работа:
- Упражнения и задания на работу с массивами и подключение необходимых библиотек.
Тема 4.5. Словари и множества
Лекции:
- Суть и назначение словаря (ассоциативного массива).
- Множество как набор неповторяющихся элементов.
Практические занятия:
- Тест по теме «Тема 4.4. Библиотека NumPy и работа с массивами».
- Создание словаря.
- Методы словарей.
- Операции над множествами в Python.
- Упражнения и задания на работу со словарями и множествами.
Самостоятельная работа:
- Упражнения и задания на работу со словарями и множествами.
Тема 4.6. Практикум по решению задач
Лекции:
- Критерии качества программы.
- Алгоритмы решения задач обработки данных, требующих использования эффективных алгоритмов и рационального планирования структуры данных.
Практические занятия:
- Тест по теме «Тема 4.5. Словари и множества».
- Критерии качества программы.
- Решение задач обработки данных, требующих использования эффективных алгоритмов и рационального планирования структуры данных.
Самостоятельная работа:
- Решение задач обработки данных, требующих использования эффективных алгоритмов и рационального планирования структуры данных.
- Итоговая аттестация – выполнение экзаменационного практического задания: разработка схемы данных, разработка алгоритма, программная реализация алгоритма, отладка и тестирование программы, документирование программы.