Практические занятия по курсу ОиМП — различия между версиями
Строка 82: | Строка 82: | ||
При оценке домашнего задания будут учитываться оценки за задания 1-4. | При оценке домашнего задания будут учитываться оценки за задания 1-4. | ||
+ | |||
+ | '''Внимание!''' После 5.10 задания 1-4 и первая домашняя работа не принимаются. |
Версия 22:09, 26 сентября 2014
Содержание
Полезные ссылки
Для выполнения заданий необходимо установить интерпретатор Python.
Задачи, которые точно нужно уметь решать.
Рекомендации по выполнению
- Не используйте wildcard imports (from <module> import *), см. PEP8.
- Знак присваивания обособляйте пробелами с двух сторон. Плохо: a=b. Хорошо: a = b.
- Если требуется сравнить два числа с плавающей точкой (float) на равенство, то сравнивайте модуль их разницы с некоторым eps: |d1 - d2| < 0.0000001.
Алгоритм подсчёта итоговой оценки по курсу
В курсе предусмотрены следующие виды работ: четыре домашние работы, контрольная и экзамен. За каждую из шести работ выставляется оценка от 0 до 10 включительно. При этом 20% от оценки за домашнюю работу составляет оценка за текущие работы:
<оценка за текущую работу> = (<количество выполненных обязательных заданий в установленный срок> + 0.5 * <количество выполненных обязательных заданий позже установленного срока> + 0.3 * <количество выполненных необязательных заданий>) / <количество обязательных заданий>
<итоговая оценка за текущую работу> = min(<оценка за текущую работу>, 10)
<итоговая оценка за домашнюю работу (ИОДР)> = 0.8 * <оценка за домашнюю работу> + 0.2 * <итоговая оценка за текущие работы>
<итоговая оценка по курсу> = 0.6 * (<ИОДР 1> + <ИОДР 2> + <ИОДР 3> + <ИОДР 4>)/4 + 0.15 * <оценка по контрольной работе> + 0.25 * <оценка за экзамен>
Задание 1. Ввод-вывод (4.09 - 20.09)
Список обязательных задач для каждого студента.
Задание 2 (6.09 - 20.09)
Перед выполнением задания нужно установить библиотеку Pillow.
Замечание. Доступ к элементам pixels осуществляется так: pixels[i,j].
Бонусные задачи
- Реализуйте масштабирование.
- Реализуйте отражение.
- Реализуйте размытие.
- Напишите свой фильтр для обработки изображений.
Задание 3 (13.09 - 27.09)
Решите 20 любых задач из контеста Ввод-вывод.
Бонусное задание. Шифрование RSA
- Реализуйте алгоритм создания открытого и секретного ключей.
- Реализуйте алгоритмы шифрования и дешифрования. Проверьте, что они работают.
- Реализуйте алгоритм взлома. Функция должна принимать аргументы c, n и m (см. обозначения в Википедии) и возвращать d, приватный ключ, такое что m == c^d mod n.
- Научитесь замерять время выполнения каждой из четырёх функций (функции генерации ключей, шифрования, дешифрования и взлома).
- Выберите некоторое значение m, например, m=100. Выведите таблицу:
n=11*13=143 | n=17*31=527 | n=109*157=17113 | n=3557*2579=9173505 | n=3533*3571=12616343 | |
---|---|---|---|---|---|
e=3 | |||||
e=17 | |||||
e=257 | |||||
e=65537 |
На пересечении i-ой строки и j-ого столбца должно стоять четыре неотрицательных числа --- время работы каждого из четырёх алгоритмов при заданных e и n. Если данное e не взаимно просто с n, поставить прочерк.
Задание 4 (18.09 - 2.10)
Если в вашей фамилии чётное число букв, то решите все чётные задачи из контеста Обработка текста, иначе все нечётные.
Домашнее задание 1 (26.09 - 5.10)
Первое большое домашнее задание. Каждому студенту требуется сделать пять задач из 20. Список обязательных задач здесь.
При оценке домашнего задания будут учитываться оценки за задания 1-4.
Внимание! После 5.10 задания 1-4 и первая домашняя работа не принимаются.