Skip to content
Permalink
Branch: master
Find file Copy path
Find file Copy path
1 contributor

Users who have contributed to this file

78 lines (66 sloc) 13.3 KB

Рабочая программа дисциплины "Практика программирования с использованием Python"

Цель дисциплины

Научить студентов программировать простые графические приложения на языке Python 3 как самостоятельно, так и в группе, с использованием системы контроля версий git и соблюдением принципов качества кода.

Задачи дисциплины

  • формирование у обучающихся базовых знаний о синтаксисе языка Python 3 и его возможностях;
  • формирование культуры создания читабельного кода;
  • формирование умения осуществлять декомпозицию проекта ПО на функции, объекты и модули;
  • формирование навыка проектирования и разработки ПО с использованием системы контроля версий, в том числе в рабочей группе.

В результате освоения дисциплины обучающиеся должны

знать:

  • основы алгоритмического языка программирования Python 3;
  • принципы создания качественного читабельного кода;
  • приёмы разработки программ «сверху-вниз» и «снизу-вверх»;
  • идеологию модульного и объектно-ориентированного подхода;
  • типовые решения, применяемые для создания программ.

уметь:

  • разрабатывать читабельные программы на языке программирования Python 3;
  • использовать как встроенную, так и доступную в Сети документацию по библиотекам Python 3;
  • подключать дополнительные модули и стандартные модули и пакеты Python 3;
  • создавать дополнительные модули и пакеты на Python 3 для основной программы;
  • применять объектно-ориентированный подход для написания программ;
  • разрабатывать программы как индивидуально, так и в команде, с использованием современных средств написания и отладки программ.

владеть:

  • одной из интегрированных сред разработки программ для языка Python 3;
  • интерактивной консолью Python 3 для простых вычислений;
  • основными командами системы контроля версий git;
  • основным инструментарием библиотеки Tkinter;
  • средствами отладки и интроспекции на языке Python 3.

Место дисциплины в структуре образовательной программы

В рамках IT-дисциплин ФОПФ МФТИ «Практика программирования с использованием Python» является первой, входной дисциплиной, и предшествует изучению алгоритмов и структур данных в рамках дисциплины "Информатика".

План лекций

№ Лекция Темы на лекции

  1. Основы Python Язык Python — универсальный, кросплатформенный, красивый. Работа в интерактивном режиме. Арифметические операции: +, -, *, /, **, //, %. Основные типы: int, str, float, bool. Приведение типа. Ввод и вывод строк. Переменные в Python. НЕТ вторичному использованию переменных. Условный оператор if. Вложенные и каскадные ветвления. Логические операции and, or, not. Циклы while и for. Инструкции управления циклом. Генератор прогрессий range(). Вложенные циклы. Описание функций без параметров и с параметрами. МК: Черепаха turtle и учебный исполнитель Робот.
  2. Золотой фонд Python Кортежи переменных. Обмен значений. Итерируемые объекты и цикл for. Золотой фонд Python: коллекции tuple, list, set, dict. Изменяемость списка и операции с ним. Неизменяемость кортежа и операции с ним. Список кортежей. Цикл for для двух переменных. Разворачивание итерируемого объекта в параметры функции. Генераторы списков, кортежей, множеств. Ссылочная модель данных. Присваивания в Python. Интроспекция. Оператор is.
  3. Функции Функции. Синхронный вызов. Возврат по стеку вызовов. Специфика Python:duck typing. Значения параметров по умолчанию. Именованные параметры функций. Инкапсуляция ответственности в функцию. Проектирование «снизу-вверх». Локальные переменные. МК: Создание библиотеки примитивов для graphics. Интерфейс функции и его документация в docstring. Аннотация типов.
  4. Вычитка кода МК: Анализ кода на Python. Читабельность кода Необходимость Coding Style. Стиль программирования PEP8. Принцип именования переменных и функций. Документация функций. Ограничение ответственности функции и её длина (50 строк).
  5. Структурное программирование. Декомпозиция. Проектирование «сверху-вниз». Контракт функции и его документация. Каскадная модель разработки Waterfall. Итеративная разработка. Функции-заглушки. Контроль версий. Основы git. МК: итеративная разработка «сверху-вниз».
  6. Событийно-ориентированное программирование Событийная модель построения приложения. MIT Scratch. Простая игра с обработкой событий. Введение в Tkinter. Виджет кнопки. Виджеты, события и обработчики событий. Свойства и упаковка виджетов. Tkinter Сanvas: методы, идентификаторы и теги. МК: создание приложения из простых виджетов.
  7. Модульное программирование. Цель и принцип разделения на модули. Создание модулей и пакетов. Возможности инструкции import. Документация проекта. Локализация переменных.
  8. Классы и объекты. Классы и объекты в Python. Создание и инициализация объекта. Инкапсуляция ответственности в класс.
  9. Введение в ООП Принцип единственной ответственности класса. Отношения между классами. Наследование и композиция. Ассоциация. Диаграмма классов UML.
  10. Командная работа Распределение ролей в проекте. Проработка интерфейсов модулей/функций. Ветки git: git branch, checkout, merge. Учимся взаимодействовать через GitHub. Issue, комментарии к commit-ам. Механизм pull request, review.
  11. ООП проектирование. МК: проектирование простой игры.
  12. Документация проекта Документация проекта. Проработка интерфейсов модулей/функций. Оператор assert. Контрактное программирование. Повторяем основы git.
  13. Контроль качества doctest
  14. Разработка через тестирование TDD
  15. Лицензии на ПО

План лабораторных работ

№ Лабораторная работа Темы лабораторной работы

  1. Робот Работа в интерактивном режиме. Команды Робота. Лесенка для робота. Алгебра логики на практике. Коридорные задачи: на циклы и условия. Вложенные циклы: сложные коридоры. Считаем шаги. Задачи на подсчёт шагов. Ищем выход из лабиринта.
  2. Черепаха Черепашка Python Turtle. Черепаха как объект. Свойства черепахи. Задачи на циклы: многоугольники, звезды. Вложенные циклы. Написание функций. Функции без параметров и с параметрами. Списки в Python. Операции со списками. Генераторы списков. Кортежи в Python. Список кортежей. Случайное движение черепахи, модуль random. Заливка полигонов.
  3. Картина GitHub: регистрация и основы использования. Библиотека graphics Дж.Зелле. Геометрические примитивы. Создание картины по образцу.
  4. Рефакторинг картины Структурное программирование. Проектирование сверху-вниз. Рефакторинг.
  5. Анимация картины Проработка интерфейсов функций. Документация функций.
  6. Игра «Поймай шарик» Введение в Tkinter. Событийная модель построения приложения. Виджеты, события и обработчики событий. Свойства и упаковка виджетов. Tkinter Сanvas: методы, идентификаторы и теги. Создание простой игры: кликать мышкой на случайно появляющихся шариках. Виджет кнопки для перезапуска игры.
  7. Игра «Поймай шарик» Возбуждение событий по времени. Движение шариков с отражением от стен. Подсчёт игровых очков. Переменные с обратной связью в tkinter. Ползунок, управляющий скоростью движения шариков.
  8. Игра «Пушка» Простое объектно-ориентированное программирование. Создание и инициализация класса. Моделирование кинематики материальной точки (снаряда в поле силы тяжести).
  9. Игра «Пушка». Модульный рефакторинг Модульное программирование. Создание модулей и пакетов. Документация проекта.
  10. Игра «Пушка» Введение в ООП проектирование. Проработка интерфейсов и контрактов функций и ответственности классов. Отношения между классами. Наследование и композиция. Ассоциация. Диаграмма классов UML.
  11. Игра «Артиллерия» Проектирование игры в стиле artillery game. Командная работа. Учимся взаимодействовать через GitHub. Осваиваем: git branch, git merge, pull request. Механизм review.
  12. Игра «Артиллерия»
  13. Семестровый проект
  14. Семестровый проект Коворкинг. Обсуждение с преподавателем и тьютором.
  15. Семестровый проект Сдача проекта. Выставление оценок за семестр.
You can’t perform that action at this time.