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

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

Преподаватели: С.С. Горшков М.А. Федоров Д.О. Беляков

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

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

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

Лекции

Понедельник 09:30 – 10:50, zoom link

Среда 11:10 – 12:30, zoom link

1. 7 сентября. Немного об истории. Hello, world! Понятие переменной, целочисленная арифметика. Представление целых чисел в памяти компьютера. Битовые операции. Питон как простейший калькулятор. Операторы сравнения, присваивания. Знакомство с Jupyter Notebook, docs.python.org. слайды доска

2. 8 сентября. Условный оператор. Цикл while. Вещественные числа. Использование стандартных модулей. . слайды доска

3. 12 сентября Списки и кортежи. Цикл for. Основы работы с файлами. слайды

4. 14 сентября Функции и рекурсия. слайды

5. 19 сентября Сортировка в Python. Итераторы и генераторы слайды

6. 21 сентября Методы генераторов. Именованные кортежи, двусторонняя очередь. Декораторы. слайды

7. 26 сентября Функциональное программирование. Модули itertools и operator. Знакомство с аргументами командной строки, работой с файловой системой с помощью модуля os слайды

8. 27 сентября Множества и словари. Модуль collections. слайды код

9. 4 октября Основы ООП: Инкапсуляция. Классы в Python. Статические поля. Методы классов, арифметические magic методы, строковое представление классов. слайды

10. 6 октября Продвинутые возможности работы с классами. Методы класса и статические методы. Property. Наследование и полиморфизм в Python. Класс как пространство имён. слайды

11. 13 октября Абстрактные классы, слоты, работа с файловой системой, работа с аргументами командной строки, пакеты и модули, pip, нововведения Python 3.8 слайды

12. 14 октября Асинхронность в Python слайды первоисточник

13. 17 октября Основы организации компьютерных сетей. Основы TCP/IP. Основы DNS. Основы HTTP. requests. Архитектура веб приложений. Обзор фреймворков слайды

14. 19 октября Знакомство с базами данных слайды

Семинары

Репозиторий семинаров 221 (семинарист Денис Беляков)

1. 7/8 сентября. Решение проблем с установкой интерпретатора языка. Настройка PyCharm и дебаг кода. Практика работы с целыми числами. Целочисленное деление с отрицательными числами в языке Python. Закон де Моргана. Знакомство со строками. Правила именования переменных. Логический тип. None. Ленивые вычисления. Использование однострочных комментариев. Команда id. Модель copy-on-write. слайды

2. 8/9 сентября. Продолжение разбора материала лекции. Модули math и decimal. Строки, форматирование строк. Знакомство с регулярными выражениями.

3. 14/15 сентября. Байтовые строки. Разбор задач на темы: списки, кортежи, цикл for. Регулярные выражения. Аннотации функций

ДЗ

После почти каждого семинара вам будет выдано оцениваемое домашнее задание. На выполнение задания дается 8 дней от момента начала дня соответствующего семинара.

В каждом контесте можно использовать только те приемы, которые обсуждались на предшествующих лекциях и семинарах! Соответственно, в скобочках указываются темы, которые считаются последними пройденными к данному контесту. А значит, только эти и все предшествующие темы можно использовать для решения дз.

По вопросам получения логинов-паролей пишите лектору

ДЗ 1 (Арифметика). Дедлайн – 18 сен 2022, 23:59:59

ДЗ 2 (Условный оператор, цикл while, вещественные числа). Дедлайн – 19 сен 2022, 23:59:59

ДЗ 3 (Строки, цикл for). Дедлайн – 21 сен 2022, 23:59:59

ДЗ 4 (Функции и рекурсия). Дедлайн – 26 сен 2022, 23:59:59

ДЗ 5 (Списки и сортировка). Дедлайн – 29 сен 2022, 23:59:59

ДЗ 6 (Функциональное программирование). Дедлайн – 5 окт 2022, 23:59:59

ДЗ 7 (Множества и словари). Дедлайн – 7 окт 2022, 23:59:59

ДЗ 8 (Классы). Дедлайн – 11 окт 2022, 23:59:59. Контест открывается 3 октября в 00:00

ДЗ 9 (Повторение всего). Дедлайн – 14 окт 2022, 23:59:59. Контест открывается 3 октября в 12:00

Проект 1. Написать телеграм-бот (можно вк, дискорд), который будет делать что-нибудь полезное. Число методов - не менее 5, желательно как можно более разнородные. Это творческое задание, в нём формальные критерии избыточны. форма для сдачи

Проект 2. Написать тесты к проекту 1, максимально покрыв его функциональность. Будет оцениваться корректность выбора метода тестирования/задания контракта в зависимости от вашего кейса. Можете почитать про моки (mock) и использовать их. форма для сдачи

Экзамен

Экзамен состоится 25 октября в 11:10 мск, с синхронным прокторингом. Продолжительность экзамена – 1 час 20 минут. Необходимо будет включить камеру и (возможно) расшарить экран.

Демо-вариант экзамена

Всего будет 6 задач, решение 5 из них достаточно для получения максимального балла за экзамен.

Пользоваться можно только вашей IDE (или чем-то иным, где можно посмотреть документацию python, но нельзя погуглить)

Оценки

Табличка с промежуточными оценками

Накоп = 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