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

Материал из Wiki - Факультет компьютерных наук
Версия от 12:27, 20 октября 2021; Serggor (обсуждение | вклад)

(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Преподаватели: С.С. Горшков М.К. Горденко

Учебный план

Лекции

Среда 9:30 – 10:50, zoom link

Пятница 9:30 – 10:50, zoom link

1. 8 сентября. Немного об истории. Hello, world! Понятие переменной, целочисленная арифметика. Представление целых чисел в памяти компьютера. Битовые операции. Питон как простейший калькулятор. Команда id. Модель copy-on-write. Операторы сравнения, присваивания. Правила именования переменных. Логический тип. None. Ленивые вычисления. Использование однострочных комментариев. Знакомство с Jupyter Notebook, docs.python.org слайды, доска, Jupyter, Jupyter PDF, обратная связь.

2. 10 сентября Условный оператор. Цикл while. Вещественные числа. Использование стандартных модулей. Модули math и decimal. Строки, форматирование строк. Знакомство с регулярными выражениями. слайды обратная связь.

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

4. 17 сентября Функции и рекурсия. слайды код обратная связь

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

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

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

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

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

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

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

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

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

14. 15 октября. Хотсинг телеграм бота на Heroku. Архитектура веб приложений. Обзор фреймворков. Знакомство с django. API, Routing. хостинг + heroku ps:scale worker=1 чтобы не отрубалось каждые полчаса слайды обратная связь

Семинары

БКНАД211: Четверг 11:10 – 12:30, zoom, Пятница 11:10 – 12:30, zoom

БКНАД212: Четверг 9:30 – 10:50, zoom, Пятница 11:10 – 12:30, zoom

1. 9 сентября. Решение проблем с установкой интерпретатора языка. Настройка PyCharm и дебаг кода. Практика работы с целыми числами. Целочисленное деление с отрицательными числами в языке Python. Закон де Моргана. Знакомство со строками. Арифметические операции со строками. Понятие неизменяемого объекта, неизменяемость строк. Знакомство с Яндекс.Контестом. Решение задач. слайды colab с кодом с семинара (из Pycharm) обратная связь

2. 10 сентября Продолжение лекции. Решение задач. colab с кодом с семинара (из Pycharm) обратная связь

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

4. 17 сентября Продолжение решения задач на регулярные выражения. Решение задач на функции и рекурсию. код 211 обратная связь

5. 18 сентября Решение задач. Бинарный поиск код 211 код 212 слайды обратная связь

6. 23 сентября Практика работы с декораторами. docstring. Декоратор @functools.wraps. слайды код 211 код 212 обратная связь

7. 24 сентября Практика работы с декораторами. Практика использования методов функционального программирования в языке Python код: sem211_* код: sem212_* обратная связь

8. 30 сентября Множества и словари. Модуль collections. Решение задач: сначала B, N из ДЗ7, PokeMon, задача про непрерывный подмассив с суммой N, G, U из ДЗ7 (сколько успеем) код 211 код 212 обратная связь

9. 1 октября Классы в Python. Методы классов код 211 код 212 обратная связь

10. 2 октября Работа с магическими методами в Python. Обработка ошибок. Иерархия исключений. Создание пользовательских классов исключений слайды про исключения код 211 задачи 212 код исключения обратная связь

11. 7 октября Написание телеграм-бота код 211 обратная связь

12. 8 октября Тестирование. Написание телеграм-бота код testing + PEP8 код 211 обратная связь

13. 14 октября. Регулярные выражения: продолжение. Парсинг страниц: BeautifulSoup, формат XML. Работа с API слайды код 211код 212 обратная связь

14. 15 октября. Знакомство с базами данных: код 211, код212

ДЗ

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

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

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

ДЗ 1 (Арифметика)

ДЗ 2 (Условный оператор, цикл while, вещественные числа)

ДЗ 3 (Строки, цикл for)

ДЗ 4 (Функции и рекурсия)

ДЗ 5 (Списки и сортировка) – первые 10 задач на списки (в них пользоваться сортировками нельзя)

ДЗ 6 (Функциональное программирование)

ДЗ 7 (Множества и словари)

ДЗ 8 (Классы)

ДЗ 9 (Все темы, PEP 8)

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

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

Экзамен

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

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

Ссылка на экзамен

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

Пользоваться можно только вашей IDE.

Оценки

Итоговая таблица с результатами

Накоп = 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, то студент может получить Накоп в качестве итоговой оценки, не приходя на экзамен. Если студент идет на экзамен, то возможность получения в качестве оценки накопленной пропадает.

Дедлайны по ДЗ

ДЗ 1 ДЗ 2 ДЗ 3 ДЗ 4 ДЗ 5 ДЗ 6 ДЗ 7 ДЗ8 ДЗ9 тг бот тесты
16.09.21 23:59 18.09.21 23:59 22.09.21 23:59 24.09.21 23:59 01.10.21 00:59 02.10.21 23:59 09.10.21 22:00 13.10.21 02:00 16.10.21 00:20 17.10.21 23:59 18.10.21 19:59

Ссылки на интерпретатор и среду программирования

Сначала нужно установить интерпретатор языка Python 3 версии отсюда: https://www.python.org/downloads/

Затем среду программирования JetBrains PyCharm (Community) отсюда: https://www.jetbrains.com/pycharm/download

Список онлайн-ресурсов

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