Слайды: Python: что это, откуда и зачем
Слайды: Немного практики
Блокнот: Основы
Блокнот: Ответы на вводный тест
Пример: Задача N тел
Блокнот: Определяем свои пространства
Пример: Модуль и пакет (TODO)
Блокнот: Метод Гаусса решения СЛАУ
Блокнот: Just-in-Time компиляция
Слайды: Параллельное программирование: потоки, процессы, сопрограммы, циклы обработки сообщений и примеры
Блокнот: Немного данных и статистики
Примеры: Декларативный GUI; Множественное наследование
Пример: Простое Web-приложение
Пример (неоконченный): Игра на PyGame
Блокнот: Реляционные БД и ORM
Слайды: Классификаторы — простейший линейный и на базе нейронной сети
Блокноты: Совсем немного нейронных сетей и Чуть больше нейронных сетей. И ещё чуть-чуть, и ещё чуть-чуть.
Те же блокноты, но в режиме предпросмотра GitHub (с некоторыми ошибками, но GiHub умеет их показывать).
Почистить репозитории. Не должно быть разных версий одного и того же в разных файлах (это ж Git, для такого надо пользоваться версионированием!). Файлы должны быть названы в соответствии с рекомендациями PEP-8. В дохдчивом виде они изложены здесь: https://github.com/naming-convention/naming-convention-guides/tree/master/python
Любое из уже сделанных заданий (тех, для которых это подходит) оформить, как основную программу и модуль или пакет. Вот здесь и здесь можно освежить, как
Реализовать метод Гаусса решения СЛАУ; векторный или не векторный — на ваш вкус
Ускорить метод Гаусса при помощи Just-in-Time-компиляции; измерить ускорение
GUI-приложение с неблокирующим вводом-выводом
Проверка статистических гипотез относительно экспериментальных данных
Простейшее Web-приложение (взять одно из старых заданий, например, НОД, и сделать для него веб-интерфейс)
Базы данных: написать любую интерактивную (консоль, GUI или Web) программу, которая позволила бы редактировать данные в БД. БД можно взять с данными о студентах из лекции. К примеру, можно при помощи программы ставить студентам оценки
Базы данных: продемонстрировать любую (кроме DROP TABLE) SQL-инъекцию и дать комментарий касательно того, что в программе написано неправильно (из-за чего инъекция возможна)
Нейрокартинка. Взять один из двух блокнотов — локальный или Google Colab, модифицировать условие в верхней части на попадание точки в фигуру и обучить нейронную сеть другой фигуре. Для сложных фигур можно изменить количество нейронов в скрытом слое
Лабораторные и контрольные
Кунг фу Git (2 балла, обязательная работа, 11 марта). Задания (и команды, которые надо освоить):
Переименовать файл в локальном репозитории (git mv). Отправить изменения на сервер (git commit, git push).
Внести и зафиксировать изменения в локальном репозитории и в серверном (в серверном можно при помощи ещё одной локальной копии и через веб-нитерфейс); обновить локальный репозиторий таким образом, чтобы в нём были сделаны все изменения (git pull --rebase или git pull и git merge). Отправить результат на сервер.
Продемонстрировать умение откатывать (git reset и git checkout) и прятать (git stash) локальные изменения.
Найти заданное изменение в истории редактирования файла (git log и git blame, либо gitk и git gui blame).
Under construction 🚧
Under construction 🚧
Примерные темы докладов. Ориентировочная продолжительность доклада — полчаса. Доклад можно делать в одиночку или вдвоём (если вдвоём, то что-то должен рассказать каждый(ая)). Докладчик может переформулировать тему или предложить свою.
Модульные тесты: зачем и как
PyGame: мой волшебный опыт
Шифрование: простейшие подходы и посложнее
Взлом простейших алгоритмов шифрования
Основы обработки изображений
0. Подготовительные мероприятия:
освоить базовую работу с коммандной оболочкой — уметь настраивать системные пути, запускать программы, перемещаться по каталогам, смотреть и редактировать их содержимое и содержимое текстовых файлов; можно на примере этого или этого (кроме программы на Си) материала;
инсталлировать программное обеспечение, указанное на сайте.
Назвать и прокомментировать первую программу (например ту, которая показывает график функции), можно дописать.
Опубликовать её на GitHub.
Измерить скорость работы рекурсивной функции вычисления чисел Фибоначчи с мемоизацией (lru_cache, см. пример) и без. Можно самостоятельно изучить и применить модуль timeit, он для того и сделан.
Посмотреть блокнот и реализовать вычисление любой элементарной функции (кроме sin =) ), выложить блокнот (файл .ipynb) на GitHub.
Реализовать декоратор «с параметром», заданное количество раз применяющий функцию к аргументу.
Написать любую или дополнить существующую программу с использованием аннотаций типов, добиться, чтобы typechecker MyPy не выдавал на ней ошибок и предупреждений.
Улучшить любую свою программу при помощи PyLint, продемонстрировать результат (можно в виде ссылки на коммит в Git).
Изи. Набери до 4 баллов на мелких простых задачках, только программируй аккуратно! Алгоритмы Евклида — обязательно.
«Кеплер 1». Дописать класс UniverseWithBodies и переделать код в конце программы, чтобы пользовался им. Тела должны действовать друг на друга.
«Кеплер 2». Дописать класс UniverseWithDimensionsAndBodies и переделать код в конце программы, чтобы пользовался им Попробовать для двумерного пространства.
Придумать и реализовать какой-нибудь свой тип данных с арифметическими операциями (примеры в соответствующем блокноте). Это может быть поле, кольцо или группа с соответствующим набором операций (для группы — как минимум, умножение, деление, степень).
Программное обеспечение для 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, например отсюда: https://git-scm.com/download/win
Не вредно — JetBrains PyCharm, при наличии Email в домене университета — Professional Edition
Удобный файловый менеджер, позволяющий быстро бегать по файловой системе и редактировать текстовые файлы, например (но не обязательно) двухпанельные Far Manager или Midnight Commander — научиться пользоваться без мышки
Любой современный веб-браузер
В таблице ниже лишь сводка. Комментарии доступны по ссылке.
История и предназанчение языка, основные свойстваю.
Оболочки Python, IPython, Jupyter Notebook, Jupyter Lab. Система контроля версий Git, основные операции.
Встроенные типы данных языка, операции над ними.
Модули стандартной и внешней библиотек.
Функции. Встроенная документация. Передача параметров, рекурсивные функции. Продвинутая тема — декораторы.
Пользовательские типы данных. Описание классов.
Реализация стандартных операций над пользовательскимим типами. Операции, вызываемые встроенными функциями и операторами.
Реализация собственных модулей.
Промежуточная консультация.
Немного ускоримся: Numba, PyPy, Cython
Работа с массивами данных: чтение/запись CSV, HDF5.
Анализ массивов данных: библиотека Pandas.
Сопроцедуры. AsyncIO — пример того, как Python очень не хочет быть функциональным.
Веб-приложения. Фреймворки для веб-приложений.
Параллельное и распределённое программирование.
Mark Lutz. Learning Python, 5th Edition // O'Reilly Media, 2013, 1648 p.
[перевод предыдущей книги] Роберт Седжвик, Кевин Уэйн, Роберт Дондеро. Программирование на языке Python. Учебный курс / пер. с англ. — СПб.: ООО "Альфа-книга" // М.: Диалектика, 2017, 736 с.
Брайсон Пэйн. Python для детей и родителей. Играй и программируй / пер. с англ. М.А. Райтман // М.: Издательство «Э», 2017. — 352 с. [книжку можно почитать с Google Books]
Сегаран. Т. Программируем коллективный разум. / пер. с англ. – СПб: Символ-Плюс, 2008. – 368 с.
Дейт К. Дж. Введение в системы баз данных / пер. с англ. Introduction to Database Systems. — 8-е изд. — М.: Вильямс, 2005. — 1328 с.
Грозин Андрей Геннадьевич. Питон в научных вычислениях // Новосибирский государственный университет
https://pep8.ru/blog/ (RSS: http://feeds.feedburner.com/pep8blogs)