Основы программирования на Python весна 2019 матфак — различия между версиями
(→Семинары) |
|||
(не показано 115 промежуточных версии 2 участников) | |||
Строка 1: | Строка 1: | ||
+ | Занятия потока 2020 года начинаются 11 января в субботу, 2 и 3-я пара. На Усачева | ||
+ | |||
+ | |||
+ | [http://wiki.cs.hse.ru/%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D1%8B_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F_%D0%BD%D0%B0_Python_%D0%B2%D0%B5%D1%81%D0%BD%D0%B0_2020_%D0%BC%D0%B0%D1%82%D1%84%D0%B0%D0%BA Страница курса 2020 года] | ||
+ | |||
== О курсе == | == О курсе == | ||
Строка 6: | Строка 11: | ||
Курс читается для студентов факультета математики ВШЭ в 3-4 модулях. | Курс читается для студентов факультета математики ВШЭ в 3-4 модулях. | ||
− | + | На курсе есть лекции и семинары. | |
+ | |||
− | + | '''Лектор:''' [https://t-do.ru/apple_veronika Иванникова Вероника] | |
+ | Лекции проходят по понедельникам, 9:00 - 10:20, в аудитории 318. | ||
+ | === Пререквизиты курса === | ||
+ | От слушателей курса ожидается: | ||
+ | * базовое знание Python (условия, циклы, функции, классы) | ||
+ | * готовность работать в терминале и преодолевать трудности | ||
+ | * знакомство с базовым математическим аппаратом (например, основы статистики, линейная алгебра и проч.) | ||
− | === | + | === Необходимые ссылки === |
− | * [https:// | + | * [https://goo.gl/forms/orSBJ6Rih0f1a9na2 Обратная связь] |
− | + | ||
− | + | ||
* [https://www.hse.ru/ma/pmath/courses/221310207.html Карточка курса и программа] | * [https://www.hse.ru/ma/pmath/courses/221310207.html Карточка курса и программа] | ||
Строка 22: | Строка 32: | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
− | ! Группа !! Преподаватель !! Учебный ассистент !! Расписание | + | ! Группа !! Преподаватель !! Учебный ассистент !! Расписание |
|- | |- | ||
− | | 1 || Андрей Кудинов || Мовсес Элбакян || | + | | 1 || [https://t-do.ru/AndreyLogic Андрей Кудинов] || [https://t-do.ru/sesvom Мовсес Элбакян] || вторник, 15:30 - 16:50, ауд. 318 |
|- | |- | ||
− | | 2 || Дмитрий Контуров || [https://t-do.ru/svdcvt Соня Дымченко] || | + | | 2 || [https://t-do.ru/Kipnell Дмитрий Контуров] || [https://t-do.ru/svdcvt Соня Дымченко] || понедельник, 10:30 - 11:50, ауд. 318 |
|- | |- | ||
|} | |} | ||
− | + | === Формула оценки === | |
− | + | ||
Результирующая оценка по дисциплине рассчитывается по формуле: | Результирующая оценка по дисциплине рассчитывается по формуле: | ||
Строка 38: | Строка 47: | ||
Накопленная оценка рассчитывается как сумма баллов за все практические задания, переведённая в шкалу от 0 до 10. | Накопленная оценка рассчитывается как сумма баллов за все практические задания, переведённая в шкалу от 0 до 10. | ||
− | + | Экзамен сдаётся в форме контеста в той же системе, что и обычные задания. | |
− | + | ||
− | + | ||
− | + | ||
− | == | + | == Настройка системы для сдачи практических заданий == |
− | + | Все задания сдаются в специальную систему сдачи заданий Manytask со своего компьютера, можно из дома. | |
+ | Нужно настроить свой компьютер, и для этого придётся использовать терминал. | ||
− | === | + | === Операционная система и терминал === |
− | + | Для пользователей MacOs и других Unix/Linux-систем терминал уже предустановлен, для пользователей Windows 10 надо поставить Ubuntu-терминал, для пользователей прочих Windows надо поставить виртуальную машину с Ubuntu. | |
− | ( | + | [https://drive.google.com/file/d/1rHTgqxe4pnTfJbNVD7MCVCCAZNaGLgGh/view?usp=sharing Инструкция для Windows 10 (сразу с настройкой системы сдачи задач)], спасибо Сморчкову Мите |
− | + | Если стоит Windows другой версии, то есть подготовленная виртуальная машина с Ubuntu с частично преднастроенной системой (там есть git, python, pytest): | |
+ | * [https://yadi.sk/d/MByngRhWOPgxzQ 32-битная] | ||
+ | * [https://yadi.sk/d/cYJx1a1SLpM0yQ 64-битная] | ||
− | | | + | [https://docs.google.com/document/d/1D8gyMokc9RDLbBQODEYubwJwUdFarWJYceIRW-GSF1M/edit?usp=sharing Инструкция создания виртуальной машины] |
+ | |||
+ | === Как работать в терминале === | ||
+ | Этому была посвящена 2 лекция (см слайды в списке лекций) и первые 2 семинара. | ||
+ | Новоприбывшим надо посмотреть слайды и пройти [https://www.learnenough.com/command-line-tutorial/basics туториал] | ||
+ | |||
+ | === Python 3.6 === | ||
+ | Нужен интрепретатор Python 3.6 | ||
+ | Рекомендуем дистрибутив Anaconda | ||
+ | |||
+ | Рекомендуем также использовать PyCharm Community Edition | ||
+ | (кстати, для студентов можно бесплатно получить и профессиональную версию, но это не требуется) | ||
+ | |||
+ | смотрите материалы к семинарам 1-2, именно там мы учились настраивать и пользоваться инструментами. | ||
+ | |||
+ | На занятия лучше носить ноутбук, но если нет такой возможности, можно использовать https://colab.research.google.com/ который работает с любого утюга. | ||
+ | |||
+ | === Настройка Manytask === | ||
+ | [https://gitlab.com/appleveronika/hse-programming-intro/blob/master/README.md Инструкция настройки системы сдачи задач] | ||
+ | |||
+ | Если возникают вопросы, попробуйте сначала воспользоваться поиском в интернете, потом поиском по чату (возможно ваш вопрос уже задавали), в ином случае задавайте его в чат (или пишите ассистентам). На второй лекции мы разбирали как надо задавать вопросы, просмотрите, пожалуйста, слайды и прочитайте статейки по ссылкам в слайдах; | ||
+ | |||
+ | ====Интерфейс Manytask==== | ||
+ | [[Файл:Manytask.png|500px|безрамки]] | ||
+ | |||
+ | <br /> | ||
== Лекции == | == Лекции == | ||
− | + | ===Лекция 1. Введение=== | |
− | + | 14.01 [https://docs.google.com/presentation/d/14TzgxrIy0S8zdIuLsCzCHGa-V_x4T3MmbSffVT9GKjU/edit?usp=sharing слайды] | |
+ | |||
+ | Обзор возможностей языка. | ||
Философия Python, классы решаемых задач. | Философия Python, классы решаемых задач. | ||
Интерпретация программы на Python. stdin/stdout/stderr. Память, процессор. Использование библиотек. | Интерпретация программы на Python. stdin/stdout/stderr. Память, процессор. Использование библиотек. | ||
− | |||
− | |||
− | |||
− | [http:// | + | ===Лекция 2. Работа в терминале=== |
+ | 21.01 [https://docs.google.com/presentation/d/1aH9JNnhKTz4FRYG8JyCrp3CS4e5IIgLF9gG0UXtyuhs/edit?usp=sharing слайды] | ||
+ | |||
+ | - чтение ошибок, правильные багрепорты, 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 [https://docs.google.com/presentation/d/1Pr73SShEi23I9KcVje0ne8zSlEsQ23U7TdznuMhj4TQ/edit?usp=sharing слайды] | ||
+ | |||
+ | ===Лекция 4. Словари. Data model === | ||
+ | 04.02 [https://docs.google.com/presentation/d/1O9-vfbgt9Y44tZaT-a5vPFjG7o4V-FIlhG5JX4SME7k/edit?usp=sharing слайды] [https://colab.research.google.com/drive/18XtlBR259Z3tyxqSn62SuMa0lDAEYV5B примеры к лекции] | ||
+ | |||
+ | ===Лекция 5. Представление данных в компьютере. === | ||
+ | 11.02 [https://docs.google.com/presentation/d/16OnHqGIGwpHoaUIVGysRabCJPMxAuObtSDJ5FzLAREA/edit?usp=sharing слайды] | ||
+ | * text, encoding, unicode | ||
+ | * str vs bytes | ||
+ | * file IO | ||
+ | |||
+ | ===Лекция 6. Функции 1=== | ||
+ | 19.02 [https://docs.google.com/presentation/d/1g48Cxph7QxpoOEbfTeaLBnrmoQxLuZj_WAJvFeIUFvg/edit?usp=sharing слайды] | ||
+ | |||
+ | ===Лекция 7. Функции 2=== | ||
+ | Элементы функционального стиля в Python | ||
+ | 25.02 [https://docs.google.com/presentation/d/1j5IkTNrv1Q9sIwl9n2w32Qb_BbNFmku2_4U3P0G5wXs/edit?usp=sharing слайды] | ||
+ | |||
+ | ===Лекция 8. Обработка ошибок === | ||
+ | 04.03 [https://docs.google.com/presentation/d/15TEQoJs_jxoU9gLvVvbSmipdAJw8CWO6__deSxdSdKs/edit?usp=sharing слайды] | ||
+ | |||
+ | ===Лекция 9. Итераторы и генераторы=== | ||
+ | 11.03 | ||
+ | [http://www.dabeaz.com/generators/Generators.pdf слайды] см первые 2 части. | ||
+ | |||
+ | практика https://colab.research.google.com/drive/1ZjaD2LfPksqOYxnqD_60OeFUJ1xQCies | ||
+ | |||
+ | больше про itertools https://compscicenter.ru/courses/python/2018-autumn/classes/4299/ | ||
+ | |||
+ | ===Лекция 10. Проектирование, тестирование, стиль=== | ||
+ | https://docs.google.com/presentation/d/1FzLRs0jzOOHLTlRbID9hQPOZJT2ZUQb4m3hNdaI4RtE/edit?usp=sharing | ||
+ | |||
+ | ===Лекция 11. Введение в сетевые технологии=== | ||
+ | 1.04 [https://docs.google.com/presentation/d/1OrjLHz4rb9IUDBfHAsONNjbgCQkLH1fKVfzV9RKV6b0/edit?usp=sharing слайды] | ||
+ | |||
+ | ===Лекция 12. Web=== | ||
+ | 8.04 [https://docs.google.com/presentation/d/1qOvVbwaDes444tMEs-7ITO16eR-opgkK5riAHOze6iE/edit?usp=sharing слайды] | ||
+ | |||
+ | ===Лекция 13. Web API, Facebook Messenger API=== | ||
+ | 15.04 презентация сломана, все примеры на доске рисовались | ||
+ | |||
+ | ===Лекция 14. Архитектура web-сервиса.=== | ||
+ | 22.04 Архитектура web-сервиса на примере Авито. Как решать 2-ую домашку. | ||
+ | |||
+ | ===Лекция 15. Concurrency and parallelism=== | ||
+ | 29.04 multiprocessing, threading, asyncio | ||
+ | |||
+ | https://realpython.com/python-concurrency/ | ||
+ | |||
+ | https://github.com/yandexdataschool/python_public/blob/master/slides/9s.Asyncrony.ipynb | ||
+ | |||
+ | https://docs.python.org/3/library/concurrent.futures.html#module-concurrent.futures | ||
+ | |||
+ | ===Лекция 16. Введение в анализ данных.=== | ||
+ | 13.05 numpy, pandas, matplotlib | ||
+ | презентации https://drive.google.com/file/d/1bDenUb8aO1wDJp7xDiaWgEhClYNPc9K-/view?usp=sharing | ||
+ | |||
+ | ===Лекция 17. Введение в анализ данных - 2.=== | ||
+ | 20.05 | ||
+ | https://github.com/wesm/pydata-book | ||
+ | |||
+ | == Программа курса - примерное содержание занятий== | ||
− | + | * Структуры данных. | |
Структуры данных и коллекции Python, сложность вычислений по времени и памяти. Сравнение коллекций. Асимптотика. O-символика. Структуры данных numpy, pandas | Структуры данных и коллекции Python, сложность вычислений по времени и памяти. Сравнение коллекций. Асимптотика. O-символика. Структуры данных numpy, pandas | ||
Строка 72: | Строка 194: | ||
Стек, очередь, правильная скобочная последовательность. Бинарный поиск. | Стек, очередь, правильная скобочная последовательность. Бинарный поиск. | ||
− | + | * Строки, кодировки, Unicode. | |
Представление строк. Конкатенация. Быстрый поиск подстрок. Длина строки. Кодировки. | Представление строк. Конкатенация. Быстрый поиск подстрок. Длина строки. Кодировки. | ||
Работа с файлами. | Работа с файлами. | ||
− | + | * Функции. | |
Входные и выходные параметры. Позиционные и именованные аргументы. Лямбда-функции. | Входные и выходные параметры. Позиционные и именованные аргументы. Лямбда-функции. | ||
Строка 83: | Строка 205: | ||
Модуль functools | Модуль functools | ||
− | + | * ООП. | |
Цели и задачи ООП. Классы, атрибуты, методы. Объектная модель Python. Паттерны проектирования | Цели и задачи ООП. Классы, атрибуты, методы. Объектная модель Python. Паттерны проектирования | ||
− | + | * Обработка ошибок. | |
Исключения. Обработка ошибок. Менеджеры контекста. | Исключения. Обработка ошибок. Менеджеры контекста. | ||
− | + | * Дизайн приложений и библиотек. Промышленное программирование. | |
Распространение кода на Python: wheel, egg. Пакетные менеджеры. | Распространение кода на Python: wheel, egg. Пакетные менеджеры. | ||
Строка 95: | Строка 217: | ||
Документация и тестирование | Документация и тестирование | ||
− | + | * Регулярные выражения. | |
− | + | * Стандартная библиотека языка Python. | |
− | + | * Анализ данных на Python. | |
− | + | Matplotlib, Numpy, Pandas, Scipy. | |
Описательные статистики. Гистограммы. Ящики с усами. Ядерные оценки плотности. | Описательные статистики. Гистограммы. Ящики с усами. Ядерные оценки плотности. | ||
− | + | * Web-технологии. | |
HTTP, клиент-сервер, REST. requests, telegram-боты | HTTP, клиент-сервер, REST. requests, telegram-боты | ||
− | + | * Итераторы, последовательности, генераторы. | |
− | + | * Обзор всего пройденного на курсе. | |
== Семинары == | == Семинары == | ||
− | + | ===Семинары 1-2. Основные инструменты === | |
Note! Очень желательно принести с собой ноутбук, | Note! Очень желательно принести с собой ноутбук, | ||
Строка 121: | Строка 243: | ||
1. Общие организационные моменты | 1. Общие организационные моменты | ||
− | 2. | + | 2. продвинутые python-интерпретаторы jupyter, colab. |
− | + | Подсказки в продвинутых интерпретаторах. | |
− | 4. Знакомство с чудо-системой приёма домашек. | + | 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 | ||
+ | |||
+ | ===Семинар 4. Алгоритмы хеширования=== | ||
+ | |||
+ | ===Семинар 5. type hints=== | ||
+ | |||
+ | ===Семинар 6. Конечные автоматы=== | ||
+ | слайды https://colab.research.google.com/drive/1P9mgjZ-Le_-5AhV1Fov8zNskTQX0LCG8 | ||
+ | |||
+ | ===Семинар 7. Регулярные выражения=== | ||
+ | |||
+ | ===Семинар 8. Тесты=== | ||
+ | |||
+ | ===Семинар 13. === | ||
+ | примеры с семинара Димы: | ||
+ | https://github.com/miguelgrinberg/flasky/tree/4c | ||
+ | https://github.com/miguelgrinberg/flasky/tree/14a | ||
+ | |||
+ | (если вам тяжеловато, то лучше начать с самых простых примеров, например, | ||
+ | https://github.com/miguelgrinberg/flasky/blob/2a/hello.py | ||
+ | https://github.com/miguelgrinberg/flasky/blob/2b/hello.py | ||
+ | |||
+ | книжка https://flaskbook.com/# — есть ссылки на видосы обучающие, если вы любите такой формат. | ||
+ | |||
+ | ===Семинар 16=== | ||
+ | Задание https://drive.google.com/file/d/1I8rU8h3ODF7jfB2arXcrzI0NCgCgXBwN/view?usp=sharing | ||
== Домашние задания == | == Домашние задания == | ||
+ | Каждую неделю необходимо сдавать практические задания в Manytask | ||
+ | === ДЗ №1 === | ||
+ | [https://gitlab.com/appleveronika/hse-programming-intro/tree/master/hw1_text_generator Ссылка на задание] | ||
+ | Дедлайн: 02.04 23:59 | ||
+ | |||
+ | === ДЗ №2 === | ||
+ | https://gitlab.com/appleveronika/hse-programming-intro/tree/master/hw2_bot | ||
+ | |||
+ | === ДЗ №3 === | ||
+ | https://gitlab.com/appleveronika/hse-programming-intro/tree/master/hw3_luck | ||
+ | |||
+ | https://gitlab.com/appleveronika/hse-programming-intro/tree/master/hw3_plummet | ||
+ | |||
+ | https://gitlab.com/appleveronika/hse-programming-intro/tree/master/hw3_pump_and_dump | ||
+ | |||
+ | https://gitlab.com/appleveronika/hse-programming-intro/tree/master/hw3_roi | ||
== Новости курса == | == Новости курса == | ||
+ | |||
+ | 31.05 курс закончен, оценки проставлены, больше занятий не будет! | ||
+ | по вопросам пересдачи неудов пишите Веронике Иванниковой в телеграм: | ||
+ | чтобы зачесть курс, вам надо прорешать все домашние задания, залить в систему (генератор текстов, фейсбук-бот, задания на pandas) и написать Веронике Иванниковой об этом. | ||
+ | по правилам университета вы можете досдавать курс до 27 июня. | ||
+ | |||
+ | 27.04 экзамен будет 27 мая, время с 12 до 14. экзамен будет в форме контеста | ||
+ | |||
+ | 22.01 Консультация по настройке окружения и системы состоится 23 января 2 парой (10:30 - 11:50) в аудитории 318. | ||
+ | |||
+ | 14.01 Семинар Димы Контурова перенесён на понедельник, после лекции, в аудитории 318. | ||
+ | На этой неделе семинар состоится в среду, 16 января, в дисплейном классе 318. | ||
== Полезные материалы == | == Полезные материалы == | ||
Строка 137: | Строка 348: | ||
# Документация языка Python https://docs.python.org/3/ | # Документация языка Python https://docs.python.org/3/ | ||
# Б.У. Керниган, Р. Пайк , 2017. Практика программирования. Вильямс | # Б.У. Керниган, Р. Пайк , 2017. Практика программирования. Вильямс | ||
− | # | + | # Micha Gorelick, Ian Ozsvald, 2014. High Performance Python |
− | + | # Лучано Рамальо, 2016. Python. К вершинам мастерства | |
− | + | ||
− | + | ||
− | + |
Текущая версия на 22:15, 10 января 2020
Занятия потока 2020 года начинаются 11 января в субботу, 2 и 3-я пара. На Усачева
Содержание
- 1 О курсе
- 2 Настройка системы для сдачи практических заданий
- 3 Лекции
- 3.1 Лекция 1. Введение
- 3.2 Лекция 2. Работа в терминале
- 3.3 Лекция 3. Сложность алгоритма. Линейные структуры данных
- 3.4 Лекция 4. Словари. Data model
- 3.5 Лекция 5. Представление данных в компьютере.
- 3.6 Лекция 6. Функции 1
- 3.7 Лекция 7. Функции 2
- 3.8 Лекция 8. Обработка ошибок
- 3.9 Лекция 9. Итераторы и генераторы
- 3.10 Лекция 10. Проектирование, тестирование, стиль
- 3.11 Лекция 11. Введение в сетевые технологии
- 3.12 Лекция 12. Web
- 3.13 Лекция 13. Web API, Facebook Messenger API
- 3.14 Лекция 14. Архитектура web-сервиса.
- 3.15 Лекция 15. Concurrency and parallelism
- 3.16 Лекция 16. Введение в анализ данных.
- 3.17 Лекция 17. Введение в анализ данных - 2.
- 4 Программа курса - примерное содержание занятий
- 5 Семинары
- 6 Домашние задания
- 7 Новости курса
- 8 Полезные материалы
О курсе
Курс читается для студентов факультета математики ВШЭ в 3-4 модулях.
На курсе есть лекции и семинары.
Лектор: Иванникова Вероника
Лекции проходят по понедельникам, 9:00 - 10:20, в аудитории 318.
Пререквизиты курса
От слушателей курса ожидается:
- базовое знание Python (условия, циклы, функции, классы)
- готовность работать в терминале и преодолевать трудности
- знакомство с базовым математическим аппаратом (например, основы статистики, линейная алгебра и проч.)
Необходимые ссылки
Семинары
Группа | Преподаватель | Учебный ассистент | Расписание |
---|---|---|---|
1 | Андрей Кудинов | Мовсес Элбакян | вторник, 15:30 - 16:50, ауд. 318 |
2 | Дмитрий Контуров | Соня Дымченко | понедельник, 10:30 - 11:50, ауд. 318 |
Формула оценки
Результирующая оценка по дисциплине рассчитывается по формуле:
Oитог = 0.8 * Oнакопл + 0.2 * Oэкз
Накопленная оценка рассчитывается как сумма баллов за все практические задания, переведённая в шкалу от 0 до 10.
Экзамен сдаётся в форме контеста в той же системе, что и обычные задания.
Настройка системы для сдачи практических заданий
Все задания сдаются в специальную систему сдачи заданий Manytask со своего компьютера, можно из дома. Нужно настроить свой компьютер, и для этого придётся использовать терминал.
Операционная система и терминал
Для пользователей MacOs и других Unix/Linux-систем терминал уже предустановлен, для пользователей Windows 10 надо поставить Ubuntu-терминал, для пользователей прочих Windows надо поставить виртуальную машину с Ubuntu.
Инструкция для Windows 10 (сразу с настройкой системы сдачи задач), спасибо Сморчкову Мите
Если стоит Windows другой версии, то есть подготовленная виртуальная машина с Ubuntu с частично преднастроенной системой (там есть git, python, pytest):
Инструкция создания виртуальной машины
Как работать в терминале
Этому была посвящена 2 лекция (см слайды в списке лекций) и первые 2 семинара. Новоприбывшим надо посмотреть слайды и пройти туториал
Python 3.6
Нужен интрепретатор Python 3.6 Рекомендуем дистрибутив Anaconda
Рекомендуем также использовать PyCharm Community Edition (кстати, для студентов можно бесплатно получить и профессиональную версию, но это не требуется)
смотрите материалы к семинарам 1-2, именно там мы учились настраивать и пользоваться инструментами.
На занятия лучше носить ноутбук, но если нет такой возможности, можно использовать https://colab.research.google.com/ который работает с любого утюга.
Настройка Manytask
Инструкция настройки системы сдачи задач
Если возникают вопросы, попробуйте сначала воспользоваться поиском в интернете, потом поиском по чату (возможно ваш вопрос уже задавали), в ином случае задавайте его в чат (или пишите ассистентам). На второй лекции мы разбирали как надо задавать вопросы, просмотрите, пожалуйста, слайды и прочитайте статейки по ссылкам в слайдах;
Интерфейс Manytask
Лекции
Лекция 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 слайды
Лекция 4. Словари. Data model
04.02 слайды примеры к лекции
Лекция 5. Представление данных в компьютере.
11.02 слайды
- text, encoding, unicode
- str vs bytes
- file IO
Лекция 6. Функции 1
19.02 слайды
Лекция 7. Функции 2
Элементы функционального стиля в Python 25.02 слайды
Лекция 8. Обработка ошибок
04.03 слайды
Лекция 9. Итераторы и генераторы
11.03 слайды см первые 2 части.
практика https://colab.research.google.com/drive/1ZjaD2LfPksqOYxnqD_60OeFUJ1xQCies
больше про itertools https://compscicenter.ru/courses/python/2018-autumn/classes/4299/
Лекция 10. Проектирование, тестирование, стиль
https://docs.google.com/presentation/d/1FzLRs0jzOOHLTlRbID9hQPOZJT2ZUQb4m3hNdaI4RtE/edit?usp=sharing
Лекция 11. Введение в сетевые технологии
1.04 слайды
Лекция 12. Web
8.04 слайды
Лекция 13. Web API, Facebook Messenger API
15.04 презентация сломана, все примеры на доске рисовались
Лекция 14. Архитектура web-сервиса.
22.04 Архитектура web-сервиса на примере Авито. Как решать 2-ую домашку.
Лекция 15. Concurrency and parallelism
29.04 multiprocessing, threading, asyncio
https://realpython.com/python-concurrency/
https://github.com/yandexdataschool/python_public/blob/master/slides/9s.Asyncrony.ipynb
https://docs.python.org/3/library/concurrent.futures.html#module-concurrent.futures
Лекция 16. Введение в анализ данных.
13.05 numpy, pandas, matplotlib презентации https://drive.google.com/file/d/1bDenUb8aO1wDJp7xDiaWgEhClYNPc9K-/view?usp=sharing
Лекция 17. Введение в анализ данных - 2.
20.05 https://github.com/wesm/pydata-book
Программа курса - примерное содержание занятий
- Структуры данных.
Структуры данных и коллекции Python, сложность вычислений по времени и памяти. Сравнение коллекций. Асимптотика. O-символика. Структуры данных numpy, pandas Однопроходный алгоритм. Генератор списка, словаря, множества. Бинарный поиск и его сложность. Сортировки. Оценка сложности. Хеш-таблицы. Стек, очередь, правильная скобочная последовательность. Бинарный поиск.
- Строки, кодировки, Unicode.
Представление строк. Конкатенация. Быстрый поиск подстрок. Длина строки. Кодировки. Работа с файлами.
- Функции.
Входные и выходные параметры. Позиционные и именованные аргументы. Лямбда-функции. Декораторы. Модуль functools
- ООП.
Цели и задачи ООП. Классы, атрибуты, методы. Объектная модель Python. Паттерны проектирования
- Обработка ошибок.
Исключения. Обработка ошибок. Менеджеры контекста.
- Дизайн приложений и библиотек. Промышленное программирование.
Распространение кода на Python: wheel, egg. Пакетные менеджеры. Дизайн программы. Стиль кода. Документация и тестирование
- Регулярные выражения.
- Стандартная библиотека языка Python.
- Анализ данных на Python.
Matplotlib, Numpy, Pandas, Scipy. Описательные статистики. Гистограммы. Ящики с усами. Ядерные оценки плотности.
- Web-технологии.
HTTP, клиент-сервер, REST. requests, telegram-боты
- Итераторы, последовательности, генераторы.
- Обзор всего пройденного на курсе.
Семинары
Семинары 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
Семинар 4. Алгоритмы хеширования
Семинар 5. type hints
Семинар 6. Конечные автоматы
слайды https://colab.research.google.com/drive/1P9mgjZ-Le_-5AhV1Fov8zNskTQX0LCG8
Семинар 7. Регулярные выражения
Семинар 8. Тесты
Семинар 13.
примеры с семинара Димы: https://github.com/miguelgrinberg/flasky/tree/4c https://github.com/miguelgrinberg/flasky/tree/14a
(если вам тяжеловато, то лучше начать с самых простых примеров, например, https://github.com/miguelgrinberg/flasky/blob/2a/hello.py https://github.com/miguelgrinberg/flasky/blob/2b/hello.py
книжка https://flaskbook.com/# — есть ссылки на видосы обучающие, если вы любите такой формат.
Семинар 16
Задание https://drive.google.com/file/d/1I8rU8h3ODF7jfB2arXcrzI0NCgCgXBwN/view?usp=sharing
Домашние задания
Каждую неделю необходимо сдавать практические задания в Manytask
ДЗ №1
Ссылка на задание Дедлайн: 02.04 23:59
ДЗ №2
https://gitlab.com/appleveronika/hse-programming-intro/tree/master/hw2_bot
ДЗ №3
https://gitlab.com/appleveronika/hse-programming-intro/tree/master/hw3_luck
https://gitlab.com/appleveronika/hse-programming-intro/tree/master/hw3_plummet
https://gitlab.com/appleveronika/hse-programming-intro/tree/master/hw3_pump_and_dump
https://gitlab.com/appleveronika/hse-programming-intro/tree/master/hw3_roi
Новости курса
31.05 курс закончен, оценки проставлены, больше занятий не будет! по вопросам пересдачи неудов пишите Веронике Иванниковой в телеграм: чтобы зачесть курс, вам надо прорешать все домашние задания, залить в систему (генератор текстов, фейсбук-бот, задания на pandas) и написать Веронике Иванниковой об этом. по правилам университета вы можете досдавать курс до 27 июня.
27.04 экзамен будет 27 мая, время с 12 до 14. экзамен будет в форме контеста
22.01 Консультация по настройке окружения и системы состоится 23 января 2 парой (10:30 - 11:50) в аудитории 318.
14.01 Семинар Димы Контурова перенесён на понедельник, после лекции, в аудитории 318. На этой неделе семинар состоится в среду, 16 января, в дисплейном классе 318.
Полезные материалы
Основная литература
- Н.А.Ворожцов, А.В.Винокуров, 2008. Практика и теория программирования. Физматкнига
- Документация языка Python https://docs.python.org/3/
- Б.У. Керниган, Р. Пайк , 2017. Практика программирования. Вильямс
- Micha Gorelick, Ian Ozsvald, 2014. High Performance Python
- Лучано Рамальо, 2016. Python. К вершинам мастерства