Программирование на Python КНАД 23/24 — различия между версиями
Serggor (обсуждение | вклад) |
Serggor (обсуждение | вклад) |
||
(не показаны 33 промежуточные версии этого же участника) | |||
Строка 5: | Строка 5: | ||
[http://wiki.cs.hse.ru/%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%BD%D0%B0_Python_%D0%9A%D0%9D%D0%90%D0%94_22/23 Вики прошлого года] | [http://wiki.cs.hse.ru/%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%BD%D0%B0_Python_%D0%9A%D0%9D%D0%90%D0%94_22/23 Вики прошлого года] | ||
− | [https://disk.yandex.ru/d/cihFqCczUMKKPg Записи лекций] | + | [https://disk.yandex.ru/d/cihFqCczUMKKPg Записи лекций и семинаров] |
− | [https://forms.gle/ | + | [https://forms.gle/kkdjxK5n7Jr9t6xh8 Форма обратной связи. Можно заполнять когда угодно с любыми вопросами] |
[https://t.me/+Nf7hhX7htIBhZmFi Ссылка на чат курса в телеграм – обязательно к вступлению] | [https://t.me/+Nf7hhX7htIBhZmFi Ссылка на чат курса в телеграм – обязательно к вступлению] | ||
Строка 13: | Строка 13: | ||
==Лекции== | ==Лекции== | ||
− | Среда | + | Среда 11:10 – 12:30, четверг 11:10 – 12:30, [https://us06web.zoom.us/j/88581145423?pwd=UU5JRFlMdmhCV3YxamFab0EzTUhkdz09 zoom link] |
1. '''6 сентября.''' Немного об истории. Hello, world! Понятие переменной, целочисленная арифметика, вещественные числа. Представление целых чисел в памяти компьютера. Битовые операции. Питон как простейший калькулятор. Операторы сравнения, присваивания. Знакомство с Jupyter Notebook, docs.python.org. [https://docs.google.com/presentation/d/1fbaIoRvY-R17zQJ-SStEWD4vw9eFOc5VEdrfEBAvHvY/edit?usp=sharing слайды] | 1. '''6 сентября.''' Немного об истории. Hello, world! Понятие переменной, целочисленная арифметика, вещественные числа. Представление целых чисел в памяти компьютера. Битовые операции. Питон как простейший калькулятор. Операторы сравнения, присваивания. Знакомство с Jupyter Notebook, docs.python.org. [https://docs.google.com/presentation/d/1fbaIoRvY-R17zQJ-SStEWD4vw9eFOc5VEdrfEBAvHvY/edit?usp=sharing слайды] | ||
Строка 19: | Строка 19: | ||
2. '''7 сентября.''' Условный оператор. Цикл while. Использование стандартных модулей. [https://docs.google.com/presentation/d/1y7fZMcx9zOdOM1gaaUndkrdlciQbZ1rj4t3vKJSHE9Y/edit#slide=id.geef548b5a9_0_125 слайды] | 2. '''7 сентября.''' Условный оператор. Цикл while. Использование стандартных модулей. [https://docs.google.com/presentation/d/1y7fZMcx9zOdOM1gaaUndkrdlciQbZ1rj4t3vKJSHE9Y/edit#slide=id.geef548b5a9_0_125 слайды] | ||
+ | 3. '''13 сентября''' Списки и кортежи. Цикл for. Основы работы с файлами. [https://docs.google.com/presentation/d/1OxeR-y1LO3pQltrihm6WYHambCh5AsKNqRae5V94tPE/edit?usp=sharing слайды] | ||
+ | |||
+ | 4. '''14 сентября''' Функции и рекурсия. [https://docs.google.com/presentation/d/1vcibwSDPC0treU4DSWJ9pdN34Tx98885xfE9yQuJT-k/edit?usp=sharing слайды] | ||
+ | |||
+ | 5. '''20 сентября''' Сортировка в Python. Итераторы и генераторы [https://docs.google.com/presentation/d/1acXlt8W2e28ewoRxkt5oNUguWcSZBzhgyC6dm5XtJsg/edit?usp=sharing слайды] | ||
+ | |||
+ | 6. '''21 сентября''' Методы генераторов. Именованные кортежи, двусторонняя очередь. Декораторы. [https://docs.google.com/presentation/d/1x78vCIWxY70uWgVvBCPOhjnNWemMBqG1gVv_9I0Iddo/edit?usp=sharing слайды] | ||
+ | |||
+ | 7. '''27 сентября''' Декораторы: продолжение. Функциональное программирование. Модули itertools и operator. Знакомство с аргументами командной строки, работой с файловой системой с помощью модуля os [https://docs.google.com/presentation/d/1-K9W2DneAql9CZEPACsWcDRBlUI9rlN_Sd0MTlNNYdk/edit?usp=sharing слайды] | ||
+ | |||
+ | 8. '''28 сентября''' Множества и словари. Модуль collections. [https://docs.google.com/presentation/d/1isbMmgKFQg_cwER-_PgZ3zUPg_KLklgR0_nxXAF3phY/edit?usp=sharing слайды] [https://colab.research.google.com/drive/1zP7k9r7gkOeFmRaAM-wn-n01oWUhLq3K?usp=sharing код] | ||
+ | |||
+ | 9. '''29 сентября''' Основы ООП: Инкапсуляция. Классы в Python. Статические поля. Методы классов, арифметические magic методы, строковое представление классов. [https://docs.google.com/presentation/d/16fUGtIZDI5607Mlh0iJ0MWtFdisPoXc4EHCLBhQ86kI/edit?usp=sharing слайды] | ||
+ | |||
+ | 10. '''6 октября''' Продвинутые возможности работы с классами. Методы класса и статические методы. Property. Наследование и полиморфизм в Python. Класс как пространство имён. [https://docs.google.com/presentation/d/14dVlhwYykGUS0Xcm2f7fba1XsrfTQK-9DAXICcbZ5Is/edit?usp=sharing слайды] | ||
+ | |||
+ | 11. '''11 октября''' Абстрактные классы, слоты, работа с файловой системой, работа с аргументами командной строки, пакеты и модули, pip, нововведения Python 3.8 [https://docs.google.com/presentation/d/1ukHsyUEM_mf0PgcQR1ONNEn_NHGow-_ctZ36ivQL2Jc/edit?usp=sharing слайды] | ||
+ | |||
+ | 12. '''12 октября''' Асинхронность в Python. Пишем руками [https://docs.google.com/presentation/d/1Ik28hL_gLFD3MFQibtrJt3KYplaszQ67WwLrJaZJScY/edit?usp=sharing слайды] [http://uneex.org/LecturesCMC/PythonIntro2020/14_Async первоисточник] | ||
+ | |||
+ | 13. '''18 октября''' Асинхронность в Python. Asyncio [https://docs.google.com/presentation/d/1Ik28hL_gLFD3MFQibtrJt3KYplaszQ67WwLrJaZJScY/edit?usp=sharing слайды] [http://uneex.org/LecturesCMC/PythonIntro2020/14_Async первоисточник] | ||
+ | |||
+ | 14. '''19 октября''' Работа с базами данных. Язык SQL [https://docs.google.com/presentation/d/1btWIVN_hs8n_y-46JgH8mZGB4Ohh9Mxh3ByOv_G6f70/edit?usp=sharing слайды] [https://replit.com/@KNAD21/Lesson14#main.py код] | ||
==Семинары== | ==Семинары== | ||
[https://github.com/sanityseeker/sda-python-2022 Репозиторий семинаров (автор Денис Беляков)] | [https://github.com/sanityseeker/sda-python-2022 Репозиторий семинаров (автор Денис Беляков)] | ||
− | |||
== Домашнее задание == | == Домашнее задание == | ||
Строка 29: | Строка 51: | ||
'''В каждом контесте можно использовать только те приемы, которые обсуждались на предшествующих лекциях и семинарах! Соответственно, в скобочках указываются темы, которые считаются последними пройденными к данному контесту. А значит, только эти и все предшествующие темы можно использовать для решения дз.''' | '''В каждом контесте можно использовать только те приемы, которые обсуждались на предшествующих лекциях и семинарах! Соответственно, в скобочках указываются темы, которые считаются последними пройденными к данному контесту. А значит, только эти и все предшествующие темы можно использовать для решения дз.''' | ||
− | |||
− | |||
Значения первой строки в таблицах кликабельны и при нажатии открывается страница соответствующего контеста. Если по каким-то причинам это не работает, можно переходить напрямую по ссылке https://official.contest.yandex.ru/contest/ваш-id-контеста/enter/ | Значения первой строки в таблицах кликабельны и при нажатии открывается страница соответствующего контеста. Если по каким-то причинам это не работает, можно переходить напрямую по ссылке https://official.contest.yandex.ru/contest/ваш-id-контеста/enter/ | ||
Строка 37: | Строка 57: | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
− | ! !! [https://official.contest.yandex.ru/contest/51827/enter/ ДЗ1] !! ДЗ2 !! ДЗ3 !! ДЗ4 !! ДЗ5 !! ДЗ6 !! ДЗ7 !! ДЗ8 !! ДЗ9 | + | ! !! [https://official.contest.yandex.ru/contest/51827/enter/ ДЗ1] !! [https://official.contest.yandex.ru/contest/52138/enter/ ДЗ2] !! [https://official.contest.yandex.ru/contest/52674/enter/ ДЗ3] !! [https://official.contest.yandex.ru/contest/52786/enter/ ДЗ4] !! [https://official.contest.yandex.ru/contest/53024/enter/ ДЗ5] !! [https://official.contest.yandex.ru/contest/53159/enter/ ДЗ6] !! [https://official.contest.yandex.ru/contest/53796/enter/ ДЗ7] !! [https://official.contest.yandex.ru/contest/53862/enter/ ДЗ8] !! [https://official.contest.yandex.ru/contest/54358/enter/ ДЗ9] |
|- | |- | ||
− | | Дедлайн || | + | | Дедлайн || 17.09.2023 23:59:59 || 19.09.2023 23:59:59 || 26.09.2023 23:59:59 || 28.09.2023 23:59:59 || 04.10.2023 23:59:59 || 07.10.2023 23:59:59 || 14.10.2023 02:59:59 || 16.10.2023 02:59:59 || 24.10.2023 23:59:59 |
|- | |- | ||
− | | id контеста || 51827 || | + | | id контеста || 51827 || 52138 || 52674 || 52786 || 53024 || 53159 || 53796 || 53862 || 54358 |
|} | |} | ||
Строка 47: | Строка 67: | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
− | ! !! [https://official.contest.yandex.ru/contest/51828/enter/ ДЗ1] !! ДЗ2 !! ДЗ3 !! ДЗ4 !! ДЗ5 !! ДЗ6 !! ДЗ7 !! ДЗ8 !! ДЗ9 | + | ! !! [https://official.contest.yandex.ru/contest/51828/enter/ ДЗ1] !! [https://official.contest.yandex.ru/contest/52139/enter/ ДЗ2] !! [https://official.contest.yandex.ru/contest/52675/enter/ ДЗ3] !! [https://official.contest.yandex.ru/contest/52787/enter/ ДЗ4] !! [https://official.contest.yandex.ru/contest/53025/enter/ ДЗ5] !! [https://official.contest.yandex.ru/contest/53160/enter/ ДЗ6] !! [https://official.contest.yandex.ru/contest/53795/enter/ ДЗ7] !! [https://official.contest.yandex.ru/contest/53861/enter/ ДЗ8] !! [https://official.contest.yandex.ru/contest/54357/enter/ ДЗ9] |
|- | |- | ||
− | | Дедлайн || 17.09.2023 23:59:59 || | + | | Дедлайн || 17.09.2023 23:59:59 || 19.09.2023 23:59:59 || 26.09.2023 23:59:59 || 28.09.2023 23:59:59 || 04.10.2023 23:59:59 || 07.10.2023 23:59:59 || 14.10.2023 02:59:59 || 16.10.2023 23:59:59 || 24.10.2023 23:59:59 |
|- | |- | ||
− | | id контеста || 51828 || | + | | id контеста || 51828 || 52139 || 52675 || 52787 || 53025 || 53160 || 53795 || 53861 || 54357 |
|} | |} | ||
+ | |||
+ | Проект 1. Написать телеграм-бот (можно вк, дискорд), который будет делать что-нибудь полезное. Число методов - не менее 5, желательно как можно более разнородные. Это творческое задание, в нём формальные критерии избыточны. Дедлайн 24.10.2023 23:59:59 | ||
+ | |||
+ | Проект 2. Написать тесты к проекту 1, максимально покрыв его функциональность. Будет оцениваться корректность выбора метода тестирования/задания контракта в зависимости от вашего кейса. Можете почитать про моки (mock) и использовать их. Дедлайн 24.10.2023 23:59:59 | ||
== Оценки == | == Оценки == | ||
+ | [https://docs.google.com/spreadsheets/d/1hrmH5BLtp9Slj0r7bZruQasRsM_oG1NZQ2HxXoOA2kI/edit?usp=sharing Текущие оценки] | ||
Накоп = 0.1 * (ДЗ1 + ДЗ2 + ДЗ3 + ДЗ4 + ДЗ5 + ДЗ6 + ДЗ7 + ДЗ8 + ДЗ9 + Пр1 + Пр2 – МИН(ДЗ1, ДЗ2, ДЗ3, ДЗ4, ДЗ5, ДЗ6, ДЗ7, ДЗ8, ДЗ9, Пр1, Пр2)) | Накоп = 0.1 * (ДЗ1 + ДЗ2 + ДЗ3 + ДЗ4 + ДЗ5 + ДЗ6 + ДЗ7 + ДЗ8 + ДЗ9 + Пр1 + Пр2 – МИН(ДЗ1, ДЗ2, ДЗ3, ДЗ4, ДЗ5, ДЗ6, ДЗ7, ДЗ8, ДЗ9, Пр1, Пр2)) | ||
Строка 65: | Строка 90: | ||
'''Автоматы.''' Определим накопленную оценку как Накоп. Если Накоп >=6, то студент может получить Накоп в качестве итоговой оценки, не приходя на экзамен. Если студент идет на экзамен, то возможность получения в качестве оценки накопленной пропадает. | '''Автоматы.''' Определим накопленную оценку как Накоп. Если Накоп >=6, то студент может получить Накоп в качестве итоговой оценки, не приходя на экзамен. Если студент идет на экзамен, то возможность получения в качестве оценки накопленной пропадает. | ||
− | |||
==Ссылки на интерпретатор и среду программирования== | ==Ссылки на интерпретатор и среду программирования== |
Текущая версия на 23:11, 22 февраля 2024
Преподаватели: С.С. Горшков, А.Н. Весельев, М.А. Федоров
Форма обратной связи. Можно заполнять когда угодно с любыми вопросами
Ссылка на чат курса в телеграм – обязательно к вступлению
Содержание
Лекции
Среда 11:10 – 12:30, четверг 11:10 – 12:30, zoom link
1. 6 сентября. Немного об истории. Hello, world! Понятие переменной, целочисленная арифметика, вещественные числа. Представление целых чисел в памяти компьютера. Битовые операции. Питон как простейший калькулятор. Операторы сравнения, присваивания. Знакомство с Jupyter Notebook, docs.python.org. слайды
2. 7 сентября. Условный оператор. Цикл while. Использование стандартных модулей. слайды
3. 13 сентября Списки и кортежи. Цикл for. Основы работы с файлами. слайды
4. 14 сентября Функции и рекурсия. слайды
5. 20 сентября Сортировка в Python. Итераторы и генераторы слайды
6. 21 сентября Методы генераторов. Именованные кортежи, двусторонняя очередь. Декораторы. слайды
7. 27 сентября Декораторы: продолжение. Функциональное программирование. Модули itertools и operator. Знакомство с аргументами командной строки, работой с файловой системой с помощью модуля os слайды
8. 28 сентября Множества и словари. Модуль collections. слайды код
9. 29 сентября Основы ООП: Инкапсуляция. Классы в Python. Статические поля. Методы классов, арифметические magic методы, строковое представление классов. слайды
10. 6 октября Продвинутые возможности работы с классами. Методы класса и статические методы. Property. Наследование и полиморфизм в Python. Класс как пространство имён. слайды
11. 11 октября Абстрактные классы, слоты, работа с файловой системой, работа с аргументами командной строки, пакеты и модули, pip, нововведения Python 3.8 слайды
12. 12 октября Асинхронность в Python. Пишем руками слайды первоисточник
13. 18 октября Асинхронность в Python. Asyncio слайды первоисточник
14. 19 октября Работа с базами данных. Язык SQL слайды код
Семинары
Репозиторий семинаров (автор Денис Беляков)
Домашнее задание
После почти каждого семинара вам будет выдано оцениваемое домашнее задание. На выполнение задания дается 8 дней от момента начала дня соответствующего семинара.
В каждом контесте можно использовать только те приемы, которые обсуждались на предшествующих лекциях и семинарах! Соответственно, в скобочках указываются темы, которые считаются последними пройденными к данному контесту. А значит, только эти и все предшествующие темы можно использовать для решения дз.
Значения первой строки в таблицах кликабельны и при нажатии открывается страница соответствующего контеста. Если по каким-то причинам это не работает, можно переходить напрямую по ссылке https://official.contest.yandex.ru/contest/ваш-id-контеста/enter/
КНАД
ДЗ1 | ДЗ2 | ДЗ3 | ДЗ4 | ДЗ5 | ДЗ6 | ДЗ7 | ДЗ8 | ДЗ9 | |
---|---|---|---|---|---|---|---|---|---|
Дедлайн | 17.09.2023 23:59:59 | 19.09.2023 23:59:59 | 26.09.2023 23:59:59 | 28.09.2023 23:59:59 | 04.10.2023 23:59:59 | 07.10.2023 23:59:59 | 14.10.2023 02:59:59 | 16.10.2023 02:59:59 | 24.10.2023 23:59:59 |
id контеста | 51827 | 52138 | 52674 | 52786 | 53024 | 53159 | 53796 | 53862 | 54358 |
ВСН
ДЗ1 | ДЗ2 | ДЗ3 | ДЗ4 | ДЗ5 | ДЗ6 | ДЗ7 | ДЗ8 | ДЗ9 | |
---|---|---|---|---|---|---|---|---|---|
Дедлайн | 17.09.2023 23:59:59 | 19.09.2023 23:59:59 | 26.09.2023 23:59:59 | 28.09.2023 23:59:59 | 04.10.2023 23:59:59 | 07.10.2023 23:59:59 | 14.10.2023 02:59:59 | 16.10.2023 23:59:59 | 24.10.2023 23:59:59 |
id контеста | 51828 | 52139 | 52675 | 52787 | 53025 | 53160 | 53795 | 53861 | 54357 |
Проект 1. Написать телеграм-бот (можно вк, дискорд), который будет делать что-нибудь полезное. Число методов - не менее 5, желательно как можно более разнородные. Это творческое задание, в нём формальные критерии избыточны. Дедлайн 24.10.2023 23:59:59
Проект 2. Написать тесты к проекту 1, максимально покрыв его функциональность. Будет оцениваться корректность выбора метода тестирования/задания контракта в зависимости от вашего кейса. Можете почитать про моки (mock) и использовать их. Дедлайн 24.10.2023 23:59:59
Оценки
Накоп = 0.1 * (ДЗ1 + ДЗ2 + ДЗ3 + ДЗ4 + ДЗ5 + ДЗ6 + ДЗ7 + ДЗ8 + ДЗ9 + Пр1 + Пр2 – МИН(ДЗ1, ДЗ2, ДЗ3, ДЗ4, ДЗ5, ДЗ6, ДЗ7, ДЗ8, ДЗ9, Пр1, Пр2)) Если просто – из 11 оценок не учитывается минимальная.
Итог = Округление(0.7 * Накоп + 0.3 * Э), где ДЗi — оценка за i-е домашнее задание, ПРi – оценка за i-й проект, Э — оценка за экзамен. Округление арифметическое.
Автоматы. Определим накопленную оценку как Накоп. Если Накоп >=6, то студент может получить Накоп в качестве итоговой оценки, не приходя на экзамен. Если студент идет на экзамен, то возможность получения в качестве оценки накопленной пропадает.
Ссылки на интерпретатор и среду программирования
Сначала нужно установить интерпретатор языка Python 3 версии отсюда: https://www.python.org/downloads/
Затем среду программирования JetBrains PyCharm (Community) отсюда: https://www.jetbrains.com/pycharm/download
Рекомендуется так же установить jupyter notebook (гугл в помощь). Можно установить через anaconda navigator
Список онлайн-ресурсов
https://www.coursera.org/learn/python-osnovy-programmirovaniya
https://www.coursera.org/specializations/programming-in-python