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

Материал из Wiki - Факультет компьютерных наук
Перейти к навигации Перейти к поиску
Нет описания правки
Строка 80: Строка 80:




'''Лекция 3-4''' (). Структуры данных.
'''Лекция 3-4''' Структуры данных.


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


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


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


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


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


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


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


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


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


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


'''Лекция 11''' (). Стандартная библиотека языка Python.
'''Лекция 11''' Стандартная библиотека языка Python.
   
   
'''Лекция 12-14''' (). Анализ данных на Python.
'''Лекция 12-14''' Анализ данных на Python.


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


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


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


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


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


== Семинары ==
== Семинары ==

Версия от 13:57, 20 января 2019

О курсе

borderless
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 Работа в терминале.

- чтение ошибок, правильные багрепорты, 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-4 Структуры данных.

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

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

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

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

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

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

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

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

  1. [ ? ]
  2. [ ? ]