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

Python

Ресурсы

  • Эта страничка
    • Слайды
    • Список литературы и не литературы
  • Чатик =)

Слайды

  1. Python: что это, откуда и зачем
  2. Немного практики

Блокноты

  1. Основы
  2. Элементарные функции
  3. Кеплер и плоская вселенная
  4. Функции и декораторы
  5. Определяем свои пространства
  6. Мелкие простые задачки на работу с числами

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

Задания

0. Подготовительные мероприятия:

    • освоить базовую работу с коммандной оболочкой — уметь настраивать системные пути, запускать программы, перемещаться по каталогам, смотреть и редактировать их содержимое и содержимое текстовых файлов; можно на примере этого или этого (кроме программы на Си) материала;
    • инсталлировать программное обеспечение, указанное на сайте.
  1. Назвать и прокомментировать первую программу, можно дописать.
  2. Опубликовать её на GitHub.
  3. Реализовать вычисление любой элементарной функции (кроме sin =) ), выложить блокнот на GitHub.
  4. Численно решить задачу N тел для «плоской» вселенной.
  5. Для физиков необязательно. Сделать «декоратор с параметром», применяющий функцию к аргументу заданное количество раз.
  6. Придумать и реализовать какой-нибудь свой тип данных с арифметическими операциями (примеры в соответствующем блокноте).
  7. Пункты A–D. Можно решать по одной. Совсем мелкие и совсем простые задачки для разминки (блокнот 6).

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

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

  • Python 3.7+ https://www.python.org/downloads/ желательно 64-битный
    • Для Windows:
      • говорим, что хотим изменить настройки
      • ставим галочку на тему того, что надо внести Python в системные пути
      • каталог для инсталляции выбираем c:\Python37
  • Пакеты для Python — либо при помощи системного пакетного менеджера, либо (например, для Windows) при помощи менеджера Python:
    • Обновление пакетного менеджера (необязательно) python -m pip install --upgrade pip
    • Инсталляция пакетов pip install ipython scipy numpy pandas jupyter matplotlib
  • Git, например отсюда: https://git-scm.com/download/win

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

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

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

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

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

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

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

  1. История и предназанчение языка, основные свойстваю.
  2. Оболочки Python, IPython, Jupyter. Система контроля версий Git, основные операции.
  3. Встроенные типы данных языка, операции над ними.
  4. Модули стандартной и внешней библиотек.
  5. Функции. Встроенная документация. Передача параметров, рекурсивные функции. Продвинутая тема — декораторы.
  6. Пользовательские типы данных. Описание классов.
  7. Реализация стандартных операций над пользовательскимим типами. Операции, вызываемые встроенными функциями и операторами.
  8. Реализация собственных модулей.
  9. Промежуточная консультация.
  10. Немного ускоримся: Numba, PyPy, Cython
  11. Работа с массивами данных: чтение/запись CSV, HDF5.
  12. Анализ массивов данных: библиотека Pandas.
  13. Сопроцедуры. AsyncIO — пример того, как Python очень не хочет быть функциональным.
  14. Веб-приложения. Фреймворки для веб-приложений.
  15. Параллельное и распределённое программирование.

Практические задачи

  1. Первая программа, отображение графика функции.
  2. Частичная сумма ряда Тейлора.
  3. Задача N тел для гравитационного поля планиверсума.
  4. Для физиков необязательно. Декоратор с параметрами.
  5. Тип данных с арифметикой.
  6. Деление многочленов над полем вычетов по модулю 2 с остатком (подсчёт CRC).
  7. Модули, которые работают с многочленами и полями.
  8. Немного просто программирования: метод Гаусса решения СЛАУ. С Numba и без.
  9. Находим фальсификаторов при помощи критерия Колмогорова-Смирнова.
  10. Для физиков необязательно. Web-приложение Flask, Quart.
  11. Параллельно взламываем простой пароль ZIP-архива.

Источники