• A
  • A
  • A
  • АБВ
  • АБВ
  • АБВ
  • А
  • А
  • А
  • А
  • А
Обычная версия сайта

Основы программирования на Python

2020/2021
Учебный год
RUS
Обучение ведется на русском языке
4
Кредиты
Статус:
Курс обязательный
Когда читается:
2-й курс, 1, 2 модуль

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


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


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

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

Аннотация

Целью освоения дисциплины «Основы программирования на 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