Основы программирования на Python весна 2019 матфак
О курсе
Курс читается для студентов факультета математики ВШЭ в 3-4 модулях.
Лектор: Иванникова Вероника
Лекции проходят по понедельникам, 9:00 - 10:20, в аудитории 318.
Полезные ссылки
- Чат курса в телеграме
- Репозиторий с заданиями
- Система сдачи заданий
- Обратная связь
- Карточка курса и программа
Семинары
Группа | Преподаватель | Учебный ассистент | Расписание |
---|---|---|---|
1 | Андрей Кудинов | Мовсес Элбакян | вторник, 15:30 - 16:50, ауд. 318 |
2 | Дмитрий Контуров | Соня Дымченко | понедельник, 10:30 - 11:50, ауд. 318 |
Система оценок
Формула оценки
Результирующая оценка по дисциплине рассчитывается по формуле:
Oитог = 0.8 * Oнакопл + 0.2 * Oэкз
Накопленная оценка рассчитывается как сумма баллов за все практические задания, переведённая в шкалу от 0 до 10.
Лекции
Лекция 1. Введение.
14.01 слайды
Обзор возможностей языка. Философия Python, классы решаемых задач. Интерпретация программы на Python. stdin/stdout/stderr. Память, процессор. Использование библиотек.
Лекция 2. Работа в терминале.
21.01 слайды
- чтение ошибок, правильные багрепорты, StackOverflow, универсальынй алгоритм решения любых проблем
- чуть истории Linux/Ubuntu/Windows, философия Unix
- как запустить браузер в Ubuntu
- что такое терминал, оболочка, bash, сессия, CLI, скрипты
- как получить помощь по любой команде (man, --help, which)
- как запускаются команды, где они ищутся (which, PATH, PYTHONPATH)
- работа с каталогами (pwd, cd, mkdir, rmdir, ...)
- работа с файлами (touch, cat, rm, nano, vim)
- поиск (find, grep)
- stdout, stdin, stderr, конвееры, /dev/null, xargs
- как устанавливать приложения и библиотеки в ubuntu (apt, sudo), macos (brew)
- как устанавливать приложения в Python (pip, conda, из сорцов)
Лекция 3. Сложность алгоритма. Линейные структуры данных
28.01 слайды
Примерный дальнейший план
' Структуры данных.
Структуры данных и коллекции Python, сложность вычислений по времени и памяти. Сравнение коллекций. Асимптотика. O-символика. Структуры данных numpy, pandas Однопроходный алгоритм. Генератор списка, словаря, множества. Бинарный поиск и его сложность. Сортировки. Оценка сложности. Хеш-таблицы. Стек, очередь, правильная скобочная последовательность. Бинарный поиск.
Лекция 4 Строки, кодировки, Unicode.
Представление строк. Конкатенация. Быстрый поиск подстрок. Длина строки. Кодировки. Работа с файлами.
Лекция 5 Функции.
Входные и выходные параметры. Позиционные и именованные аргументы. Лямбда-функции. Декораторы. Модуль functools
Лекция 6-7 ООП. Цели и задачи ООП. Классы, атрибуты, методы. Объектная модель Python. Паттерны проектирования
Лекция 8 Обработка ошибок. Исключения. Обработка ошибок. Менеджеры контекста.
Лекция 9 Дизайн приложений и библиотек. Промышленное программирование.
Распространение кода на Python: wheel, egg. Пакетные менеджеры. Дизайн программы. Стиль кода. Документация и тестирование
Лекция 10 Регулярные выражения.
Лекция 11 Стандартная библиотека языка Python.
Лекция 12-14 Анализ данных на Python.
Matplotlib, Numpy, Pandas, Scipy. Описательные статистики. Гистограммы. Ящики с усами. Ядерные оценки плотности.
Лекция 15-16 Web-технологии.
HTTP, клиент-сервер, REST. requests, telegram-боты
Лекция 17 Итераторы, последовательности, генераторы.
Лекция 18 Обзор всего пройденного на курсе.
Семинары
Семинары 1-2 Основные инструменты
Note! Очень желательно принести с собой ноутбук, потому что сдавать в систему задачки с компьютеров из дисплейного класса нельзя.
1. Общие организационные моменты
2. продвинутые python-интерпретаторы jupyter, colab.
Подсказки в продвинутых интерпретаторах.
https://colab.research.google.com/notebooks/welcome.ipynb
3. Как поставить python и настроить окружение.
Научный дистрибутив Anaconda https://www.anaconda.com/download
Как ставить либы через pip https://www.digitalocean.com/community/tutorials/common-python-tools-using-virtualenv-installing-with-pip-and-managing-packages#a-thorough-pip-how-to
4. Базовый рассказ про работу в командной строке, git, ssh (необходимо для сдачи заданий) Навигация по папкам, перемещение и удаление папок/файлов. Note! про stdin, stdout, stderr практических примеров! На лекции не разобрались. Материалы про git https://git-scm.com/book/ru/v2 (достаточно будет разобраться что же такое система контроля версий, коммит, репозиторий, что делают команды git push, git pull)
Материалы про ssh https://www.digitalocean.com/community/tutorials/understanding-the-ssh-encryption-and-connection-process
5. Знакомство с чудо-системой приёма домашек. https://hse-programming-intro.manytask.org/
Инструкция как настроить систему https://gitlab.com/appleveronika/hse-programming-intro/blob/master/README.md
6. Работа в PyCharm Подсказки по питону и либам. Как настроить проект с задачками курса и запускать тесты. Навигация по проекту.
https://www.jetbrains.com/pycharm/download/#section=mac нужна версия Community (PyCharm CE)
7. Для вашего удобства, для тех кто затрудняется настроить систему, мы подготовили виртуальную машину с Ubuntu с преднастроенной системой (там есть git, python, pytest) архив https://yadi.sk/d/cYJx1a1SLpM0yQ пароль от архива спрашивайте у семинаристов и в чате курса
Семинар 3. Простые алгоритмы с анализом сложности
Бинарный поиск, сортировки, использование stack и queue
ноутбук с примерами https://drive.google.com/file/d/1Em4yuD9Om1Fd3ChkewRImdCMZ25s_WnS/view?usp=sharing
Домашние задания
Новости курса
22.01 Консультация по настройке окружения и системы состоится 23 января 2 парой (10:30 - 11:50) в аудитории 318.
14.01 Семинар Димы Контурова перенесён на понедельник, после лекции, в аудитории 318. На этой неделе семинар состоится в среду, 16 января, в дисплейном классе 318.
Полезные материалы
Основная литература
- Н.А.Ворожцов, А.В.Винокуров, 2008. Практика и теория программирования. Физматкнига
- Документация языка Python https://docs.python.org/3/
- Б.У. Керниган, Р. Пайк , 2017. Практика программирования. Вильямс
- Д.Бизли, 2014. Python. Подробный справочник. Символ-плюс