We use cookies in order to improve the quality and usability of the HSE website. More information about the use of cookies is available here, and the regulations on processing personal data can be found here. By continuing to use the site, you hereby confirm that you have been informed of the use of cookies by the HSE website and agree with our rules for processing personal data. You may disable cookies in your browser settings.

  • A
  • A
  • A
  • ABC
  • ABC
  • ABC
  • А
  • А
  • А
  • А
  • А
Regular version of the site

Introduction into Python

2020/2021
Academic Year
RUS
Instruction in Russian
4
ECTS credits
Course type:
Compulsory course
When:
2 year, 1, 2 module

Instructors


Барашков Александр Валерьевич


Петровский Дмитрий Валерьевич

Программа дисциплины

Аннотация

Целью освоения дисциплины «Основы программирования на Python» является формирование у учащихся необходимых знаний, умений и навыков в области практического применения языка программирования (далее ЯП) Python. В задачи дисциплины входит изучение базовых основ ЯП; основ взаимодействия ЯП и операционной системы компьютера; понятия библиотек и пакетов; изучение сторонних, наиболее используемых библиотек; ознакомление с паттернами программирования и проектирования программ и модулей; изучение основ парадигмы объектно-ориентированного программирования.
Цель освоения дисциплины

Цель освоения дисциплины

  • Анализировать и понимать назначение программ, определенных участков программ, написанных третьими лицами
  • Модифицировать и вносить изменения в свободно распространяемые программы, написанные третьими лицами, с целью выполнения собственных практических задач
  • Создавать собственное программное обеспечение начального уровня для выполнения практических задач.
Планируемые результаты обучения

Планируемые результаты обучения

  • Студент понимает определение данных, знает их свойства, умеет выполнять простейшие операции над данными. Понимает назначение базовых функций, области, свойства их применения. Умеет работать с рядом типов массивов, проводить индексацию и срезы
  • Студент владеет понятиями и свойствами потока управления. Знает основы программной логики. Может использовать такие абстракции как цикл, вложенность. Знает различные способы создания циклов.
  • Студент различает разные области видимости переменных, знает их свойства. Знает основы создания пользовательских функций, умеет их конструировать. Знает основы функционального программирования. Обладает пониманием определения, свойств, особенностей применения генераторов.
  • Студент знает свойства файловой системы, умеет связывать действия в программной оболочке с файловой системой. Умеет сохранять результаты работы созданных программ, умеет модифицировать существующие файлы, умеет удалять файлы.
  • Студент понимает необходимость применения сторонних библиотек. Знает основные сторонние библиотеки. Знает их свойства, основы синтаксиса. Умеет писать программы с использованием как ядра языка, так и совместно с использованием сторонних библиотек.
  • Студент знает основы объектно-ориентированного программирования. Области применения данного подхода, его положительные и отрицательные стороны. Понимает определения и свойства классов, умеет создавать пользовательские классы, умеет модифицировать существующие классы. Обладает пониманием и умеет использовать атрибуты объектов. Знает и умеет применять основные способы взаимодействия классов.
  • Студент понимает функции высшего порядка как более высокий уровень абстракции. Умеет использовать функции, как аргументы других функций. Умеет изменять поведение функций с помощью других функций.
  • Студент знает основы ядра языка, умеет понимать и анализировать код, написанный третьими лицами. Знает синтаксис, области применения и ограничения сторонних библиотек. Знает и умеет применять основы объектно-ориентированного программирования для написания программ. Понимает различные уровни абстракции при написании программ. Понимает необходимость использования определённых техник программирования и уровней абстракций в зависимости от задачи.
Содержание учебной дисциплины

Содержание учебной дисциплины

  • Введение в дисциплину, предмет и задачи, формы контроля, информационные источники, понятийный аппарат
    Введение в дисциплину, предмет и задачи освоения дисциплины структура дисциплины. Введение в предмет программирования, определение ЯП и цели их использования. Понятие уровней ЯП, области и сферы применения различных ЯП. Python как ЯП, обзор областей применения языка
  • Python как язык программирования, базовые функции, свойства данных, операции с данными, индексация и срезы.
    Тема 1. Понятие данных, движение данных в Python; понятие программной оболочки; основы синтаксиса языка; типы данных; базовые операци обзор базовых команд/функций; понятие типизации; библиотеки и модули; определение переменной/объека; типы переменных/объектов: множества, списки, кортеж, словари, строки; массивы; свойства типов объектов и их области применения; упорядоченность, итерируемость, уникальность; распаковка некоторых типов объектов, одновременное присваивание. Тема 2. Индексация итерируемых объектов; понятия среза; типы срезов; старт-стоп-шаг среза; понятия оригинала и копии объекта; свойства работы с оригиналом и копией объекта; строка как объект; матрицы; вложенные конструкции; работа с вложенными конструкциями.
  • Поток управления, программная логика, циклы for и while, вложенные циклы, lists comprehension.
    Тема 1. Поток управления; понятие потока управления; программная логика; if-elif-else выражения; свойства if-elif-else выражений; ограничения if-elif-else выражений; понятие ветвления логики; понятие итератора в рамках потока управления; понятие циклов; свойства циклов; циклы с пред и пост условиями; цикл while; свойства цикла while; понятие области видимости; понятие счетчиков. Тема 2. Цикл for; свойства цикла for; особенности доступа к объектам в цикле for; итераторы в цикле for; обзор и области применения функции enumerate; Проблемы использования циклов; эффективность циклов. Тема 3. Понятие вложенных циклов; области применения вложенных циклов; ограничения использования вложенных циклов; понятие lists comprehension, области использования, свойства, преимущества, недостатки.
  • Области видимости, пользовательские функции и их свойства, основы функционального программирования, генераторы.
    Тема 1. Понятие пользовательской функции; отличие от базовых функций; функция, как уровень абстракции; синтаксис для создания пользовательских функций; определение заголовка и тела функции; аргументы функции: позиционные и именные аргументы функции; аргументы функции по умолчанию. Тема 2. Области видимости: локальная, нелокальная, глобальная; функции, как объекты; понятие анонимных (lambda) функций; свойства анонимных функций; области применения анонимных функций; ограничения анонимных функций; понятие каррирования функций; области применения каррирования функций; ограничения каррирования функций. Тема 3. Введение в функциональное программирование; понятие функционального программирования; области применения функционального программирования, ограничения функционального программирования; использование конструкций map и filter. Тема 4. Понятие генератора; применение генераторов; отличие генераторов от обычных циклов/функций; возможности и ограничения генераторов, методы next, stopiter, выражение yeild. Понятие параллельности и сопрограмм.
  • Файловая система и работа с файлами, создание, удаление, чтение, модификация файлов.
    Тема 1. Файлы и работа с файлами; понятие ссылок на файлы; команда open; свойства команды open; режимы чтения файлов; создание и редактирование файлов; закрытие файлов; понятие менеджеров контекста; использование менеджеров контекста для работы с файлами.
  • Библиотеки сторонних разработчиков. Введение в numpy, введение в matplotlib, введение в pandas.
    Тема 1. Введение в numpy; назначение библиотеки; области применения библиотеки; особенности работы библиотеки; скорость работы основных функций библиотеки; понятие numpy-объекта; основные функции в numpy; простейшее арифметические операции в numpy; принцип векторизованных вычислений; индексирование и срезы numpy-объектов; транспонирование и изменение формы numpy-объектов. Тема 2. Элементы линейной алгебры в numpy; генерация случайный чисел в numpy; основные функции и распределения случайных величин в numpy; блокировка генератора случайных чисел; случайные блуждания. Тема 3. Библиотека matplotlib и визуализация объектов; построение простейших графиков; работа с осями, надписями, названиями графиков; цвета объектов, маркеры, стиль линий; сохранение рисунков на диск; форматы рисунков; качество рисунков. Тема 4. Введение в pandas; назначение библиотеки; области применения библиотеки; особенности работы библиотеки; основные типы объектов в pandas; Seires и DataFrame объекты; индексирование и срезы pandas – объектов; функции loc и iloc; выбор и фильтрация элементов. Тема 5. Импортирование и экспортирование объектов с использованием pandas; чтение данных; обзор функции чтения (таких как: read_csv, read_excel и прочие); свойства этих функций; запись данных в файл с помощью пакета pandas.
  • Основы объектно-ориентированного программирования, атрибуты, классы, наследование классов, взаимодействие классов.
    Тема 1. Введение в объектно-ориентированное программирование; понятие объекта; понятия атрибутов и методов; свойства атрибутов и методов; понятие объектно-ориентированного программирования; понятие класса; основные свойства объектно-ориентированного программирования: инкапсуляция, абстракция, наследование, полимрфизм; преимущества объектно-ориентированного программирования; простейшие классы. Тема 2. Определения конструктора класса; свойства конструктора класса; ввод информации об объекте; представление и улучшение читаемости объектов класса: методы __str__ и __repr__; уровни атрибутов: публичные, приватные, защищенные атрибуты; свойства уровней атрибутов; области применения уровней атрибутов; проблемы использования уровней атрибутов; понятие деструкторов; использование деструкторов. Тема 3. Понятие наследования классов; области применения наследования классов; основные свойства наследования классов; понятие переопределения операторов; свойства переопределения операторов; изменение конструктора класса.
  • Функции высшего порядка, декораторы.
    Тема 1. Функции высшего порядка; определение и свойства функций высшего порядка; вложенные функции; использование вложенных функций; функции как аргументы; понятие проброса аргументов и функций; определение декоратора; области применения декораторов; создание простейших декораторов; декорирование и синтаксис; декорирования сторонних функций.
  • Итоговый контроль
Элементы контроля

Элементы контроля

  • неблокирующий Текущий контроль
  • неблокирующий Экзамен
    Экзамен проводится виде теста с использованием асинхронного прокторинга. В тесте присутсвуют как впоросы с единственным выбором, так и такие типы вопросов как: множественный выбор, открытый вопрос. Экзамен проводится на платформе Moodle (https://et.hse.ru), прокторинг на платформе Экзамус (https://hse.student.examus.net). К экзамену необходимо подключиться за 15 минут. На платформе Экзамус доступно тестирование системы. Компьютер студента должен удовлетворять следующим требованиям: https://elearning.hse.ru/data/2020/05/07/1544135594/Технические%20требования%20к%20ПК%20студента.pdf) Для участия в экзамене студент обязан: заранее зайти на платформу прокторинга, провести тест системы, включить камеру и микрофон, подтвердить личность. Во время экзамена студентам запрещено: общаться (в социальных сетях, с людьми в комнате), списывать. Во время экзамена студентам разрешено: пользоваться VS Code для выполнения конкретных заданий. Кратковременным нарушением связи во время экзамена считается прерывание связи до 10 минут. Долговременным нарушением связи во время экзамена считается прерывание связи 10 минут и более. При долговременном нарушении связи студент не может продолжить участие в экзамене. Процедура пересдачи аналогична процедуре сдачи.
Промежуточная аттестация

Промежуточная аттестация

  • Промежуточная аттестация (2 модуль)
    Расчет результирующей оценки по дисциплине производится следующим образом: О_резулт=0,3*О_(накопленная итоговая)+0,7*О_(итоговый экзамен) (1) Где: О_резулт – результирующая оценка по дисциплине за все этапы прохождения дисциплины; О_(накопленная итоговая) – итоговая накопленная оценка за все этапы, предусмотренные дисциплиной; О_(итоговый экзамен) - оценка за итоговый экзамен. Расчет итоговой оценки за все этапы производится по формуле (2): О_(накопленная итоговая)=(О_(промежуточная 1)+О_(промежуточная 2))/2 (2) Где: О_(промежуточная 1) – промежуточная оценка первого этапа освоения дисциплины; О_(промежуточная 2) – промежуточная оценка второго этапа освоения дисциплины. В свою очередь, промежуточная оценка для каждого их этапов освоения дисциплины рассчитывается с использованием формул (3, 4). О_(промежуточная 1)=0,4*О_НИЗ1+0,6*О_КР1 (3) Где: О_НИЗ1 – накопленная оценка за индивидуальные задания на первом этапе освоения дисциплины, О_КР1 - оценка за контрольную работу на первом этапе освоения дисциплины. О_(промежуточная 2)=0,4*О_НИЗ2+0,6*О_КР2 (4) Где: О_НИЗ2 – накопленная оценка за индивидуальные задания на втором этапе освоения дисциплины, О_КР2 - оценка за контрольную работу на втором этапе освоения дисциплины. Накопленные оценки за индивидуальные задания по каждому из этапов освоения дисциплины рассчитываются по формулам (5, 6) соответственно. О_НИЗ1=∑О_i /n (5) Где: О_i – оценка за текущее задание на первом этапе освоения дисциплины, n – итоговое количество заданий, предусматриваемых для обязательного выполнения на первом этапе освоения дисциплины. О_НИЗ2=∑О_i /n (6) Где: О_i – оценка за текущее задание на первом втором этапе освоения дисциплины. n – итоговое количество заданий, предусматриваемых для обязательного выполнения на втором этапе освоения дисциплины.
Список литературы

Список литературы

Рекомендуемая основная литература

  • Лучано Рамальо - Python. К вершинам мастерства - Издательство "ДМК Пресс" - 2016 - 768с. - ISBN: 978-5-97060-384-0 - Текст электронный // ЭБС ЛАНЬ - URL: https://e.lanbook.com/book/93273
  • Федоров Д. Ю. - ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ ВЫСОКОГО УРОВНЯ PYTHON 2-е изд., пер. и доп. Учебное пособие для прикладного бакалавриата - М.:Издательство Юрайт - 2019 - 161с. - ISBN: 978-5-534-10971-9 - Текст электронный // ЭБС ЮРАЙТ - URL: https://urait.ru/book/programmirovanie-na-yazyke-vysokogo-urovnya-python-437489