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

Материал из Wiki - Факультет компьютерных наук
Перейти к: навигация, поиск
м
м (Лекции)
Строка 62: Строка 62:
 
[https://docs.google.com/presentation/d/14TzgxrIy0S8zdIuLsCzCHGa-V_x4T3MmbSffVT9GKjU/edit?usp=sharing слайды]
 
[https://docs.google.com/presentation/d/14TzgxrIy0S8zdIuLsCzCHGa-V_x4T3MmbSffVT9GKjU/edit?usp=sharing слайды]
  
 
+
'''Лекция 2-3''' (21.01/28.01). Структуры данных.
'''Лекция 2-3''' (XX.01). Структуры данных.
+
  
 
Структуры данных и коллекции Python, сложность вычислений по времени и памяти. Сравнение коллекций. Асимптотика. O-символика. Структуры данных numpy, pandas
 
Структуры данных и коллекции Python, сложность вычислений по времени и памяти. Сравнение коллекций. Асимптотика. O-символика. Структуры данных numpy, pandas
Строка 69: Строка 68:
 
Стек, очередь, правильная скобочная последовательность. Бинарный поиск.
 
Стек, очередь, правильная скобочная последовательность. Бинарный поиск.
  
'''Лекция 4''' (ХХ.02). Строки, кодировки, Unicode.  
+
'''Лекция 4''' (4.02). Строки, кодировки, Unicode.  
  
 
Представление строк. Конкатенация. Быстрый поиск подстрок. Длина строки. Кодировки.  
 
Представление строк. Конкатенация. Быстрый поиск подстрок. Длина строки. Кодировки.  
 
Работа с файлами.
 
Работа с файлами.
  
'''Лекция 5''' (ХХ.02). Функции.
+
'''Лекция 5''' (11.02). Функции.
  
 
Входные и выходные параметры. Позиционные и именованные аргументы. Лямбда-функции.
 
Входные и выходные параметры. Позиционные и именованные аргументы. Лямбда-функции.
Строка 80: Строка 79:
 
Модуль functools
 
Модуль functools
  
'''Лекция 6-7''' (). ООП.
+
'''Лекция 6-7''' (18.02 /25.02). ООП.
 
Цели и задачи ООП. Классы, атрибуты, методы. Объектная модель Python. Паттерны проектирования
 
Цели и задачи ООП. Классы, атрибуты, методы. Объектная модель Python. Паттерны проектирования
  
'''Лекция 8''' (). Обработка ошибок.
+
'''Лекция 8''' (4.03). Обработка ошибок.
 
Исключения. Обработка ошибок. Менеджеры контекста.
 
Исключения. Обработка ошибок. Менеджеры контекста.
  
'''Лекция 9''' (). Дизайн приложений и библиотек. Промышленное программирование.
+
'''Лекция 9''' (11.03). Дизайн приложений и библиотек. Промышленное программирование.
  
 
Распространение кода на Python: wheel, egg. Пакетные менеджеры.
 
Распространение кода на Python: wheel, egg. Пакетные менеджеры.
Строка 92: Строка 91:
 
Документация и тестирование
 
Документация и тестирование
  
'''Лекция 10''' (). Регулярные выражения.  
+
'''Лекция 10''' (18.03). Регулярные выражения.  
  
'''Лекция 11''' (). Стандартная библиотека языка Python.
+
'''Лекция 11''' (25.03). Стандартная библиотека языка Python.
 
   
 
   
'''Лекция 12-14''' (). Анализ данных на Python.
+
'''Лекция 12-14''' (1.04/8.04/15.04). Анализ данных на Python.
  
Mathplotlib, Numpy, Pandas, Scapy.
+
Matplotlib, Numpy, Pandas, Scipy.
 
Описательные статистики. Гистограммы. Ящики с усами. Ядерные оценки плотности.
 
Описательные статистики. Гистограммы. Ящики с усами. Ядерные оценки плотности.
  
'''Лекция 15-16''' (). Web-технологии.
+
'''Лекция 15-16''' (22.04/29.04). Web-технологии.
  
 
HTTP, клиент-сервер, REST. requests, telegram-боты
 
HTTP, клиент-сервер, REST. requests, telegram-боты
  
'''Лекция 17''' (). Итераторы, последовательности, генераторы.
+
'''Лекция 17''' (13.05). Итераторы, последовательности, генераторы.
  
'''Лекция 18''' (). Обзор всего пройденного на курсе.
+
'''Лекция 18''' (20.05). Обзор всего пройденного на курсе.
  
 
== Семинары ==
 
== Семинары ==

Версия 17:29, 19 января 2019

О курсе

borderless


Курс читается для студентов факультета математики ВШЭ в 3-4 модулях.

Лектор: Иванникова Вероника

Лекции проходят по понедельникам, 9:00 - 10:20, в аудитории 318.


Полезные ссылки

Семинары

Группа Преподаватель Учебный ассистент Расписание
1 Андрей Кудинов Мовсес Элбакян вторник, 15:10 - 16:30, ауд. 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-3 (21.01/28.01). Структуры данных.

Структуры данных и коллекции Python, сложность вычислений по времени и памяти. Сравнение коллекций. Асимптотика. O-символика. Структуры данных numpy, pandas Однопроходный алгоритм. Генератор списка, словаря, множества. Бинарный поиск и его сложность. Сортировки. Оценка сложности. Хеш-таблицы. Стек, очередь, правильная скобочная последовательность. Бинарный поиск.

Лекция 4 (4.02). Строки, кодировки, Unicode.

Представление строк. Конкатенация. Быстрый поиск подстрок. Длина строки. Кодировки. Работа с файлами.

Лекция 5 (11.02). Функции.

Входные и выходные параметры. Позиционные и именованные аргументы. Лямбда-функции. Декораторы. Модуль functools

Лекция 6-7 (18.02 /25.02). ООП. Цели и задачи ООП. Классы, атрибуты, методы. Объектная модель Python. Паттерны проектирования

Лекция 8 (4.03). Обработка ошибок. Исключения. Обработка ошибок. Менеджеры контекста.

Лекция 9 (11.03). Дизайн приложений и библиотек. Промышленное программирование.

Распространение кода на Python: wheel, egg. Пакетные менеджеры. Дизайн программы. Стиль кода. Документация и тестирование

Лекция 10 (18.03). Регулярные выражения.

Лекция 11 (25.03). Стандартная библиотека языка Python.

Лекция 12-14 (1.04/8.04/15.04). Анализ данных на Python.

Matplotlib, Numpy, Pandas, Scipy. Описательные статистики. Гистограммы. Ящики с усами. Ядерные оценки плотности.

Лекция 15-16 (22.04/29.04). Web-технологии.

HTTP, клиент-сервер, REST. requests, telegram-боты

Лекция 17 (13.05). Итераторы, последовательности, генераторы.

Лекция 18 (20.05). Обзор всего пройденного на курсе.

Семинары

Семинары 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 пароль от архива спрашивайте у семинаристов и в чате курса

Домашние задания

Новости курса

14.01 Семинар Димы Контурова перенесён на понедельник, после лекции, в аудитории 318. На этой неделе семинар состоится в среду, 16 января, в дисплейном классе 318.

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

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

  1. Н.А.Ворожцов, А.В.Винокуров, 2008. Практика и теория программирования. Физматкнига
  2. Документация языка Python https://docs.python.org/3/
  3. Б.У. Керниган, Р. Пайк , 2017. Практика программирования. Вильямс
  4. Д.Бизли, 2014. Python. Подробный справочник. Символ-плюс

Полезные ссылки

  1. [ ? ]
  2. [ ? ]