Разница между страницами «Дискретная математика для лингвистов» и «Программирование для дата-журналистики»

Материалы по математике, 2017-18 учебный год
(Различия между страницами)
Перейти к навигации Перейти к поиску
 
 
Строка 1: Строка 1:
На этой странице будут появляться различные материалы и объявления, связанные с курсом '''«Дискретная математика для лингвистов»''', читаемого для студентов 1-го курса отделения лингвистики в '''2017/2018''' учебном году.
+
Это страничка курсов «Введение в программирование» и «Программирование» на магистерской программе «Журналистика данных».
  
* Авторы курса: И.А. Хованская, Ю.Г.Кудряшов, А.В. Михайлович, И.В.Щуров
+
Автор курса: Щуров И.В.
  
* Лекции читает: Михайлович Анна Витальевна.
+
==Софт==
 +
Мы используем Python 3 и оболочку Jupyter (ранее известный как IPython Notebook). Чтобы их установить, проще всего скачать пакет [http://continuum.io/downloads Anaconda]. Обратите внимание: вам нужна версия с Python 3.x.
  
* Семинары ведут: А.В. Михайлович (anna@mikhaylovich.com)
+
После установки Anaconda у вас появится:
  
* Учебный ассистент: Арсений Браславский (abraslavskij@nes.ru)
+
* Под Windows: в меню «Пуск» пункт «Anaconda», в нём подпункт «IPython Notebook».
  
= Материалы =
+
* Под Mac OS X: приложение Anaconda Launcher, в нём пункт ipython-notebook.
  
{|class='wikitable'
+
После запуска IPython Notebook у вас откроется окно браузера (и лучше пусть это будет не Internet Explorer, под ним IPython Notebook работает с некоторым скриптом, а иногда не работает) со списком файлов. В нём надо выбрать New → Python 3. Откроется новая вкладка браузера, в ней будет запущен пустой notebook, состоящий из отдельных ячеек (cells). В ячейку с кодом можно вписать код и нажать Shift+Enter — он выполнится и вам покажут тут же результат.
!лекция
 
!тема
 
!материал
 
!задачи
 
|-
 
|1
 
|Метод математической индукции
 
|Р. Курант, Г. Роббинс [http://ilib.mccme.ru/pdf/kurant.pdf Что такое математика. стр. 34-41, 43-45]
 
  
А. Шень [http://www.mccme.ru/free-books/shen/shen-induction.pdf Математическая индукция]
+
==Материалы==
|[http://math-hse.info/a/2017-18/ling-dm/seminars/seminar_1_induction.pdf Семинары 1, 2 (9 и 13 сентября 2017 г.)]
+
===Как использовать===
|-
+
Мы выкладываем материалы курса в виде ipynb-файлов. По ссылкам выше вы можете просмотреть эти файлы. Если вы хотите открыть этот файл у себя, то вам необходимо скачать его (нажав на иконку в правом верхнем углу страницы с лекцией) и положить в каталог, из которого Jupyter открывает ноутбуки: например, воспользовавшись кнопкой Upload в самом Jupyter (на экране со списком файлов). Также этот каталог можно найти по строчке <code>Serving notebooks from local directory: /home/user/IPython</code>, появляющейся в чёрненьком окошке при запуске Jupyter; здесь <code>/home/user/IPython</code> — искомый путь.
|2
 
|Введение в теорию множеств
 
|[http://www.mccme.ru/free-books/shen/shen-logic-part1.pdf Н.К. Верещагин, А. Шень. Начала теории множеств. Раздел 1.1, стр. 6-21.]
 
  
И.А. Лавров. Математическа логика. стр. 16-26, стр. 56-63.
+
===Основы программирования===
 +
{| class="wikitable"
 +
!  неделя
 +
!  тема
 +
!  конспект
 +
!  доп. материалы
 +
!  видео
 +
!  задачи
  
[http://math-hse.info/a/2017-18/ling-dm/lectures/lecture2_sets_operations.pdf Ещё немного о множествах]
+
|-
 +
|  1<br>
 +
|  Первое знакомство.<br>
 +
[http://python.math-hse.info:8080/github/ischurov/pythonhse/blob/master/Lecture%201.ipynb ipynb]<br>
 +
|  PT: [http://pythontutor.ru/lessons/inout_and_arithmetic_operations/ арифметические операции], [http://pythontutor.ru/lessons/int_and_float/ целые и вещественные числа]<br>
 +
|  [http://www.youtube.com/watch?v=5Y5tKPKhurA видео]<br>
 +
|  [http://nbviewer.ipython.org/url/python.math-hse.info/static/assignments_release/dj2017/ps01/ps01.ipynb ps01]<br>
 +
|-
 +
|  2<br>
 +
|  Списки и цикл <code>for</code>.<br>
 +
|  [http://python.math-hse.info:8080/github/ischurov/pythonhse/blob/master/Lecture%202.ipynb ipynb]<br>
 +
|  PT: [http://pythontutor.ru/lessons/for_loop/ цикл for], [http://pythontutor.ru/lessons/lists/ списки]<br>
 +
|  [https://www.youtube.com/watch?v=kBu3g-ITjY4 видео]<br>
 +
|  [http://nbviewer.ipython.org/url/python.math-hse.info/static/assignments_release/dj2017/ps02/ps02.ipynb ps02]<br>
 +
|-
 +
|  3<br>
 +
Ещё о списках и циклах<br>
 +
|  [http://python.math-hse.info:8080/github/ischurov/djprog2017/blob/master/lecture03.ipynb ipynb]<br>
 +
| <br>
 +
| <br>
 +
|  [http://nbviewer.ipython.org/url/python.math-hse.info/static/assignments_release/dj2017/ps03/ps03.ipynb ps03]<br>
 +
|-
 +
|  4<br>
 +
|  Конструкция <code>if</code> и проверка условий. Списковые включения.<br>
 +
|  [http://python.math-hse.info:8080/github/ischurov/pythonhse/blob/master/Lecture%203.ipynb#%D0%9F%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B0-%D1%83%D1%81%D0%BB%D0%BE%D0%B2%D0%B8%D0%B9 проверка условий] [http://python.math-hse.info:8080/github/ischurov/pythonhse/blob/master/Lecture%205.ipynb#Списковые-включения-(list-comprehensions) list comprehensions]<br>
 +
|  PT: [http://pythontutor.ru/lessons/lists/#section_2 split и join], [http://pythontutor.ru/lessons/ifelse/ if], [http://pythontutor.ru/lessons/while/ while]<br>
 +
|  [http://www.youtube.com/watch?v=uzgaCV8KZA0 видео]<br>
 +
|  [http://nbviewer.ipython.org/url/python.math-hse.info/static/assignments_release/dj2017/ps04/ps04.ipynb ps04]<br>
 +
|-
 +
|  5<br>
 +
|  Функции<br>
 +
|  [http://python.math-hse.info:8080/github/ischurov/pythonhse/blob/master/Lecture%204.ipynb ipynb]<br>
 +
|  PT: [http://pythontutor.ru/lessons/functions/ функции]<br>
 +
|  [http://www.youtube.com/watch?v=NYrYSFyCg4w видео]<br>
 +
|  [http://nbviewer.jupyter.org/url/python.math-hse.info/static/assignments_release/dj2017/ps05/ps05.ipynb ps05]<br>
 +
|-
 +
|  6<br>
 +
|  Словари<br>
 +
|  [http://python.math-hse.info:8080/github/ischurov/pythonhse/blob/master/Lecture%205.ipynb ipynb]<br>
 +
|  PT [http://pythontutor.ru/lessons/dicts словари]<br>
 +
|  [http://www.youtube.com/watch?v=z8bu_b5BboI видео]<br>
 +
|  [http://nbviewer.jupyter.org/url/python.math-hse.info/static/assignments_release/dj2017/ps06/ps06.ipynb ps06]<br>
 +
|}
 +
===Программирование: Python===
 +
{| class="wikitable"
 +
!  неделя
 +
!  тема
 +
!  конспект
 +
!  доп. материалы
 +
!  задачи
  
|[http://math-hse.info/a/2017-18/ling-dm/seminars/seminar_2_sets.pdf Семинар 2, 3 (13 и 16 сентября 2017 г.)]
 
 
|-
 
|-
|3
+
| 7<br>
|Комбинаторика
+
| Обсуждение задач экзамена. Сортировка<br>
|[http://math-hse.info/a/2017-18/ling-dm/lectures/lecture3_comb1.pdf Начала комбинаторики]
+
| [http://python.math-hse.info:8080/github/ischurov/pythonhse/blob/master/Lecture%206.ipynb#Сортировка ipynb]<br>
 
+
|  [https://docs.python.org/3/howto/sorting.html О сортировке] (англ.)<br>
 
+
| [http://nbviewer.ipython.org/url/python.math-hse.info/static/assignments_release/dj2017/ps07/ps07.ipynb ps07]<br>
|[http://math-hse.info/a/2017-18/ling-dm/seminars/seminar_3_comb1.pdf Семинары 3, 4 (16 и 20 сентября 2017 г.)]
+
|-
 
+
|  8<br>
[http://math-hse.info/a/2017-18/ling-dm/seminars/seminar_4_comb2.pdf Семинары 4, 5 (20 и 23 сентября 2017 г.)]
+
|  Особенности работы с изменяемыми типами данных: <code>copy</code> и <code>deepcopy</code>. Файловый ввод-вывод<br>
 
+
[http://python.math-hse.info:8080/github/ischurov/pythonhse/blob/master/Lecture%207.ipynb ipynb]<br>
[http://math-hse.info/a/2017-18/ling-dm/seminars/seminar_5_comb3.pdf Семинары 5, 6 (23 и 27 сентября 2017 г.)]
+
|  [https://docs.python.org/3/tutorial/inputoutput.html Ввод-вывод в Python 3] (англ.), [https://www.youtube.com/watch?v=KaWGNPgUOHo видео]<br>
 +
[http://nbviewer.ipython.org/url/python.math-hse.info/static/assignments_release/dj2017/ps08/ps08.ipynb ps08]<br>
 
|-
 
|-
|4
+
| 9<br>
|Теория вероятностей
+
| Форматирование строк. Хитрости с вещественными числами. Исключения.<br>
| смотрите материалы 2011-12 учебного года (ссылка в правом верхнем углу)
+
| [http://python.math-hse.info:8080/github/ischurov/dj-prog/blob/master/Lesson%203.ipynb#Исключения Исключения]<br>
 
+
| [https://pyformat.info Шпаргалка по форматированию строк] (англ., не обсуждаются f-strings)<br>
[http://math-hse.info/a/2017-18/ling-dm/lectures/tv_example.pdf Задача про преподавателя]
+
[http://nbviewer.ipython.org/url/python.math-hse.info/static/assignments_release/dj2017/ps09/ps09.ipynb ps09]<br>
|[http://math-hse.info/a/2017-18/ling-dm/seminars/seminar_6_tv1.pdf Семинар 6, 7 (27 и 30 сентября 2017 г.)]
 
 
 
[http://math-hse.info/a/2017-18/ling-dm/seminars/seminar_8_tv2.pdf Семинар 8 (4 октября 2017 г.)]
 
 
 
[http://math-hse.info/a/2017-18/ling-dm/seminars/seminar_9_tv3.pdf Семинар 9 (7 октября 2017 г.)]
 
 
|-
 
|-
|5
+
| 10<br>
|Элементы математической логики
+
| Функции как способ структурирования программы<br>
|[http://math-hse.info/f/2015-16/ling-dm2/pages%20from%20lectures/boolean1.pdf см. с 9, 10, 13-15]
+
| [http://python.math-hse.info:8080/github/ischurov/djprog2017/blob/master/process-elections.ipynb Задачи]<br>
 
+
[http://python.math-hse.info:8080/github/ischurov/dj-prog/blob/master/Lesson%202.ipynb Конспект семинара прошлого года]<br>
[http://math-hse.info/f/2015-16/ling-dm2/pages%20from%20lectures/mathlog.pdf см. с 145, 146, 172-174, 177(примеры)]
+
| [http://nbviewer.ipython.org/url/python.math-hse.info/static/assignments_release/dj2017/ps10/ps10.ipynb ps10]<br>
|[http://math-hse.info/a/2017-18/ling-dm/seminars/seminar_10_log1.pdf Семинары 10, 11, 12 (11, 14, 18 октября 2017 г.)]
 
 
|-
 
|-
|6
+
| 11<br>
|Системы счисления. Делимость. Деление с остатком. Алгоритм Евклида. НОД.
+
| JSON API<br>
|[http://math-hse.info/a/2017-18/ling-dm/lectures/nod_polynom.pdf Нахождение НОД для многочленов (пример)]
+
| [http://python.math-hse.info:8080/github/ischurov/pythonhse/blob/master/Lecture%2010.ipynb Лекции]<br>
|[http://math-hse.info/a/2017-18/ling-dm/seminars/seminar_12_div1.pdf Семинар 12 (18 октября 2017 г.)]
+
| <br>
 +
| [http://nbviewer.ipython.org/url/python.math-hse.info/static/assignments_release/dj2017/ps11/ps11.ipynb ps11]<br>
 
|-
 
|-
|7
+
| 12<br>
|Графы.
+
| Классы и объектно-ориентированное программирование<br>
|[http://math-hse.info/a/2017-18/ling-dm/lectures/lecture_graph1.pdf Графы-1]
+
| <br>
 
+
| [https://docs.python.org/3/tutorial/classes.html Официальная документация]<br>
[http://math-hse.info/a/2017-18/ling-dm/lectures/lecture_graph2.pdf Графы-2]
+
| [http://nbviewer.ipython.org/url/python.math-hse.info/static/assignments_release/dj2017/ps12/ps12.ipynb ps12]<br>
|[http://math-hse.info/a/2017-18/ling-dm/seminars/seminar_14_gr1.pdf Семинар 14, 15 (1, 8 ноября 2017 г.)]
 
 
 
[http://math-hse.info/a/2017-18/ling-dm/seminars/seminar_17_gr2.pdf Семинар 16 (11 ноября 2017 г.)]
 
 
 
[http://math-hse.info/a/2017-18/ling-dm/seminars/seminar_20_gr3.pdf Семинар 19 (22 ноября 2017 г.)]
 
 
 
 
|-
 
|-
|8
+
| 13-14<br>
|Регулярные языки и автоматы
+
| Веб-скреппинг<br>
|[http://math-hse.info/a/2017-18/ling-dm/lectures/lecture_languages.pdf Регулярные языки и автоматы]
+
| [http://python.math-hse.info:8080/github/ischurov/pythonhse/blob/master/Lecture%208.ipynb базовый скреппинг], [http://python.math-hse.info:8080/github/ischurov/pythonhse/blob/master/Lecture%2010.ipynb robobrowser и selenium]<br>
|[http://math-hse.info/a/2017-18/ling-dm/seminars/seminar_22_lang.pdf Семинар 22 (29 ноября 2017 г.)]
+
|  Оригинальная документация (англ.): [http://docs.python-requests.org/en/latest/ requests] [http://www.crummy.com/software/BeautifulSoup/bs4/doc/ BeautifulSoup], [http://www.youtube.com/watch?v=3nPksaHTMGI видео], [http://robobrowser.readthedocs.org/en/latest/ RoboBrowser], [http://selenium-python.readthedocs.org/ неофициальная документация] по Python-Selenium (её проще читать, чем официальную), [http://www.youtube.com/watch?v=tC618tbA5Yk видео]<br>
 
+
| <br>
[http://math-hse.info/a/2017-18/ling-dm/seminars/seminar_23_lang2.pdf Семинар 23 (2 декабря 2017 г.)]
 
 
 
[http://math-hse.info/a/2017-18/ling-dm/seminars/seminar_24_lang3.pdf Семинар 25 (9 декабря 2017 г.)]
 
 
|-
 
|-
|9
+
| 15<br>
|Теория информации и кодирование
+
| Генераторы. Наследование.<br>
|
+
| <br>
|[http://math-hse.info/a/2017-18/ling-dm/seminars/seminar_26_info.pdf Семинар 26 (13 декабря 2017 г.)]
+
| <br>
 
+
| [http://nbviewer.ipython.org/url/python.math-hse.info/static/assignments_release/dj2017/ps13/ps13.ipynb ps13]<br>
[http://math-hse.info/a/2017-18/ling-dm/seminars/seminar_27_koding.pdf Семинар 27 (16 декабря 2017 г.)]
 
 
|}
 
|}
 +
===JavaScript===
 +
* [https://ischurov.github.io/pythonvjs/ Python.v.JS]: сравнение Python и JavaScript.
  
 +
* [http://python.math-hse.info:8080/github/ischurov/dj-prog/blob/master/javascript.ipynb Сырой конспект первого занятия]
  
 +
* [http://learn.javascript.ru learn.javascript.ru]: хороший электронный учебник.
  
 +
* [https://github.com/getify/You-Dont-Know-JS You Don't Know JavaScript]: серия книг для тех, кто хочет разобраться, как оно действительно там всё устроено.
  
== Домашние задания ==
+
* [http://jsbin.com/tejaqev/ коровы и быки]
 
 
{|class='wikitable'
 
!дата выдачи
 
!срок сдачи
 
!задание
 
!комментарии
 
|-
 
|26.09.2017
 
|3.10.2017
 
|[http://math-info.hse.ru/f/2017-18/ling-dm/hw/hw1_comb Домашнее задание 1 (комбинаторика)]
 
|
 
|-
 
|20.10.2017
 
|3.11.2017
 
|[http://math-info.hse.ru/f/2017-18/ling-dm/hw/hw2_log_tv Домашнее задание 2 (теория вероятностей, математическая логика, делимость)]
 
|
 
|-
 
|11.12.2017
 
|18.12.2017
 
|[http://math-info.hse.ru/f/2017-18/ling-dm/hw/hw3_graph_automata Домашнее задание 3 (графы, автоматы, языки, кодирование)]
 
| не более трёх задач можно сдать позже - до 21.12.2017.
 
|}
 
  
== Другое ==
+
* [https://jsbin.com/dakuman/ пример с plotly]
 +
**
 +
**  [http://math-info.hse.ru/2017-18/%D0%9F%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%D0%B5_%D0%B4%D0%BB%D1%8F_%D0%B4%D0%B0%D1%82%D0%B0-%D0%B6%D1%83%D1%80%D0%BD%D0%B0%D0%BB%D0%B8%D1%81%D1%82%D0%B8%D0%BA%D0%B8/%D0%94%D0%97_%E2%84%9615 ДЗ №15]
  
[http://math-hse.info/a/2017-18/ling-dm/seminars/cw1_1.pdf Закрепление тем первой контрольной]
+
===Итоговый проект===
 +
* [http://math-info.hse.ru/2017-18/%D0%9F%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%D0%B5_%D0%B4%D0%BB%D1%8F_%D0%B4%D0%B0%D1%82%D0%B0-%D0%B6%D1%83%D1%80%D0%BD%D0%B0%D0%BB%D0%B8%D1%81%D1%82%D0%B8%D0%BA%D0%B8/%D0%98%D1%82%D0%BE%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82 Итоговый проект]

Текущая версия на 14:11, 8 февраля 2020

Это страничка курсов «Введение в программирование» и «Программирование» на магистерской программе «Журналистика данных».

Автор курса: Щуров И.В.

Софт

Мы используем Python 3 и оболочку Jupyter (ранее известный как IPython Notebook). Чтобы их установить, проще всего скачать пакет Anaconda. Обратите внимание: вам нужна версия с Python 3.x.

После установки Anaconda у вас появится:

  • Под Windows: в меню «Пуск» пункт «Anaconda», в нём подпункт «IPython Notebook».
  • Под Mac OS X: приложение Anaconda Launcher, в нём пункт ipython-notebook.

После запуска IPython Notebook у вас откроется окно браузера (и лучше пусть это будет не Internet Explorer, под ним IPython Notebook работает с некоторым скриптом, а иногда не работает) со списком файлов. В нём надо выбрать New → Python 3. Откроется новая вкладка браузера, в ней будет запущен пустой notebook, состоящий из отдельных ячеек (cells). В ячейку с кодом можно вписать код и нажать Shift+Enter — он выполнится и вам покажут тут же результат.

Материалы

Как использовать

Мы выкладываем материалы курса в виде ipynb-файлов. По ссылкам выше вы можете просмотреть эти файлы. Если вы хотите открыть этот файл у себя, то вам необходимо скачать его (нажав на иконку в правом верхнем углу страницы с лекцией) и положить в каталог, из которого Jupyter открывает ноутбуки: например, воспользовавшись кнопкой Upload в самом Jupyter (на экране со списком файлов). Также этот каталог можно найти по строчке Serving notebooks from local directory: /home/user/IPython, появляющейся в чёрненьком окошке при запуске Jupyter; здесь /home/user/IPython — искомый путь.

Основы программирования

неделя тема конспект доп. материалы видео задачи
1
Первое знакомство.
ipynb
PT: арифметические операции, целые и вещественные числа
видео
ps01
2
Списки и цикл for.
ipynb
PT: цикл for, списки
видео
ps02
3
Ещё о списках и циклах
ipynb


ps03
4
Конструкция if и проверка условий. Списковые включения.
проверка условий list comprehensions
PT: split и join, if, while
видео
ps04
5
Функции
ipynb
PT: функции
видео
ps05
6
Словари
ipynb
PT словари
видео
ps06

Программирование: Python

неделя тема конспект доп. материалы задачи
7
Обсуждение задач экзамена. Сортировка
ipynb
О сортировке (англ.)
ps07
8
Особенности работы с изменяемыми типами данных: copy и deepcopy. Файловый ввод-вывод
ipynb
Ввод-вывод в Python 3 (англ.), видео
ps08
9
Форматирование строк. Хитрости с вещественными числами. Исключения.
Исключения
Шпаргалка по форматированию строк (англ., не обсуждаются f-strings)
ps09
10
Функции как способ структурирования программы
Задачи
Конспект семинара прошлого года
ps10
11
JSON API
Лекции

ps11
12
Классы и объектно-ориентированное программирование

Официальная документация
ps12
13-14
Веб-скреппинг
базовый скреппинг, robobrowser и selenium
Оригинальная документация (англ.): requests BeautifulSoup, видео, RoboBrowser, неофициальная документация по Python-Selenium (её проще читать, чем официальную), видео

15
Генераторы. Наследование.


ps13

JavaScript

  • You Don't Know JavaScript: серия книг для тех, кто хочет разобраться, как оно действительно там всё устроено.

Итоговый проект