Программирование на 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}$

*округление будет проходить в пользу студента.

Преподаватели

Список лекций

Лекция 1. Вводная.

Знакомство с языком Python.

  • Философия языка. Zen of Python.
  • Обзор синтаксиса. Литературность.
  • Компиляция и интерпретация.
  • Среды программирования и исполнения.
    • консоль
    • командная строка
    • IDE
    • онлайн-интерпретаторы
  • Области применения

Какой инструментарий нам потребуется для дальнейшей работы.

Лекция 2. Простые программы.

Для того, чтобы начать практическую работу, нам надо познакомиться:

  • со встроенными типами данных и операциями над ними
  • необходимыми синтаксическими конструкциями (переменные, ветвления, циклы, функции)
  • операциями ввода-вывода

Также поговорим о переменных, объектах и значениях, об изменяемых и неизменяемых типах.

Лекция 3. Строки и ввод-вывод

Более пристально посмотрим на строки.

  • Типы строк, операции над ними.
  • Кодировки и юникод.
  • Способы форматирования.
  • Базовая работа с файлами.
Лекция 4. Функции и декораторы
  • Синтаксис определения и вызова функций.
  • Правила видимости имён. Рекурсия.
  • Вложенные функции.
  • Функции высшего порядка.
  • Модули operator и functools.
  • Лямбда-выражения.
  • Декораторы.
Лекция 5. Классы
  • Синтаксис определения классов
  • Атрибуты и методы
  • Специальные функции
  • Наследование
  • Множественное наследование
Лекция 6-7. Коллекции, итераторы, генераторы

Коллекции. Итераторы и генераторы.

Лекция 8. Обработка исключений

Исключения Менеджеры контекстов

try-except-finally with

Лекция 10-11

Модули и пакеты.

Многозадачность.

Лекция 12. Юнит-тесты.

Добавление отладочной информации в код.

doctest - простейшие юнит-тесты инлайн

unittest - юнит-тесты семейства xUnit

unittest.mock - механизм подстановки тестовых объектов и функций