Программирование на Python КНАД 23/24

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

Преподаватели: С.С. Горшков, А.Н. Весельев, М.А. Федоров

Учебный план прошлого года

Вики прошлого года

Записи лекций и семинаров

Форма обратной связи. Можно заполнять когда угодно с любыми вопросами

Ссылка на чат курса в телеграм – обязательно к вступлению

Лекции

Среда 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://pythonworld.ru/

https://docs.python.org/3

https://www.coursera.org/learn/python-osnovy-programmirovaniya

https://www.coursera.org/specializations/programming-in-python

https://vk.com/itcookies/python

http://uneex.org/LecturesCMC/PythonIntro2020