Основы программирования

Python

Ресурсы

  • Эта страничка

    • Слайды / блокноты / примеры

    • Список литературы и не литературы

  • Чатик в Discord

Чеклист перед сдачей заданий

  1. Запустить (как минимум, в программе нет синтаксических ошибок)

  2. В зависимости от того, программа или блокнот

    • Программа

      1. PyLint pylint --disable=missing-docstring my_program.py ставит балл не менее 5.0

      2. MyPy mypy my_program.py не выдаёт ошибок

    • Блокнот

      1. Kernel → Restart kernel and run all cells

  3. Перепроверить, что программа делает то, что подразумевалось автором

  4. Перепроверить, что программа делает то, что подразумевалось преподавателем

Задания

0. Инсталлировать программное обеспечение из списка ниже

  1. Регистрация, создание репозитория, подключение к Discord

    • До 10.09 зарегистрировать аккаунт на GitHub, создать репозиторий и заполнить форму

    • До 10.09 зарегистрироваться в Discord, зайти в чатик, поставить себе там ник в виде фамилии, имени [отчества], со всеми радостно поздороваться

  2. Первая программа — на основе этой — прокомментировать (комментарий — от # до конца строки) каждую строку, которую можно, рекомендуется модифицировать функцию

  3. Публикация кода на GitHub в своём репозитории

  4. Вычисление функции по ряду Телора — следует данный блокнот и переделать под свою функцию. И в Git выложить, конечно же, тоже блокнот. Чтобы сейчас и после было проще, рекомендуется клонировать себе весь репозиторий — git clone https://github.com/dluciv/python-intro-course.git

  5. Алгоритм Рабина-Карпа. Примерное описание приводится на лекциях, отправную точку для задания содержит блокнот Ответы на вводный тест. Наконец, можно даже в Википедии посмотреть, только для простоты никакие мудрёные хэши не брать, а просто сумму ord(symbol)

  6. Пользуясь для вдохновения блокнотом Функции, декораторы, статическая типизация, Lint, сделать, как в нём предлагается, «декоратор с параметром», который из функции делает функцию, применяющуюся заданное количество раз к её же результату

  7. Пользуясь блокнотом Гаубица Д-30 и «Катюша», допрограммировать физическую модель реактивного снаряда (а можно нафантазировать и ещё что-нибудь похитрее)

  8. Улучшить свою реализацию алгоритма Рабина-Карпа: вставить свой код в пример с модульными тестами (именно свой код → в пример, и редактировать пример, где отмечено в файле!), добиться, чтобы тесты успешно проходили (не запрещается и ещё тестов добавить!), добиться, чтобы PyLint выдавал как минимум 9,5 из 10 и MyPy не выдавал ошибок

Ресурсы — слайды, листинги, блокноты

Перечисленные блокноты также доступны в режиме предпросмотра GitHub (с некоторыми ошибками, но GiHub умеет их показывать).

  1. Слайды: Python: что это, откуда и зачем

  2. Слайды: Немного практики

  3. Блокнот: Основы

  4. Блокнот: Ответы на вводный тест

  5. Блокнот: Функции, декораторы, статическая типизация, Lint

  6. Блокнот: Гаубица Д-30 и «Катюша»

  7. Блокнот: Кунг фу графиков, поверхностей и гистограмм

  8. Слайды: Статический анализ, анализ типов, модульные тесты

— Вы находитесь здесь —

  1. Блокнот: Простые задачки, чтобы всё-таки набить руку

  2. Пример: Задача N тел

  3. Блокнот: Определяем свои пространства

  4. Пример: Модуль и пакет (TODO)

  5. Блокнот: Метод Гаусса решения СЛАУ

  6. Блокнот: Just-in-Time компиляция

  7. Слайды: Параллельное программирование: потоки, процессы, сопрограммы, циклы обработки сообщений и примеры

  8. Блокнот: Немного данных и статистики

  9. Примеры: Декларативный GUI; Множественное наследование

  10. Пример: Простое Web-приложение

  11. Пример (неоконченный): Игра на PyGame

  12. Блокнот: Реляционные БД и ORM

  13. Слайды: Классификаторы — простейший линейный и на базе нейронной сети

  14. Блокноты: Совсем немного нейронных сетей и Чуть больше нейронных сетей. И ещё чуть-чуть, и ещё чуть-чуть.


Программное обеспечение

Программное обеспечение для Windows устанавливается с официальных сайтов, для Unix-подобных систем — при помощи системного менеджера пакетов.

  • Python 3.8+ https://www.python.org/downloads/, очень желательно 64-битный

    • Для Windows:

      • говорим, что хотим изменить настройки

      • ставим галочку на тему того, что надо внести Python в системные пути

      • каталог для инсталляции выбираем c:\Python38

  • Пакеты для Python — либо при помощи системного пакетного менеджера, либо (например, для Windows) при помощи менеджера Python:

    • Обновление пакетного менеджера (необязательно) python -m pip install --upgrade pip

    • Инсталляция пакетов pip install ipython scipy numpy pandas jupyterlab matplotlib

  • Git

  • Не вредно — IDE. Популярные варианты:

    • Для маленьких программ (наш случай) — любой текстовый редактор + командная строка или совсем простая среда IDLE (под Windows инсталлируется вместе с Python)

    • Для средних программ (тоже наш случай) или «средни» ПК — Visual Studio Code + плагин для Python

    • Для крупных проектов и мощных ПК — JetBrains PyCharm, при наличии Email в домене университета — Professional Edition

Удобный файловый менеджер, позволяющий быстро бегать по файловой системе и редактировать текстовые файлы, например (но не обязательно) двухпанельные Far Manager или Midnight Commander — научиться пользоваться без мышки

  • Любой современный веб-браузер

Выполненные задания

В таблице ниже лишь сводка. Комментарии доступны по ссылке.

Основы программирования (Python), осень 2018

Содержание курса

Язык программирования Python

  1. История и предназанчение языка, основные свойстваю.

  2. Оболочки Python, IPython, Jupyter Notebook, Jupyter Lab. Система контроля версий Git, основные операции.

  3. Встроенные типы данных языка, операции над ними.

  4. Модули стандартной и внешней библиотек.

  5. Функции. Встроенная документация. Передача параметров, рекурсивные функции. Продвинутая тема — декораторы.

  6. Пользовательские типы данных. Описание классов.

  7. Реализация стандартных операций над пользовательскимим типами. Операции, вызываемые встроенными функциями и операторами.

  8. Реализация собственных модулей.

  9. Промежуточная консультация.

  10. Немного ускоримся: Numba, PyPy, Cython

  11. Работа с массивами данных: чтение/запись CSV, HDF5.

  12. Анализ массивов данных: библиотека Pandas.

  13. Сопроцедуры. AsyncIO — пример того, как Python очень не хочет быть функциональным.

  14. Веб-приложения. Фреймворки для веб-приложений.

  15. Параллельное и распределённое программирование.

Источники

Литература

  1. Mark Lutz. Learning Python, 5th Edition // O'Reilly Media, 2013, 1648 p.

  2. R. Sedgewick, K. Wayne, R. Dondero. Introduction to Programming in Python: An Interdisciplinary Approach // Addison-Wesley Professional, 2015, 792 p.

  3. [перевод предыдущей книги] Роберт Седжвик, Кевин Уэйн, Роберт Дондеро. Программирование на языке Python. Учебный курс / пер. с англ. — СПб.: ООО "Альфа-книга" // М.: Диалектика, 2017, 736 с.

  4. Брайсон Пэйн. Python для детей и родителей. Играй и программируй / пер. с англ. М.А. Райтман // М.: Издательство «Э», 2017. — 352 с. [книжку можно почитать с Google Books]

  5. Сегаран. Т. Программируем коллективный разум. / пер. с англ. – СПб: Символ-Плюс, 2008. – 368 с.

  6. Дейт К. Дж. Введение в системы баз данных / пер. с англ. Introduction to Database Systems. — 8-е изд. — М.: Вильямс, 2005. — 1328 с.

Не литература

Отдельные лекции, комментарии, важные реплики и прочие материалы