Майнор Интеллектуальный анализ данных/Введение в программирование

Материал из Wiki - Факультет компьютерных наук
Версия от 15:34, 21 декабря 2015; Sakutylev (обсуждение | вклад)

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

Курс "Введение в программирование" в майноре "Интеллектуальный анализ данных"

О курсе

Курс посвящён изучению основ и методологии программирования на основе языка Python, который широко используется для разработки и реализации методов анализа данных. Рассматриваются основные структуры и алгоритмы, работа с данными разного вида (тексты, бинарные файлы, изображения), создание графических пользовательских интерфейсов, инструменты и средства разработки и отладки программ.

Читается: 1-2 модуль 2 курса, 2015/2016 учебный год.
Пререквизиты: Нет
Трудоемкость: 5 кредитов

Продолжительность

Всего: 60 аудиторных часов:
Из них:

  • 30 часов лекций
  • 30 часов практических занятий
Формы контроля
  • контрольная работа
  • домашнее задание
  • экзамен

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

  1. Вознесенская Тамара Васильевна,
    Доцент, ведёт лекционные и практические занятия
  2. Паринов Андрей Андреевич,
    Старший преподаватель, ведёт практические занятия
  3. Яворский Ростислав Эдуардович,
    Доцент, ведёт практические занятия
  4. Кашницкий Юрий Савельевич,
    Преподаватель, ведёт практические занятия
  5. Кутылев Сергей Александрович,
    Преподаватель, ведёт практические занятия
  6. Бартунов Сергей Олегович,
    Преподаватель, ведёт практические занятия
  7. Щуров Илья Валерьевич,
    Доцент, ведёт практические занятия
  8. [# Зиннурова Эльвира Альбертовна],
    Преподаватель, ведёт практические занятия
  9. [# Папулин Сергей],
    Преподаватель, ведёт практические занятия
  10. Панов Александр,
    Преподаватель, ведёт практические занятия

Учебный процесс

Расписание занятий
Пара Группа Преподаватель Группа Преподаватель Группа Преподаватель Группа Преподаватель Группа Преподаватель
3 12.10-13.30 ПЗ 1 подгр. (ауд.3214) Яворский ПЗ 2 подгр. (ауд.4335) Папулин ПЗ 3 подгр. (ауд.4336) Кутылев ПЗ 4 подгр. (ауд.4427) Вознесенская ПЗ 5 подгр (ауд.4428) Паринов
4 13.40-15.00 ПЗ 11 подгр. (ауд.3214) Кашницкий ПЗ 12 подгр. (ауд.4335) Яворский ПЗ 13 подгр. (ауд.4336) Щуров ПЗ 14 подгр. (ауд.4427) Папулин ПЗ 15 подгр (ауд.4428) Зиннурова
5 15.10-16.30 ПЗ 6 подгр. (ауд.3214) Кашницкий ПЗ 7 подгр. (ауд.4335) Кутылев ПЗ 8 подгр. (ауд.4336) Панов ПЗ 9 подгр. (ауд.4427) Папулин ПЗ 10 подгр (ауд.4428) Зиннурова
6 16.40-18.00 ПЗ 16 подгр. (ауд.3214) Бартунов ПЗ 17 подгр. (ауд.4335) Зиннурова ПЗ 18 подгр. (ауд.4336) Кутылев ПЗ 19 подгр. (ауд.4427) Папулин ПЗ 20 подгр (ауд.4428) Вознесенская
Программа лекций
  1. Лекция 01.09.2015
    Особенности языка Python. Области применения. Структура программы. Модули. Скачать PDF
  2. Лекция 08.09.2015
    Введение в типы объектов языка Python. Числа, строки, списки, кортежи, словари, множества, файлы. Операции с объектами. Скачать PDF, Скачать py
  3. Лекция 15.09.2015
    Числа. Динамическая типизация. Оператор присваивания. Условный оператор. Логические операторы. Операторы цикла. Скачать PDF Скачать py
  4. Лекция 22.09.2015
    Последовательности: строки, списки, кортежи.Скачать PDF, Скачать py
  5. Лекция 29.09.2015
    Словари. Стиль программирования на Python (Стандарт PEP-8). Документирование кода. (Стандарт PEP-257). Скачать PDF
  6. Лекция 06.10.2015
    Функции. Рекурсия. Скачать PDF
  7. Лекция 13.10.2015
    Работа с библиотеками. Обзор стандартной библиотеки Pyhton. Работа с текстовыми и бинарными файлами. Скачать PDF
  8. Лекция 20.10.2015
    Организация взаимодействия с пользователем. Интерфейсы. Web-разработка. Скачать PDF Скачать py
  9. Лекция 03.11.2015
    Cортировка одномерных массивов: метод пузырька, сортировка выбором, вставками, слиянием. Оценка сложности алгоритмов.Скачать PDF
  10. Лекция 10.11.2015
    Алгоритмы поиска в одномерных массивах. Линейный и бинарный методы. Скачать PDF Скачать PDF
  11. Лекция 17.11.2015
    Структуры данных. Отображение абстрактных типов данных на структуры данных хранения. Стек, очередь, куча, дерево, граф. Скачать PDF
  12. Лекция 24.11.2015
    Алгоритмы на графах. Обход в глубину и в ширину.Скачать PDF
  13. Лекция 01.12.2015
    Основные принципы ООП.
  14. Лекция 08.12.2015
    Основы ООП -2.
  15. Лекция 15.12.2015
    Отладка и профилирование программы. Обработка исключений.


Программа практических занятий
  1. Практическое занятие 01.09.2015
    Стандартный инструментарий программиста. Знакомство c интерпретатором и со средами разработки PyCharm и Wing IDE 101. Первая программа «Hello, world!».
  2. Практическое занятие 08.09.2015
    Простые задачи. Целые числа. Условный оператор
  3. Практическое занятие 15.09.2015
    Условный оператор. Циклы.
  4. Практическое занятие 22.09.2015
    Строки. Списки. Алгоритмы на строках.
  5. Практическое занятие 29.09.2015
    Словари. Множества.
  6. Практическое занятие 06.10.2015
    Функции. Рекурсия.
  7. Практическое занятие 13.10.2015
    Работа с файлами. Разбор примеров плохого и хорошего стилей программирования.
  8. Практическое занятие 20.10.2015
    Контрольная работа.
  9. Практическое занятие 03.11.2015
    Методы сортировки.
  10. Практическое занятие 10.11.2015
    Задачи на линейный и бинарный поиск.
  11. Практическое занятие 17.11.2015
    Задачи на использование различных структур данных хранения.
  12. Практическое занятие 24.11.2015
    Элементарные задачи на графы. Способы задания графов.
  13. Практическое занятие 01.12.2015
    Обход в глубину. Обход в ширину.
  14. Практическое занятие 08.12.2015
    Разбор готовых примеров ООП.
  15. Практическое занятие 15.12.2015
    Разбор интересных задач.
Расписание экзамена
Начало аудитория Группа
10.30 4335 ИАД-4, ИАД-16, ИАД-20
10.30 4336 ИАД-2, ИАД-9, ИАД-11, ИАД-14, ИАД-19
12.10 4335 ИАД-10, ИАД-15, ИАД-17
12.10 4336 ИАД-1, ИАД-3, ИАД-8, ИАД-13, ИАД-18
Программа экзамена

Экзамен состоит из двух задач, которые необходимо сдать в систему Яндекс.Контест и одного устного вопроса. Список вопросов указан ниже.

  1. Основные характеристики языка Python.
    Сильные и слабые стороны. Парадигма программирования. Области применения. Архитектура программы. Дзен Python.
  2. Python – интерпретируемый язык.
    Интерпретатор Python. Виртуальная машина Python.Отличие процесса интерпретации от компиляции. Байт код. Плюсы и минусы интерпретации. Переносимость программ на Python.
  3. Типы объектов в языке Python.
    Числа, строки, кортежи, словари, множества, файлы. Рассказать коротко о каждом типе. Динамическая типизация.
  4. Основные конструкции языка.
    Оператор присваивания. Условный оператор. Логические операторы. Операторы цикла. Полиморфизм операций.
  5. Числа в Python.
    Изменяемые и неизменяемые объекты, отличия между ними в наборе операций. Типы int и float. Decimal. Операции с числами.
  6. Строки в Python.
    Изменяемые и неизменяемые объекты, отличия между ними в наборе операций. Типы str и byte. Операции со строками. Встроенные методы.
  7. Списки и кортежи в Python.
    Изменяемые и неизменяемые объекты, отличия между ними в наборе операций. Типы list и tuple. Операции со списками и кортежами. Встроенные методы. Генераторы списков.
  8. Множества в Python.
    Изменяемые и неизменяемые объекты, отличия между ними в наборе операций. Тип set. Операции с множествами. Генераторы множеств.
  9. Словари в Python.
    Изменяемые и неизменяемые объекты, отличия между ними в наборе операций. Тип dict. Операции со словарями. Генераторы словарей.
  10. Стиль программирования на Python.
    Стиль программирования на Python (Стандарт PEP-8). Документирование кода. (Стандарт PEP-257). Дзен Python с примером.
  11. Функции.
    Области видимости. Аргументы и способы их передачи. Анонимные Lambda-функции.
  12. Рекурсия.
    Понятие рекурсии. Рекурсивные функции. Поиск чисел Фибоначчи с помощью рекурсии.
  13. Работа с файлом в Python.
    Изменяемые и неизменяемые объекты, отличия между ними в наборе операций. Режимы работы с файлами. Текстовые и бинарные файлы. Открытие и закрытие файлов. Дисковые буферы.
  14. Модули в Python.
    Инструкция import. Пути поиска модулей. Работа с библиотеками в Python. Обзор стандартной библиотеки Python.
  15. Сортировка методом пузырька.
    Метод сортировки одномерных массивов (метод пузырька)
  16. Сортировка выбором.
    Метод сортировки одномерных массивов (сортировка выбором)
  17. Сортировка вставками.
    Метод сортировки одномерных массивов (сортировка вставками.)
  18. Сортировка слиянием.
    Метод сортировки одномерных массивов (сортировка слиянием.)
  19. Поиск.
    Понятие поиска. Алгоритмы поиска в одномерных массивов. Линейный и бинарный методы.
  20. Структура данных Стек.
    Структуры данных. Отображение абстрактных структур данных на структуры данных хранения. Методы стека. Пример реализации на Python.
  21. Структура данных Очередь.
    Структуры данных. Отображение абстрактных структур данных на структуры данных хранения. Методы очереди. Пример реализации на Python.
  22. Структура данных Дек.
    Структуры данных. Отображение абстрактных структур данных на структуры данных хранения. Методы дека. Пример реализации на Python.
  23. Структура данных Куча.
    Структуры данных. Отображение абстрактных структур данных на структуры данных хранения. Пример реализации на Python.
  24. Структура данных Граф.
    Структуры данных. Отображение абстрактных структур данных на структуры данных хранения. Пример реализации на Python.
  25. Структура данных Дерево.
    Структуры данных. Отображение абстрактных структур данных на структуры данных хранения. Пример реализации на Python.
  26. Алгоритм обхода графа в ширину.
    Идея алгоритма. Код. Сложность. Разбор на примере.
  27. Алгоритм обхода графа в глубину.
    Идея алгоритма. Код. Сложность. Разбор на примере.
  28. Подсчет числа компонент связности с помощью алгоритма обхода в глубину.
    Идея алгоритма. Код. Сложность. Разбор на примере.
  29. Проверка графа на двудольность с помощью алгоритма обхода в глубину.
    Идея алгоритма. Код. Сложность. Разбор на примере.
  30. Поиск цикла в ориентированном графе с помощью алгоритма обхода в глубину.
    Идея алгоритма. Код. Сложность. Разбор на примере.
  31. Топологическая сортировка с помощью алгоритма обхода в глубину.
    Идея алгоритма. Код. Сложность. Разбор на примере.
  32. Объектно-ориентированное программирование.
    Принципы и понятия объектно-ориентированного программирования. Пример на Python.
  33. Объектно-ориентированное программирование.
    Пространства имён в языке Python. Классы, экземпляры классов, конструкторы, свойства и методы.
  34. Объектно-ориентированное программирование.
    Наследование, переопределение функций.
Домашние задания

На каждом практическом занятии (кроме первого и контрольной работы) студенты получают задачи, которые необходимо сдать ДО начала следующего практического занятия (то есть в течение недели). Каждая задача имеет определенную “стоимость” – максимальное количество баллов, которое возможно получить за ее решение. Решенную задачу (код) необходимо загрузить в систему автоматического приема задач на http://informatics.mccme.ru/.

От недостающего количества баллов за задание позже срока можно получить не более половины: например, если за семинар нужно набрать 15 баллов, в срок студент набрал 9, тогда позже срока он может набрать не более, чем (15-9)/ 2=3. Во втором модуле уже нельзя сдавать задачи за первый. При накопленной оценке от 8 и выше возможно получение автомата. Данное условие является необходимым, но не достаточным.

Контрольная работа

Контрольная работа будет проходить на Практическом занятии №8 - 20.10.2015.
В работе будет 5 задач, разной степени сложности, причем вводится ограничение на загрузку решения одной задачи - не более 5 посылок. (верное решение задачи в 6-ой посылке не засчитывается, как правильное)
Разрешается: Пользоваться своими семинарами, наработкой исходных кодов, документацией и справочной информацией.
Запрещается: Пользоваться чужими решениями, использовать для получения помощи мессенджеры и социальные сети, электронную почту. (студент, уличенный в списывании, удаляется с контрольной)
Решение на Задачи можно посылать только во временной промежуток семинара. По окончанию семинара посылки не принимаются.
Если студент не может присутствовать на контрольной работе по уважительной причине (например болезнь), необходимо заранее предупредить об этом своего преподавателя, а по факту выздоровления предоставить справку и написать контрольную работу в другой день (не в день майнора) в корпусе Факультета компьютерных наук, по адресу Кочновский проезд д.3 (дни пересдачи будут обозначены позднее).
Если студент пишет контрольную работы на оценку неудовлетворительно (0-3), есть возможность также переписать контрольную работу в день пересдачи (переписывание не возможно на полный бал)

Внимание! Контрольная работа для групп 4, 5, 9, 10, 14, 15, 19, 20 будет проходить в других аудиториях. Смотрите таблицу ниже.

Пара Группа Преподаватель Группа Преподаватель Группа Преподаватель
3 12.10-13.30 ПЗ 1 подгр. (ауд.3214) Яворский ПЗ 2, 5 подгр. (ауд.4335) Папулин, Паринов ПЗ 3, 4 подгр. (ауд.4336) Кутылев, Вознесенская
4 13.40-15.00 ПЗ 11 подгр. (ауд.3214) Кашницкий ПЗ 12, 15 подгр. (ауд.4335) Яворский, Зиннурова ПЗ 13, 14 подгр. (ауд.4336) Щуров, Папулин
5 15.10-16.30 ПЗ 6 подгр. (ауд.3214) Кашницкий ПЗ 7, 10 подгр. (ауд.4335) Кутылев, Зиннурова ПЗ 8, 9 подгр. (ауд.4336) Панов, Папулин
6 16.40-18.00 ПЗ 16 подгр. (ауд.3214) Бартунов ПЗ 17, 20 подгр. (ауд.4335) Зиннурова, Вознесенская ПЗ 18, 19 подгр. (ауд.4336) Кутылев, Папулин
Как происходит прием задач
  1. Написанный студентом код на языке программирования Python загружается им самостоятельно в систему автоматического приема задач на http://informatics.mccme.ru/.
  2. Система проверяет задачу, используя набор тестов и выдает результат проверки.
  3. Если автоматическая проверка пройдена, преподаватель осуществляет code review и выставляет конечную оценку за задачу, либо отправляет задачу на доработку (не более одного раза), снабдив замечаниями.
  4. Временем сдачи задачи считается время прохождения автоматической проверки (статус “ОК”). При получении задачи на доработку чтобы не потерять баллы студент должен повторно пройти автоматическую проверку в недельный срок с момента получения замечаний.
  5. За задачи, сданные позже срока, возможно получить не более половины баллов.
Как зарегистрировать учетную запись на http://informatics.mccme.ru/.
  1. Необходимо зайти на сайт http://informatics.mccme.ru/ и в боковом меню нажать ссылку Регистрация
  2. На открывшейся странице необходимо ввести:
    1. Логин и Пароль для авторизации в системе (придумайте и запомните),
    2. Ваши Фамилию, Имя, Отчество, Город (Москва), Страну (Россия).
    3. в поле email введите Вашу почту в домене @edu.hse.ru
    4. в поле Школа укажите Майнор ВШЭ – подгр. и номер Вашей подгруппы (например Майнор ВШЭ – подгр. 1) Класс 11 и год выпуска 2015
    5. Поставьте галочку что Вы не робот и нажмите кнопку Сохранить
  3. Далее в открывшемся окне введите Ваш логин и пароль и нажмите кнопку Вход.
  4. После удачной авторизации Вы будете перенаправлены на страницу курсов, можете найти в списке Курсов “Майнор ВШЭ” или пройти сразу на страницу http://informatics.mccme.ru/course/view.php?id=1128. По мере наступления практических занятий там будут появляться задачи.

Инструкции для студентов

  1. Регистрация в системе автоматического приема задач
  2. Установка среды разработки PyCharm

Полезные ссылки

Интерпретаторы

  1. Скачать Python 3.4 Windows (используется в курсе)

Среды разработки IDE

  1. Wing IDE 5.1.5 Windows
  2. PyCharm 4.5.3 Community Edition Windows
  3. PyCharm 4.5.4 Community Edition Mac OS X

Контроль версий

  1. GitHub Client Windows
  2. SourceTree Windows