Экзамен 22.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
|
[развернуть]
Программа экзамена
Экзамен состоит из двух задач, которые необходимо сдать в систему Яндекс.Контест и одного устного вопроса. Список вопросов указан ниже.
- Основные характеристики языка Python.
Сильные и слабые стороны. Парадигма программирования. Области применения. Архитектура программы. Дзен Python.
- Python – интерпретируемый язык.
Интерпретатор Python. Виртуальная машина Python.Отличие процесса интерпретации от компиляции. Байт код. Плюсы и минусы интерпретации. Переносимость программ на Python.
- Типы объектов в языке Python.
Числа, строки, кортежи, словари, множества, файлы. Рассказать коротко о каждом типе. Динамическая типизация.
- Основные конструкции языка.
Оператор присваивания. Условный оператор. Логические операторы. Операторы цикла. Полиморфизм операций.
- Числа в Python.
Изменяемые и неизменяемые объекты, отличия между ними в наборе операций. Типы int и float. Decimal. Операции с числами.
- Строки в Python.
Изменяемые и неизменяемые объекты, отличия между ними в наборе операций. Типы str и byte. Операции со строками. Встроенные методы.
- Списки и кортежи в Python.
Изменяемые и неизменяемые объекты, отличия между ними в наборе операций. Типы list и tuple. Операции со списками и кортежами. Встроенные методы. Генераторы списков.
- Множества в Python.
Изменяемые и неизменяемые объекты, отличия между ними в наборе операций. Тип set. Операции с множествами. Генераторы множеств.
- Словари в Python.
Изменяемые и неизменяемые объекты, отличия между ними в наборе операций. Тип dict. Операции со словарями. Генераторы словарей.
- Стиль программирования на Python.
Стиль программирования на Python (Стандарт PEP-8). Документирование кода. (Стандарт PEP-257). Дзен Python с примером.
- Функции.
Области видимости. Аргументы и способы их передачи. Анонимные Lambda-функции.
- Рекурсия.
Понятие рекурсии. Рекурсивные функции. Поиск чисел Фибоначчи с помощью рекурсии.
- Работа с файлом в Python.
Изменяемые и неизменяемые объекты, отличия между ними в наборе операций. Режимы работы с файлами. Текстовые и бинарные файлы. Открытие и закрытие файлов. Дисковые буферы.
- Модули в Python.
Инструкция import. Пути поиска модулей. Работа с библиотеками в Python. Обзор стандартной библиотеки Python.
- Сортировка методом пузырька.
Метод сортировки одномерных массивов (метод пузырька)
- Сортировка выбором.
Метод сортировки одномерных массивов (сортировка выбором)
- Сортировка вставками.
Метод сортировки одномерных массивов (сортировка вставками.)
- Сортировка слиянием.
Метод сортировки одномерных массивов (сортировка слиянием.)
- Поиск.
Понятие поиска. Алгоритмы поиска в одномерных массивов. Линейный и бинарный методы.
- Структура данных Стек.
Структуры данных. Отображение абстрактных структур данных на структуры данных хранения. Методы стека. Пример реализации на Python.
- Структура данных Очередь.
Структуры данных. Отображение абстрактных структур данных на структуры данных хранения. Методы очереди. Пример реализации на Python.
- Структура данных Дек.
Структуры данных. Отображение абстрактных структур данных на структуры данных хранения. Методы дека. Пример реализации на Python.
- Структура данных Куча.
Структуры данных. Отображение абстрактных структур данных на структуры данных хранения. Пример реализации на Python.
- Структура данных Граф.
Структуры данных. Отображение абстрактных структур данных на структуры данных хранения. Пример реализации на Python.
- Структура данных Дерево.
Структуры данных. Отображение абстрактных структур данных на структуры данных хранения. Пример реализации на Python.
- Алгоритм обхода графа в ширину.
Идея алгоритма. Код. Сложность. Разбор на примере.
- Алгоритм обхода графа в глубину.
Идея алгоритма. Код. Сложность. Разбор на примере.
- Подсчет числа компонент связности с помощью алгоритма обхода в глубину.
Идея алгоритма. Код. Сложность. Разбор на примере.
- Проверка графа на двудольность с помощью алгоритма обхода в глубину.
Идея алгоритма. Код. Сложность. Разбор на примере.
- Поиск цикла в ориентированном графе с помощью алгоритма обхода в глубину.
Идея алгоритма. Код. Сложность. Разбор на примере.
- Топологическая сортировка с помощью алгоритма обхода в глубину.
Идея алгоритма. Код. Сложность. Разбор на примере.
- Объектно-ориентированное программирование.
Принципы и понятия объектно-ориентированного программирования. Пример на Python.
- Объектно-ориентированное программирование.
Пространства имён в языке Python. Классы, экземпляры классов, конструкторы, свойства и методы.
- Объектно-ориентированное программирование.
Наследование, переопределение функций.
Домашние задания
На каждом практическом занятии (кроме первого и контрольной работы) студенты получают задачи, которые необходимо сдать ДО начала следующего практического занятия (то есть в течение недели). Каждая задача имеет определенную “стоимость” – максимальное количество баллов, которое возможно получить за ее решение.
Решенную задачу (код) необходимо загрузить в систему автоматического приема задач на 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) |
Кутылев, Папулин
|
Как происходит прием задач
- Написанный студентом код на языке программирования Python загружается им самостоятельно в систему автоматического приема задач на http://informatics.mccme.ru/.
- Система проверяет задачу, используя набор тестов и выдает результат проверки.
- Если автоматическая проверка пройдена, преподаватель осуществляет code review и выставляет конечную оценку за задачу, либо отправляет задачу на доработку (не более одного раза), снабдив замечаниями.
- Временем сдачи задачи считается время прохождения автоматической проверки (статус “ОК”). При получении задачи на доработку чтобы не потерять баллы студент должен повторно пройти автоматическую проверку в недельный срок с момента получения замечаний.
- За задачи, сданные позже срока, возможно получить не более половины баллов.
- Необходимо зайти на сайт http://informatics.mccme.ru/ и в боковом меню нажать ссылку Регистрация
- На открывшейся странице необходимо ввести:
- Логин и Пароль для авторизации в системе (придумайте и запомните),
- Ваши Фамилию, Имя, Отчество, Город (Москва), Страну (Россия).
- в поле email введите Вашу почту в домене @edu.hse.ru
- в поле Школа укажите Майнор ВШЭ – подгр. и номер Вашей подгруппы (например Майнор ВШЭ – подгр. 1) Класс 11 и год выпуска 2015
- Поставьте галочку что Вы не робот и нажмите кнопку Сохранить
- Далее в открывшемся окне введите Ваш логин и пароль и нажмите кнопку Вход.
- После удачной авторизации Вы будете перенаправлены на страницу курсов, можете найти в списке Курсов “Майнор ВШЭ” или пройти сразу на страницу http://informatics.mccme.ru/course/view.php?id=1128. По мере наступления практических занятий там будут появляться задачи.
Инструкции для студентов
- Регистрация в системе автоматического приема задач
- Установка среды разработки PyCharm
Полезные ссылки
Интерпретаторы
- Скачать Python 3.4 Windows (используется в курсе)
Среды разработки IDE
- Wing IDE 5.1.5 Windows
- PyCharm 4.5.3 Community Edition Windows
- PyCharm 4.5.4 Community Edition Mac OS X
Контроль версий
- GitHub Client Windows
- SourceTree Windows