Основы программирования на Python весна 2019 матфак — различия между версиями

Материал из Wiki - Факультет компьютерных наук
Перейти к: навигация, поиск
м (Лекции)
 
(не показано 96 промежуточных версии 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 модулях.
  
'''Лектор:''' Иванникова Вероника
+
На курсе есть лекции и семинары.
  
Лекции проходят по понедельникам, 9:00 - 10:20, в аудитории 318.
 
  
 +
'''Лектор:''' [https://t-do.ru/apple_veronika Иванникова Вероника]
 +
 +
Лекции проходят по понедельникам, 9:00 - 10:20, в аудитории 318.
  
 +
=== Пререквизиты курса ===
 +
От слушателей курса ожидается:
 +
* базовое знание Python (условия, циклы, функции, классы)
 +
* готовность работать в терминале и преодолевать трудности
 +
* знакомство с базовым математическим аппаратом (например, основы статистики, линейная алгебра и проч.)
  
=== Полезные ссылки ===
+
=== Необходимые ссылки ===
* [https://t.me/joinchat/CDE3klfPVaA00iAaLrA25Q Чат курса в телеграме]
+
* [https://goo.gl/forms/orSBJ6Rih0f1a9na2 Обратная связь]
* [https://gitlab.com/appleveronika/hse-programming-intro Репозиторий с заданиями]
+
* [https://hse-programming-intro.manytask.org/ Система сдачи заданий]
+
 
* [https://www.hse.ru/ma/pmath/courses/221310207.html Карточка курса и программа]
 
* [https://www.hse.ru/ma/pmath/courses/221310207.html Карточка курса и программа]
  
Строка 24: Строка 34:
 
! Группа !! Преподаватель !! Учебный ассистент !! Расписание  
 
! Группа !! Преподаватель !! Учебный ассистент !! Расписание  
 
|-
 
|-
| 1 || Андрей Кудинов  || Мовсес Элбакян || вторник, 15:10 - 16:30, ауд. 318  
+
| 1 || [https://t-do.ru/AndreyLogic Андрей Кудинов] || [https://t-do.ru/sesvom Мовсес Элбакян] || вторник, 15:30 - 16:50, ауд. 318  
 
|-
 
|-
| 2 || Дмитрий Контуров  || [https://t-do.ru/svdcvt Соня Дымченко] || понедельник, 10:30 - 11:50, ауд. 318
+
| 2 || [https://t-do.ru/Kipnell Дмитрий Контуров] || [https://t-do.ru/svdcvt Соня Дымченко] || понедельник, 10:30 - 11:50, ауд. 318
 
|-
 
|-
 
|}
 
|}
  
=== Система оценок ===
+
=== Формула оценки ===
==== Формула оценки ====
+
 
Результирующая оценка по дисциплине рассчитывается по формуле:
 
Результирующая оценка по дисциплине рассчитывается по формуле:
  
Строка 38: Строка 47:
 
Накопленная оценка рассчитывается как сумма баллов за все практические задания, переведённая в шкалу от 0 до 10.
 
Накопленная оценка рассчитывается как сумма баллов за все практические задания, переведённая в шкалу от 0 до 10.
  
{| role="presentation" class="wikitable mw-collapsible mw-collapsed"
+
Экзамен сдаётся в форме контеста в той же системе, что и обычные задания.
| <strong>Подробнее</strong>
+
|-
+
|
+
  
==== Правила вычисления оценок ====
+
== Настройка системы для сдачи практических заданий ==
Оценка за практику вычисляется как сумма баллов по всем семинарским работам, переведенная в 10 бальную шкалу. Оценка за домашнюю работу — как сумма баллов по всем домашним заданиям, переведенная в 10 бальную шкалу. Количество баллов за разные задания может различаться в зависимости от их сложности. Все промежуточные оценки (за домашние, практику и экзамен) могут быть не целыми. Накопленная и итоговая оценки округляются математически.
+
Все задания сдаются в специальную систему сдачи заданий Manytask со своего компьютера, можно из дома.
 +
Нужно настроить свой компьютер, и для этого придётся использовать терминал.  
  
==== Правила сдачи заданий ====
+
=== Операционная система и терминал ===
Дедлайны по всем домашним заданиям являются жёсткими, то есть после срока работы не принимаются.
+
Для пользователей MacOs и других Unix/Linux-систем терминал уже предустановлен, для пользователей Windows 10 надо поставить Ubuntu-терминал, для пользователей прочих Windows надо поставить виртуальную машину с Ubuntu.
  
Домашнее задание выполняется самостоятельно. Часть заданий будет проверяться автоматически, часть - вручную. При попытке сдать хотя бы частично списанный код (текст), или код (текст), полученный в результате совместного решения задач, вся работа будет оценена на 0 баллов. При обнаружении плагиата оценки за домашнее задание или практику обнуляются всем задействованным в списывании студентам, а также подаётся докладная записка в деканат.
+
[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).  
+
===Лекция 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. Память, процессор. Использование библиотек.
  
[https://docs.google.com/presentation/d/14TzgxrIy0S8zdIuLsCzCHGa-V_x4T3MmbSffVT9GKjU/edit?usp=sharing слайды]
+
===Лекция 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
 +
 
 +
== Программа курса - примерное содержание занятий==
  
'''Лекция 2-3''' (21.01/28.01). Структуры данных.
+
* Структуры данных.
  
 
Структуры данных и коллекции Python, сложность вычислений по времени и памяти. Сравнение коллекций. Асимптотика. O-символика. Структуры данных numpy, pandas
 
Структуры данных и коллекции Python, сложность вычислений по времени и памяти. Сравнение коллекций. Асимптотика. O-символика. Структуры данных numpy, pandas
Строка 68: Строка 194:
 
Стек, очередь, правильная скобочная последовательность. Бинарный поиск.
 
Стек, очередь, правильная скобочная последовательность. Бинарный поиск.
  
'''Лекция 4''' (4.02). Строки, кодировки, Unicode.  
+
* Строки, кодировки, Unicode.  
  
 
Представление строк. Конкатенация. Быстрый поиск подстрок. Длина строки. Кодировки.  
 
Представление строк. Конкатенация. Быстрый поиск подстрок. Длина строки. Кодировки.  
 
Работа с файлами.
 
Работа с файлами.
  
'''Лекция 5''' (11.02). Функции.
+
* Функции.
  
 
Входные и выходные параметры. Позиционные и именованные аргументы. Лямбда-функции.
 
Входные и выходные параметры. Позиционные и именованные аргументы. Лямбда-функции.
Строка 79: Строка 205:
 
Модуль functools
 
Модуль functools
  
'''Лекция 6-7''' (18.02 /25.02). ООП.
+
* ООП.
 
Цели и задачи ООП. Классы, атрибуты, методы. Объектная модель Python. Паттерны проектирования
 
Цели и задачи ООП. Классы, атрибуты, методы. Объектная модель Python. Паттерны проектирования
  
'''Лекция 8''' (4.03). Обработка ошибок.
+
* Обработка ошибок.
 
Исключения. Обработка ошибок. Менеджеры контекста.
 
Исключения. Обработка ошибок. Менеджеры контекста.
  
'''Лекция 9''' (11.03). Дизайн приложений и библиотек. Промышленное программирование.
+
* Дизайн приложений и библиотек. Промышленное программирование.
  
 
Распространение кода на Python: wheel, egg. Пакетные менеджеры.
 
Распространение кода на Python: wheel, egg. Пакетные менеджеры.
Строка 91: Строка 217:
 
Документация и тестирование
 
Документация и тестирование
  
'''Лекция 10''' (18.03). Регулярные выражения.  
+
* Регулярные выражения.  
  
'''Лекция 11''' (25.03). Стандартная библиотека языка Python.
+
* Стандартная библиотека языка Python.
 
   
 
   
'''Лекция 12-14''' (1.04/8.04/15.04). Анализ данных на Python.
+
* Анализ данных на Python.
  
 
Matplotlib, Numpy, Pandas, Scipy.
 
Matplotlib, Numpy, Pandas, Scipy.
 
Описательные статистики. Гистограммы. Ящики с усами. Ядерные оценки плотности.
 
Описательные статистики. Гистограммы. Ящики с усами. Ядерные оценки плотности.
  
'''Лекция 15-16''' (22.04/29.04). Web-технологии.
+
* Web-технологии.
  
 
HTTP, клиент-сервер, REST. requests, telegram-боты
 
HTTP, клиент-сервер, REST. requests, telegram-боты
  
'''Лекция 17''' (13.05). Итераторы, последовательности, генераторы.
+
* Итераторы, последовательности, генераторы.
  
'''Лекция 18''' (20.05). Обзор всего пройденного на курсе.
+
* Обзор всего пройденного на курсе.
  
 
== Семинары ==
 
== Семинары ==
  
====Семинары 1-2====
+
===Семинары 1-2. Основные инструменты ===
  
 
Note! Очень желательно принести с собой ноутбук,  
 
Note! Очень желательно принести с собой ноутбук,  
Строка 153: Строка 279:
 
архив https://yadi.sk/d/cYJx1a1SLpM0yQ
 
архив 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.
 
14.01 Семинар Димы Контурова перенесён на понедельник, после лекции, в аудитории 318.
 
На этой неделе семинар состоится в среду, 16 января, в дисплейном классе 318.
 
На этой неделе семинар состоится в среду, 16 января, в дисплейном классе 318.
Строка 166: Строка 348:
 
# Документация языка Python https://docs.python.org/3/
 
# Документация языка Python https://docs.python.org/3/
 
# Б.У. Керниган, Р. Пайк , 2017. Практика программирования. Вильямс
 
# Б.У. Керниган, Р. Пайк , 2017. Практика программирования. Вильямс
# Д.Бизли, 2014. Python. Подробный справочник. Символ-плюс
+
# Micha Gorelick, Ian Ozsvald, 2014. High Performance Python
 
+
# Лучано Рамальо, 2016. Python. К вершинам мастерства
=== Полезные ссылки ===
+
# [ ? ]
+
# [ ? ]
+

Текущая версия на 22:15, 10 января 2020

Занятия потока 2020 года начинаются 11 января в субботу, 2 и 3-я пара. На Усачева


Страница курса 2020 года

Содержание

О курсе

borderless


Курс читается для студентов факультета математики ВШЭ в 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

Manytask.png


Лекции

Лекция 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.

Полезные материалы

Основная литература

  1. Н.А.Ворожцов, А.В.Винокуров, 2008. Практика и теория программирования. Физматкнига
  2. Документация языка Python https://docs.python.org/3/
  3. Б.У. Керниган, Р. Пайк , 2017. Практика программирования. Вильямс
  4. Micha Gorelick, Ian Ozsvald, 2014. High Performance Python
  5. Лучано Рамальо, 2016. Python. К вершинам мастерства