Парадигмы осень 2016 — различия между версиями
Krinkin.m (обсуждение | вклад) |
(→Группа 3) |
||
(не показано 67 промежуточных версий 4 участников) | |||
Строка 1: | Строка 1: | ||
+ | == Организационное == | ||
+ | |||
=== Преподаватели === | === Преподаватели === | ||
− | * Андроник Ордиян (<b>andronik.ordian@gmail.com | + | * Андроник Ордиян (<b>[mailto:andronik.ordian@gmail.com andronik.ordian@gmail.com]</b>) |
− | + | * Миша Кринкин (<b>[mailto:krinkin.m.u@gmail.com krinkin.m.u@gmail.com]</b>) | |
− | * Миша Кринкин (<b>krinkin.m.u@gmail.com</b>) | + | * Егор Суворов (<b>[mailto:egor_suvorov@mail.ru egor_suvorov@mail.ru]</b>) |
=== Домашние задания === | === Домашние задания === | ||
− | * [https://docs.google.com/document/d/1Ghfqa2amByd2Jfl1RbN1OFhUREeI2JThwaaoRtlG-aE/edit?usp=sharing домашнее задание №1] | + | <b>NOTE: мы используем python 3.x.</b> |
+ | * [https://docs.google.com/document/d/1Ghfqa2amByd2Jfl1RbN1OFhUREeI2JThwaaoRtlG-aE/edit?usp=sharing домашнее задание №1] | ||
* [https://docs.google.com/document/d/1fjUSJ-H5oPnoUFzy3mWtyLWkcFBcOdofN7ZFyuCmNcQ/edit?usp=sharing домашнее задание №2] | * [https://docs.google.com/document/d/1fjUSJ-H5oPnoUFzy3mWtyLWkcFBcOdofN7ZFyuCmNcQ/edit?usp=sharing домашнее задание №2] | ||
+ | * [https://docs.google.com/document/d/1-ocfDbkuA-PDD1O-4uT9t5sexhvJDHb8eOd46Mofis4/edit?usp=sharing домашнее задание №3] | ||
+ | * [https://docs.google.com/document/d/1q6e6CJSHZET-sQGExtPFuKSWkrGIAuJcI-gWJeCaTb0/edit?usp=sharing домашнее задание №4] ([https://github.com/ordian/Programming-Paradigms/blob/master/python_3/model.py Шаблон model.py для дз]) | ||
+ | * [https://docs.google.com/document/d/1VvrQTZ_xEvwAOHSsPWf40Ra3iQTQAGMMNyu5mWeQhhc/edit?usp=sharing домашнее задание №5] | ||
+ | * [https://docs.google.com/document/d/1_OTyKQjtrjYJR79pAKz5TFuhz-a9950Kv4MTF7vK-Cw/edit?usp=sharing домашнее задание №6] | ||
+ | * [https://docs.google.com/document/d/1-uAwUHELK2ObTOxMYrWtI2uKZWO8c280EiCG17rDt3s/edit?usp=sharing домашнее задание №7] | ||
+ | * [https://docs.google.com/document/d/1w-g04FpgAR_fTtrtPInWGX9JD2VaXi7i54mMYDMi1lc/edit?usp=sharing домашнее задание №8] | ||
+ | * [https://docs.google.com/document/d/19Sh53nrGIdGlIUXd7z45Vs88k8KzkCw1NAnddhnVLh0/edit?usp=sharing домашнее задание №9] | ||
+ | * [https://docs.google.com/document/d/19mxQrwMH0rm1tCljYGxzuQrLtBRcZN6Kt_frtC11b-M/edit?usp=sharing домашнее задание №10] ([https://www.dropbox.com/s/jo26qgwysxsb8aj/literacy.sql?dl=0 literacy.sql], <b>NOTE: мы используем sqlite3 в качестве базы данных</b>) | ||
+ | * [https://docs.google.com/document/d/1qBLc6_EnA5HbqLeQGFFQxRQ4Ielepw7Z7Hc99Zo3vZg/edit?usp=sharing домашнее задание №11] | ||
− | === Правила сдачи домашних заданий === | + | ==== Правила сдачи домашних заданий ==== |
− | * | + | * Домашние задания отправляются на почту в виде ссылки на git репозиторий (например, на [https://github.com/ github]) и пути к папке внутри репозитория; |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
=== Время занятий === | === Время занятий === | ||
Строка 23: | Строка 31: | ||
занятия будут начинаться с 11 часов, а не с 10 как указано в расписании. | занятия будут начинаться с 11 часов, а не с 10 как указано в расписании. | ||
+ | Третья группа может по желанию приходить к 10 часам на office hours для разбора проблем. '''7 декабря''' в качестве эксперимента занятие начнётся в 10:30 (консультация будет и до, и после - в течение обеденного перерыва). | ||
+ | |||
+ | У первой группы занятия с 10:30 до 13:30. | ||
+ | |||
+ | == Полезная информация == | ||
=== Полезные ссылки === | === Полезные ссылки === | ||
Строка 33: | Строка 46: | ||
* [http://bioinfo.ict.ac.cn/~dbu/AlgorithmCourses/Lectures/Strassen1968.pdf алгоритм Штрассена] | * [http://bioinfo.ict.ac.cn/~dbu/AlgorithmCourses/Lectures/Strassen1968.pdf алгоритм Штрассена] | ||
* [http://www.numpy.org/ сайт с документацией по numpy] | * [http://www.numpy.org/ сайт с документацией по numpy] | ||
− | * [https://github.com/ordian/Programming-Paradigms/ репозиторий с примерами кода | + | * [https://www.haskell.org/platform/ Haskell Platform] - должно хватить минимальной версии, битность не важна. |
− | * [https://docs.google.com/spreadsheets/d/1VqsgzFOTbM-S2h-y4RhtDGT2VDiKTbRNK9aVeg8VWqE/edit?usp=sharing | + | * [http://www.sqlite.org/download.html SQLite3]. В Ubuntu можно запустить <code>sudo apt-get install sqlite3</code>. Также можно взять архив sqlite-tools из раздела Precompiled Binaries. |
+ | * [http://sqlitebrowser.org/ DB Browser for SQLite], там есть собранный файл для Windows и инструкция по установке для Ubuntu. | ||
+ | * [https://docs.python.org/3/library/unittest.html документация по Python unittest] | ||
+ | * [https://docs.python.org/devguide/coverage.html про оценку покрытия кода тестами] | ||
+ | * [https://docs.python.org/3/library/io.html документация по StringIO и похожим file-like классам] | ||
+ | * [https://docs.python.org/3.6/library/profile.html документация по Python cProfile/profile] | ||
+ | * [http://docs.pytest.org/en/latest/ Пример с Pytest], [http://docs.pytest.org/en/latest/getting-started.html#grouping-multiple-tests-in-a-class пример с классами в Pytest], [https://holgerkrekel.net/2009/03/03/monkeypatching-in-unit-tests-done-right/ monkey patching в Pytest] | ||
+ | * [https://github.com/yeputons/fall-2016-paradigms/tree/master/161214/sources/debug-log Пример с автоматически удаляемым отладочным выводом в C/C++] | ||
+ | |||
+ | === Проверка стиля кода === | ||
+ | [https://www.python.org/dev/peps/pep-0008/ PEP 8 -- Style Guide for Python Code | Python.org] | ||
+ | |||
+ | Для проверки кода на соответствие гайду используйте утилиту pep8. Установка: | ||
+ | |||
+ | * Для Python 3: <code>pip3 install pep8</code> | ||
+ | * Для Python 2 (который мы не используем!): <code>pip2 install pep8</code> | ||
+ | * На Ubuntu: <code>sudo apt-get install pep8</code> | ||
+ | |||
+ | Использование: | ||
+ | <code>pep8 my_code.py</code> | ||
+ | |||
+ | Для автоматического исправления можно использовать утилиту autopep8. Установка и использование аналогичны (может оказаться полезным ключ <code>--in-place</code>). Будьте с ней осторожны. | ||
+ | |||
+ | == Информация по группам == | ||
+ | === Группа 1 === | ||
+ | Преподаватель: Андроник Ордиян. | ||
+ | * [https://github.com/ordian/Programming-Paradigms/ репозиторий с примерами кода] | ||
+ | * [https://docs.google.com/spreadsheets/d/1VqsgzFOTbM-S2h-y4RhtDGT2VDiKTbRNK9aVeg8VWqE/edit?usp=sharing результаты домашних заданий и посещаемость] | ||
+ | |||
+ | === Группа 2 === | ||
+ | Преподаватель: Миша Кринкин. | ||
+ | |||
+ | * [https://docs.google.com/spreadsheets/d/1NJAX9cR_0Qm-62E8kpFAhbJKawYm88emnbI6Hc3F2_c/edit?usp=sharing таблица с результатами] | ||
+ | * [[Медиа:Python_examples_14_september_2016.zip|примеры с пары 14 сентября]] | ||
+ | * [[Медиа:Python_examples_28_september_2016.zip|примеры с пары 28 сентября]] | ||
+ | * [[Медиа:Python_examples_5_October_2016.zip|примеры с пары 5 октября]] | ||
+ | * [https://www.dropbox.com/s/2xo37iiak8age2f/numbers.txt?dl=0 некоторый текст про представление чисел] | ||
+ | * [[Медиа:Pthread_examples_19_October_2016.zip|примеры с пары 19 октября]] | ||
+ | * [[Медиа:Pthread_examples_26_October_2016.zip|примеры с пары 26 октября]] | ||
+ | * [https://www.dropbox.com/s/h785m6h3qn9yez8/haskell_intro.txt?dl=0 вводный текст про haskell] | ||
+ | * [https://www.dropbox.com/s/58w1qdzvaa1assw/haskell_data_types.txt?dl=0 коротко о типах в haskell] | ||
+ | * [https://www.dropbox.com/s/8hlor93ivwzyhak/examples.zip?dl=0 примеры с пары про SQL] | ||
+ | * [https://www.dropbox.com/s/lejbplr5ngjfthj/python-api.zip?dl=0 примеры Python C API] | ||
+ | * [[Медиа:makefile_examples.zip|Makefile, примеры]] | ||
+ | * [[Медиа:network_examples.zip|Сеть, примеры]] | ||
+ | |||
+ | === Группа 3 === | ||
+ | Преподаватель: Егор Суворов. | ||
+ | |||
+ | [https://docs.google.com/spreadsheets/d/16FVquyHHeDusdHKtl5Oy8HuXkmiC4yWs8LfvxX57kG4 Табличка с успеваемостью]. | ||
+ | |||
+ | Презентации: | ||
+ | * [[Медиа:spbau-bach-term-1-parad-21.09.2016.pdf|21.09.2016: Матрицы, numpy и классы]]. | ||
+ | * [[Медиа:spbau-bach-term-1-parad-28.09.2016-a.pdf|28.09.2016: ДЗ и популярные проблемы]]. | ||
+ | * [[Медиа:spbau-bach-term-1-parad-28.09.2016-b.pdf|28.09.2016: Продолжаем классы]]. [[Лог занятия по парадигмам, 28.09.2016|Лог занятия]]. | ||
+ | * [[Медиа:spbau-bach-term-1-parad-05.10.2016.pdf|05.10.2016: Мимикрия, паттерны]]. [https://github.com/yeputons/fall-2016-paradigms/blob/master/161005/161005-log.ipynb Лог занятия]. [[Лог консультации по парадигмам, 05.10.2016|Файл с консультации перед занятием]]. | ||
+ | * [[Медиа:spbau-bach-term-1-parad-12.10.2016.pdf|12.10.2016: Арифметика в компьютерах]]. [https://github.com/yeputons/fall-2016-paradigms/blob/master/161012/161012-log.ipynb Лог занятия]. | ||
+ | * [[Медиа:spbau-bach-term-1-parad-19.10.2016.pdf|19.10.2016: Многопоточность]]. [https://github.com/yeputons/fall-2016-paradigms/tree/master/161019/sources Примеры с занятия]. | ||
+ | * [[Медиа:spbau-bach-term-1-parad-26.10.2016.pdf|26.10.2016: Функциональное программирование]]. [https://github.com/yeputons/fall-2016-paradigms/tree/master/161026/sources Примеры с занятия]. | ||
+ | * [[Медиа:spbau-bach-term-1-parad-09.11.2016.pdf|09.11.2016: Типы в Haskell]]. [https://github.com/yeputons/fall-2016-paradigms/tree/master/161109/sources Примеры с занятия]. | ||
+ | * [[Медиа:spbau-bach-term-1-parad-16.11.2016.pdf|16.11.2016: Базы данных и язык запросов]]. [https://github.com/yeputons/fall-2016-paradigms/tree/master/161116/sources Примеры с занятия]. | ||
+ | * 23.11.2016: Ликбез по ОС, ФС и прочему | ||
+ | * 30.11.2016: Многопоточность: повторение | ||
+ | * [https://github.com/yeputons/fall-2016-paradigms/blob/master/161207/plan.md 07.12.2016: Тестирование, теория. План занятия] | ||
+ | * 14.12.2016: Тестирование, практика (PyTest) | ||
+ | * 21.12.2016: Системы контроля версий | ||
+ | * 28.12.2016: Зачётная неделя, досдача хвостов. | ||
+ | |||
+ | ==== Дополнительные задания ==== | ||
+ | |||
+ | Дополнительные задания необходимо выполнять, чтобы закрывать темы. Дедлайн - конец зачётной недели. По умолчанию дополнительное задание закрывает тему, если оно проходит все тесты и вообще корректно, и приносит 50% баллов, если к нему вдобавок нет стилистических замечаний. В некоторых заданиях правила указаны подробнее. | ||
+ | |||
+ | ''Базовый Python'': [https://docs.google.com/document/d/1G3x21ARPFrDvnc3WuWe8Hpltf38tHtDTj_BACAysG3E/edit# новое задание]. Тема письма: <code>[parad] [task-01x]</code>. | ||
+ | |||
+ | ''Усложнённый Python'': [https://docs.google.com/document/d/1bhs2EoYxE6w7PFMpsZTACsKyQI7kGRYphmUJSCFe7Os/edit# новое задание]. Тема письма: <code>[parad] [task-02x]</code>. | ||
+ | |||
+ | ''ЯТЬ-интерпретатор'': задание остаётся [https://docs.google.com/document/d/1q6e6CJSHZET-sQGExtPFuKSWkrGIAuJcI-gWJeCaTb0 прежним], однако теперь не требуется писать тесты. Только сами классы и функцию <code>evaluate</code>. Тема письма: <code>[parad] [task-04x]</code>. | ||
+ | |||
+ | ''ЯТЬ-Visitors'': [https://docs.google.com/document/d/1vVBXpeoMHLu9dCZYNaKNLSZZjB67gi7eLCNmbOgX2wA/edit новое задание]. Тема письма: <code>[parad] [task-05x]</code>. | ||
+ | |||
+ | ''Потоки'': [https://docs.google.com/document/d/1o32LCOqdccBLe55RIwS5jtX0zg8F_YsF75VAJr2ndzk/edit новое задание]. Тема письма: <code>[parad] [task-07x1]</code> и <code>[parad] [task-07x2]</code> (в зависимости от подзадания). [https://gist.github.com/yeputons/7f451a6fbfced5602eb66fbd0cbaab72 Пример с консультации 14.12.2016]. |
Текущая версия на 19:15, 17 июня 2017
Содержание
Организационное
Преподаватели
- Андроник Ордиян (andronik.ordian@gmail.com)
- Миша Кринкин (krinkin.m.u@gmail.com)
- Егор Суворов (egor_suvorov@mail.ru)
Домашние задания
NOTE: мы используем python 3.x.
- домашнее задание №1
- домашнее задание №2
- домашнее задание №3
- домашнее задание №4 (Шаблон model.py для дз)
- домашнее задание №5
- домашнее задание №6
- домашнее задание №7
- домашнее задание №8
- домашнее задание №9
- домашнее задание №10 (literacy.sql, NOTE: мы используем sqlite3 в качестве базы данных)
- домашнее задание №11
Правила сдачи домашних заданий
- Домашние задания отправляются на почту в виде ссылки на git репозиторий (например, на github) и пути к папке внутри репозитория;
Время занятий
В связи с тем, что 2 пары в неделю слишком много, и усвоить за раз материал рассказанный за две пары проблематично, занятия будут начинаться с 11 часов, а не с 10 как указано в расписании.
Третья группа может по желанию приходить к 10 часам на office hours для разбора проблем. 7 декабря в качестве эксперимента занятие начнётся в 10:30 (консультация будет и до, и после - в течение обеденного перерыва).
У первой группы занятия с 10:30 до 13:30.
Полезная информация
Полезные ссылки
- Официальный сайт python и в частности python tutorial
- Git Book
- github
- туториал по класса в python из официальной документации
- объяснение MRO с примерами
- объяснение super с примерами
- алгоритм Штрассена
- сайт с документацией по numpy
- Haskell Platform - должно хватить минимальной версии, битность не важна.
- SQLite3. В Ubuntu можно запустить
sudo apt-get install sqlite3
. Также можно взять архив sqlite-tools из раздела Precompiled Binaries. - DB Browser for SQLite, там есть собранный файл для Windows и инструкция по установке для Ubuntu.
- документация по Python unittest
- про оценку покрытия кода тестами
- документация по StringIO и похожим file-like классам
- документация по Python cProfile/profile
- Пример с Pytest, пример с классами в Pytest, monkey patching в Pytest
- Пример с автоматически удаляемым отладочным выводом в C/C++
Проверка стиля кода
PEP 8 -- Style Guide for Python Code | Python.org
Для проверки кода на соответствие гайду используйте утилиту pep8. Установка:
- Для Python 3:
pip3 install pep8
- Для Python 2 (который мы не используем!):
pip2 install pep8
- На Ubuntu:
sudo apt-get install pep8
Использование:
pep8 my_code.py
Для автоматического исправления можно использовать утилиту autopep8. Установка и использование аналогичны (может оказаться полезным ключ --in-place
). Будьте с ней осторожны.
Информация по группам
Группа 1
Преподаватель: Андроник Ордиян.
Группа 2
Преподаватель: Миша Кринкин.
- таблица с результатами
- примеры с пары 14 сентября
- примеры с пары 28 сентября
- примеры с пары 5 октября
- некоторый текст про представление чисел
- примеры с пары 19 октября
- примеры с пары 26 октября
- вводный текст про haskell
- коротко о типах в haskell
- примеры с пары про SQL
- примеры Python C API
- Makefile, примеры
- Сеть, примеры
Группа 3
Преподаватель: Егор Суворов.
Презентации:
- 21.09.2016: Матрицы, numpy и классы.
- 28.09.2016: ДЗ и популярные проблемы.
- 28.09.2016: Продолжаем классы. Лог занятия.
- 05.10.2016: Мимикрия, паттерны. Лог занятия. Файл с консультации перед занятием.
- 12.10.2016: Арифметика в компьютерах. Лог занятия.
- 19.10.2016: Многопоточность. Примеры с занятия.
- 26.10.2016: Функциональное программирование. Примеры с занятия.
- 09.11.2016: Типы в Haskell. Примеры с занятия.
- 16.11.2016: Базы данных и язык запросов. Примеры с занятия.
- 23.11.2016: Ликбез по ОС, ФС и прочему
- 30.11.2016: Многопоточность: повторение
- 07.12.2016: Тестирование, теория. План занятия
- 14.12.2016: Тестирование, практика (PyTest)
- 21.12.2016: Системы контроля версий
- 28.12.2016: Зачётная неделя, досдача хвостов.
Дополнительные задания
Дополнительные задания необходимо выполнять, чтобы закрывать темы. Дедлайн - конец зачётной недели. По умолчанию дополнительное задание закрывает тему, если оно проходит все тесты и вообще корректно, и приносит 50% баллов, если к нему вдобавок нет стилистических замечаний. В некоторых заданиях правила указаны подробнее.
Базовый Python: новое задание. Тема письма: [parad] [task-01x]
.
Усложнённый Python: новое задание. Тема письма: [parad] [task-02x]
.
ЯТЬ-интерпретатор: задание остаётся прежним, однако теперь не требуется писать тесты. Только сами классы и функцию evaluate
. Тема письма: [parad] [task-04x]
.
ЯТЬ-Visitors: новое задание. Тема письма: [parad] [task-05x]
.
Потоки: новое задание. Тема письма: [parad] [task-07x1]
и [parad] [task-07x2]
(в зависимости от подзадания). Пример с консультации 14.12.2016.