ОиМП-2015
Основы и методология программирования, 2015 год, базовый поток, 1-2 модули
Лектор: к. ф.-м. н. А. И. Зобнин
Лекции: вторник (еженедельно), 1-я пара, ауд. 622;
пятница (четные недели), 1-я пара, ауд. 622.
Контрольные работы
Контрольная работа №2 (C++)
Работа состоится на неделе после 16 ноября.
Переписывание контрольной работы №2 состоится 5 декабря на четвёртой паре (в 13:40). Аудитории: 503, 513, 412, 327. Собираемся у аудитории 503!
Оценка за переписывание (для тех, кто уже писал основной вариант контрольной) ставится по следующей схеме:
3 задачи - не более 7 баллов 2 задачи - не более 6 баллов 1 задача - не более 4 баллов
Экзамен
Экзамен по курсу состоится в среду, 23 декабря. Продолжительность экзамена - 2 часа.
Формула максимально возможной оценки: 2 + 2n (где n - количество успешно сданных в систему задач), если n > 0.
Распределение групп по аудиториям:
Первая смена: 10:00
152-1 | 501 |
152-2 | 503 |
154-1 | 505 |
154-2 | 513 |
155-1 | 327 |
155-2 | 301 |
Вторая смена: 12:20
156-1 | 501 |
156-2 | 503 |
157-1 | 505 |
157-2 | 513 |
158-1 | 327 |
158-2 | 301 |
Контрольная работа №1 (python)
Домашние задания
- [Домашняя работа №2] Дедлайн - четверг, 12 ноября (включительно).
- [Домашняя работа №3] Старт - 4 декабря после 1-й пары (в 10:20). Дедлайн - понедельник, 14 декабря (включительно).
Выберите свой вариант задачи с помощью следующей функции:
def generate(key, problems=4, variants=4): r = 0 for c in key: r += ord(c) result = [] for j in range(problems): result.append(chr(ord('A') + j) + str(r % variants + 1)) r //= variants return result
В качестве ключа укажите ей свой логин от системы Яндекс.Контест + пробел + пароль от системы Яндекс.Контест.
В некоторых группах (по усмотрению преподавателей) решения следует сдавать непосредственно в систему [Anytask] (в третьем домашнем задании у файлов должно быть расширение .h). Получить инвайт для регистрации в этой системе вы можете у преподавателей своей группы.
Краткое содержание прочитанных лекций
- 04.09.2015. Hello, world! Интерпретатор python в режиме калькулятора. Арифметические операции. Типы int, float, complex, bool. Функции print и input. Строки. Списки. Функция len. Срезки в строках и списках. Функции split и join. Итерация с помощью цикла for. [Код, написанный на лекции (по техническим причинам использовали python2)].
- 08.09.2015. Цикл for. Функция range. Цикл while. Условный оператор if/elif/else. Раздел else в циклах. Кортежи, словари и множества. Задача о частотном словаре символов в строке. [Код, написанный на лекции]
- 11.09.2015. Чтение строк из стандартного ввода с помощью sys.stdin. Задача о частотном словаре слов. Функции. Функция map. Сортировка списка по указанному ключу. Лямбда-функции. [Код, написанный на лекции]
- 15.09.2015. Еще раз о сортировке по ключам и лямбда-функциях. Двумерные массивы (списки списков). Транспонирование матрицы. Функция zip. Функции с переменным числом аргументов и именованные параметры. [Код, написанный на лекции]
- 22.09.2015. Модуль itertools: функции permutations, combinations, product, cycle. Генераторы и оператор yield. Модуль collections и классы defaultdict и Counter. [Код, написанный на лекции]
- 25.09.2015. Модуль re и знакомство с регулярными выражениями. Модуль urllib.request и скачивание ресурсов из сети. Модуль datetime. Форматированный вывод с помощью str.format. [Код, написанный на лекции]
- 29.09.2015. Пространства имен. Классы и объекты в python'е. [Код, написанный на лекции]
- 06.10.2015. Разбор первого домашнего задания. Дзен питона.
- 09.10.2015. C++: ввод-вывод, условный оператор, циклы, оператор switch. Знакомство с std::vector. [Код, написанный на лекции]
- 13.10.2015. Шаблон std::vector. [Код, написанный на лекции]
- 20.10.2015. Приоритет операторов. Функции. Передача параметров в функции по константной ссылке. [Код, написанный на лекции]
- 22.10.2015. Структуры. Сортировка с пользовательской функцией сравнения. Оператор sizeof. Стек и динамическая память (куча). Указатели. [Код, написанный на лекции]
- 03.11.2015. Выделение и освобождение динамической памяти. Низкоуровневые массивы. Null-terminated strings. [Код, написанный на лекции]
- 06.11.2015. Null-terminated strings, функции strlen и strcpy. Сравнение статических массивов, динамических массивов и обёрток над ними (std::string, std::vector). [Код, написанный на лекции]
- 10.11.2015. Итераторы и их аналогия с указателями. Контейнер std::map. [Код, написанный на лекции]
- 17.11.2015. Разбор второго домашнего задания.
- 20.11.2015. Шаблонные функции. Алгоритмы стандартной библиотеки. [Код, написанный на лекции]
- 24.11.2015. Алгоритмы стандартной библиотеки (продолжение). [Код, написанный на лекции]
- 01.12.2015. Классы. Пример: класс "Комплексное число". [Код, написанный на лекции]
- 04.12.2015. Шаблонные классы. Пример: класс "Квадратная матрица". [Код, написанный на лекции]
- 08.12.2015. Класс "Квадратная матрица" (продолжение). Исключения. [Код, написанный на лекции]
- 15.12.2015. Идиома RAII. Семантика перемещения. [Код, написанный на лекции]
- 18.12.2015. Разбор третьего домашнего задания.
Код, написанный на лекциях, доступен также [здесь].
Контесты для семинаров
Обратите внимание, в последних контестах включен чекер cpplint проверки кода на соответствие стилю.
- C++: Реализация алгоритмов STL
- C++: Null-terminated strings
- C++: структуры
- C++: функции
- C++: контейнеры
- C++: ввод-вывод, условия, циклы
- Python: дополнительные задачи
- Python: sort, itertools, collections
- Python: повторение
- Python: функции
- Python: контейнеры
- Python: циклы
- Python: строки
Полезные ссылки
- Tutorial по языку Python 3 (на английском).
- Курс "Программирование на языке Python" (Д. Кириенко, школа 179).
- informatics.mccme.ru - дистанционная подготовка по информатике.
- pep8online.com - автоматическая проверка соответствия оформления программы требованиям PEP8.
- Рекомендуемый стиль оформления программ на C++.
Часто задаваемые вопросы
Можно ли использовать на семинарах свой ноутбук?
Да, мы этого не запрещаем.
В какой среде лучше писать программы для python'а?
В компьютерных классах можно запустить PyCharm (выбирайте при создании проекта python 3!), ipython3 notebook, IDLE (под Windows), а также просто написать код программы в произвольном текстовом редакторе (например, vim :) и запустить из терминала с помощью python3 <имя_файла>. Выбирайте любую среду на свой вкус.
Расписание семинаров
Подгруппа | Преподаватель | Расписание семинаров | Учебные ассистенты |
---|---|---|---|
152-1 | Зобнин Алексей Игоревич | вторник, 2-я пара, ауд. 501; пятница, 1-я пара, ауд. 501 (нечетные недели); пятница, 2-я пара, ауд. 501 |
Андрей Атанов |
152-2 | Кондратьев Андрей Владимирович | понедельник, 2-я пара, ауд. 513 (нечетные недели); понедельник, 3-я пара, ауд. 513; вторник, 2-я пара, ауд. 503 |
Валерий Гиркин |
154-1 | Макаров Илья Андреевич | понедельник, 5-я пара, ауд. 505; четверг, 3-я пара, ауд. 503; четверг, 5-я пара, ауд. 503 (нечетные недели) |
Владимир Гончаров |
154-2 | Умнов Алексей Витальевич | вторник, 3-я пара, ауд. 501; среда, 3-я пара, ауд. 501; среда, 4-я пара, ауд. 501 (нечетные недели) |
Олег Конопля |
155-1 | Дектярев Михаил Владимирович | понедельник, 2-я пара, ауд. 503; среда, 1-я пара, ауд. 503 (нечетные недели); среда, 2-я пара, ауд. 503 |
Александр Тиунов |
155-2 | Мельничук Павел Владимирович | понедельник, 2-я пара, ауд. 505; среда, 1-я пара, ауд. 301 (нечетные недели); среда, 2-я пара, ауд. 301 |
Александр Тиунов |
156-1 | Синицын Филипп Геннадьевич | среда, 2-я пара, ауд. 605; среда, 3-я пара, ауд. 301 (нечетные недели); четверг, 1-я пара, ауд. 501 |
Максим Сабянин |
156-2 | Умнов Алексей Витальевич | вторник, 4-я пара, ауд. 501; вторник, 5-я пара, ауд. 501 (нечетные недели); среда, 2-я пара, ауд. 327 |
Олег Конопля |
157-1 | Густокашин Михаил Сергеевич | понедельник, 2-я пара, ауд. 501; вторник, 3-я пара, ауд. 327; вторник, 4-я пара, ауд. 327 (нечетные недели) |
Валерий Гиркин |
157-2 | Цетлин Сергей Витальевич | вторник, 4-я пара, ауд. 301; вторник, 5-я пара, ауд. 505 (нечетные недели); четверг, 3-я пара, ауд. 327 |
Андрей Атанов |
158-1 | Вельтищев Дмитрий Николаевич | среда, 1-я пара, ауд. 513; среда, 2-я пара, ауд. 420 (нечетные недели); четверг, 1-я пара, ауд. 513 |
Максим Сабянин |
158-2 | Строк Федор Владимирович | четверг, 1-я пара, ауд. 505; суббота, 1-я пара, ауд. 513; суббота, 2-я пара, ауд. 513 (нечетные недели) |
Владимир Гончаров |
Список студентов с разбиением по группам: http://www.hse.ru/ba/ami/studentlist