Программирование на Python
Санкт-Петербург, весна 2018
Описание
Описание
Курс является введением в язык программирования Python.
Будут рассмотрены темы:
- основы и философия программирования на Python, инструментарий (вводная лекция)
- написание простых программ (фундаментальные типы данных, основные синтаксические конструкции)
- работа со строками и файлами
- функции и декораторы
- объекты и классы
- коллекции
- последовательности и циклы
- обработка ошибок
- модули и пакеты
- аргументы и конфиг-файлы программы
- многопоточность, сопрограммы, межпроцессное взаимодействие
- и какая-нибудь тема
по желанию трудящихся
Каждая тема авансом затрагивает другие, поэтому мы сперва будем узнавать необходимый минимум, а впоследствии углублённо изучать предмет. Так, простые программы
неизбежно затронут и циклы, и строки, и функции. Не придётся первые уроки решать задачки вида вывести 2+2
.
По каждой теме будут предложены домашние задания разной степени сложности - от разогревочных
(для проверки усвоения материала) до задач со звёздочкой
(где потребуется умение программировать вообще и доля смекалки).
Задача курса - изучение именно языка Python, его особенностей, фундамента и техники программирования.
Предполагается, что студенты знакомы с программированием в минимальном объёме: знают какой-нибудь из популярных языков программирования (Pascal, Javascript, даже Basic).
Критерии оценки каждой домашней работы
Всего в курсе запланировано 5 обязательных домашних заданий и 1 бонусное в конце семестра. Все задачи размещаются на платформе Stepik.org.
Каждая домашняя работа первично оценивается по шкале от 0 до 60 баллов. Балл складывается из прохождения тестов и ревью преподавателем.
40 баллов - своевременное правильное решение (все тесты выполнены) до мягкого дедлайна; 20 баллов - до жёсткого;
20 баллов – максимальный балл за ревью задачи, сданной до мягкого дедлайна; 10 баллов - максимальный балл за ревью задачи, сданной после мягкого дедлайна.
Далее оценка за домашнее задание переводится в 5-бальную шкалу:
ДЛЯ ЗАЧЁТА
Домашняя работа должна быть оценена не менее чем на 10 баллов. Как это можно получить:
сдать маленькие задачи и все до мягкого дедлайна;
либо одну большую до мягкого дедлайна;
либо одну большую до жёсткого дедлайна с ревью (и получить за него не менее 5 баллов).
ДЛЯ ОЦЕНКИ ХОРОШО
Домашняя работа должна быть оценена на балл из промежутка [30; 50).
ДЛЯ ОЦЕНКИ ОТЛИЧНО
Домашняя работа должна быть оценена на балл больше либо равный 50.
На исправление замечаний по ревью у вас есть одна попытка. Не забывайте присылать ссылки на решения больших задач, если хотите получить баллы за ревью.
Критерии получения финальной оценки за курс
В конце семестра одна домашняя работа с НАИХУДШИМ результатом не будет учитываться. Оценки за все остальные ДЗ складываются и делятся на 4. Так получается финальная оценка за курс.
В конце курса будет предложена бонусная домашняя работа. Оценка за неё добавится к сумме всех оценок, но не изменит кол-во дз, на которое сумма поделится. Тем самым сдача её на 4 или 5 гарантированно добавит балл к итоговой оценке.
Для наилучшего понимания схема получения оценки:
финальная оценка* $= \frac{\sum_{i=1}^4 \text{оценка за i-ую домашнюю работу}\quad+\quad\text{оценка за бонусное}}{4}$
*округление будет проходить в пользу студента.
Преподаватели
Список лекций
Знакомство с языком Python.
- Философия языка.
Zen of Python
. - Обзор синтаксиса.
Литературность
. - Компиляция и интерпретация.
- Среды программирования и исполнения.
- консоль
- командная строка
- IDE
- онлайн-интерпретаторы
- Области применения
Какой инструментарий нам потребуется для дальнейшей работы.
Для того, чтобы начать практическую работу, нам надо познакомиться:
- со встроенными типами данных и операциями над ними
- необходимыми синтаксическими конструкциями (переменные, ветвления, циклы, функции)
- операциями ввода-вывода
Также поговорим о переменных, объектах и значениях, об изменяемых и неизменяемых типах.
Более пристально посмотрим на строки.
- Типы строк, операции над ними.
- Кодировки и юникод.
- Способы форматирования.
- Базовая работа с файлами.
- Синтаксис определения и вызова функций.
- Правила видимости имён. Рекурсия.
- Вложенные функции.
- Функции высшего порядка.
- Модули operator и functools.
- Лямбда-выражения.
- Декораторы.
- Синтаксис определения классов
- Атрибуты и методы
- Специальные функции
- Наследование
- Множественное наследование
Коллекции. Итераторы и генераторы.
Исключения Менеджеры контекстов
try-except-finally with
Модули и пакеты.
Многозадачность.
Добавление отладочной информации в код.
doctest - простейшие юнит-тесты инлайн
unittest - юнит-тесты семейства xUnit
unittest.mock - механизм подстановки тестовых объектов и функций