Git Product home page Git Product logo

course-site-python3's Introduction

Build Status

course-site-python3's People

Contributors

backulinivan avatar egorrozinskiy avatar fufler avatar gemial avatar iluhinsky avatar mikari avatar mkhlamov avatar rerrayne avatar rpashkoff avatar senya avatar snorch avatar stiimo avatar tkhirianov avatar vasyarv avatar yudai-patronai avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

course-site-python3's Issues

Лабораторная работа по графикам в Matplotlib

Нужна ссылка на документацию по функциям, ибо студентам не понятно, зачем нужно писать именно такие аргументы и какие еще варианты аргументов есть у этой функции.

Т.е. должен находиться по УКАЗАННЫМ ссылкам ответ на вопрос "почему 50 и что такое normed и в каком диапазоне его можно задавать)

n, bins, patches = plt.hist(x, 50, normed=1, facecolor='g', alpha=0.75)

[py w2] лаба - ассимптотика алгоритмов

В прошлом семестре речь шла в основном о сортировках.
Нужно дополнить это пониманием ассимптотики разных встроенных операций, например list.pop(0)

Лабораторная №10 "Объектно-ориентированное программирование" - доработка

Нужно вычитать, вычистить и сделать адекватной по объёму (чтобы успели за пару) работу №11 прошлого года (теперь она №10):

Содержание старой работы:

  • Основные понятия
  • Поля и методы
  • Стандартные методы
  • Переопределение стандартных операций
  • Функции type и isinstance
  • Упражнения

Я предлагаю сделать так:

1 часть работы:

  1. Основные понятия ООП.
  2. Поля и методы. Стандартные методы.
  3. Доработка игры «Пушка». --- ЭТО УПРАЖНЕНИЕ №6 в старой работе

2 часть работы:

  1. Переопределение стандартных операций. --- только после того, как они почувствуют вкус ООП, давать эти мелочи
  2. Функции type и isinstance.
  3. Создание класса Vector. --- для тех, кто доберётся

Практика 4 - ответы к заданиям!

Нужно срочно выложить ответы к упражнениям сегодняшней работы!
Иначе мы потеряем интерес студентов. Пока ещё эта работа "на острие", нужно успеть выложить ответы, тогда они их просмотрят.

Практика 5 — замечания

Нужно переименовать работу, потому что её текущее название никак не соответствует сути.

Практика 10 - аттрибуты классов и экземпляров

>>> class MySecondClass:
        msg = 'Hello' # Все экземпляры этого класса будут иметь атрибут msg,
                # равный "Hello"
                # Но впоследствии мы его можем изменить
        def doSmth(self):
                return self.msg

>>> b = MySecondClass()
>>> b.doSmth()
'Hello'
>>> MySecondClass.doSmth(b)
'Hello'
>>> b.msg = 'Good by'
>>> b.doSmth()
'Good by'

В этом листинге описание немного не соответствует действительному положению дел.

msg = 'Hello' - атрибут уровня класса.
b.msg = 'Good by' - создает атрибут msg у экземпляра b

Атрибут уровня класса по-прежнему доступен и остался прежним:

»> MySecondClass.msg
'Hello'
>>> MySecondClass.__dict__
{'msg': 'Hello', '__weakref__': <attribute '__weakref__' of 'MySecondClass' objects>, '__module__': '__main__', '__doc__': None, '__dict__': <attribute '__dict__' of 'MySecondClass' objects>, 'doSmth': <function MySecondClass.doSmth at 0x7fe3c3d47840>}
>>> b.__dict__
{'msg': 'Good by'}

Путаница между двумя разными уровнями аттрибутов может быть вызвана тем, что внутри класса можно обращаться к ним обоим через self. Вначале происходит поиск в аттрибутах экземпляра (b.__dict__), а затем среди аттрибутов класса (MySecondClass.__dict__).

Практическая работа 5-й недели

Вычитать и модернизировать работу "Графы Фрутландии"
текст 2015-2016-го года: http://judge.mipt.ru/mipt_cs_on_python3_2015/labs/lab20.html
исходник 2015-2016-го года: https://github.com/mipt-cs-on-python3/course-site/blob/master/content-2015-2016/lab20.rst

Основа этой работы: Визуализация графов при помощи библиотеки NetworkX.
Алгоритмические темы полностью повторяют два последних контеста, а именно:

  1. обход графа в глубину,
  2. обход в ширину
  3. и алгоритм Дейкстры.

плюс связанные с ними алгоритмы

Важно, чтобы студенты могли делать подсвечивание подграфа (например, построенного остовного дерева или найденного цикла). Это делается полупрозрачной широкой линией при построенном заранее layout.

4-я неделя. Практика: Graphics Джона Зелле

Страница, на которой нужные нам ссылки:
http://mcsp.wartburg.edu/zelle/python/

В этой работе мы пишем функции без возвращаемого значения ("процедуры").
Темы:

  • Функции без параметров и с параметрами.
  • Читабельность программы.
  • Необходимость смыслового именования функций и переменных
  • Проектирование "сверху-вниз".
  • Проработка интерфейса функции. Мало параметров-много параметров.

Хотелось бы это дать по типу того, как Илья Рудольфович даёт школьникам Тупого Художника.
Т.е. обучить студентов не только созданию функций, но и проектированию "сверху-вниз".

Лабораторная №4 - исправление и доработка

Переписать исполнителя Робот так, чтобы он тебе нравился.
При этом команды робота должны быть:
up()
down()
left()
right()
paint()
без упоминания объекта робота.

Набор задач тебе сбросить в каком формате? Есть редактор карт для робота на КуМир-е.
Где и в каком формате ты будешь хранить задачи и ответы?

Лабораторная №5 "Строки и списки" - доработка

Внимание! Лабораторная работа "Строки и списки" делается из куска работы 5 прошлого года.
и дополняется по усмотрению.

Темы работы:

  1. Работа с текстовыми файлами в Python.
  2. Открытие файла
  3. Чтение данных из файла
  4. Вывод данных в файл
  5. Закрытие файла
  6. Списки в Python
  7. Методы split и join
  8. Срезы списков
  9. Операции со списками

Цикл упражнений к практической работе можно оставить, но продумав, что из этого по материалу и по сложности подходит к данной работе.

lab6: Вопрос по задаче А

В тесте 12 где на ввод подается 100к чисел, какое решение, предполагалось, должны написать студенты, чтобы не получить 'T' таймаут? Использовать set студенты еще не могут, так как он, очевидно, проходится в семинаре 10 ("Словари и множества в Python"), про бинарный поиск вроде им тоже ни чего не говорили, делать костыли и подпираться под тест - вроде не красиво. Может я что-то упустил?

Уточнение контеста

Контест: перевод графа из одной формы в другую, поиск в ширину и глубину, поиск кратчайшего пути.
Ответственный: Маркеева
Критик: Хайруллин

Задача: сформировать требования к контесту.

Лабораторная №11 "Солнечная система" - доработка

Нужно актуализировать и улучшить работу №8 прошлого года (теперь она №11):

Цель данной работы: дать первичные навыки командной работы с использованием git.

План старой работы:

Проектирование программы
	Командное программирование
	Легенда
	Разбиение на модули
	Распределение ролей
Программист А. План работ
Программист В. План работ
Результаты
	Пример солечной системы
	Пример двойной звезды
Дополнительное задание

Переписать робота

Текущий вариант плох как минимум по следующим причинам:

Робот уходит за край поля

При старте в клетке 1,1 робот не видит стены сверху и может "шагнуть" вверх.
При этом отрисовывается шаг движения вверх, робот фактически остаётся в той же клетке, а сам после этого становится невидимым до конца выполнения программы...

Робот не убиваем

При ударе робота о стену он становится красным, но продолжает движение.

Не удобно задавать задачи

Текущий способ постановки задач заключается в прописывании их в файл с исходниками робота, что не комильфо.

Контест лабораторной работы 6

Задачи для контеста шестой недели:

  • Проверка ацикличности графа
  • Топологическая сортировка
  • Минимальное остовное дерево. (Алгоритм Прима.)
  • Постоение гамильтонова цикла.
  • Задача коммивояжёра.
  • Задача о китайском почтальоне.

Контест 3

Контест: перевод графа из одной формы в другую, поиск в ширину и глубину, поиск кратчайшего пути.
Ответственный: Маркеева
Критик: Хайруллин

Задание:
Есть три подходящих задачи в контесте: http://judge2.vdi.mipt.ru/cgi-bin/new-client?contest_id=540203

  • Задача C-Связный ли граф?
  • Задача D-Количество компонент связности
  • Задача E-Сильно связный ли орграф?

Первые две оттуда брать нельзя - они войдут в домашний контест ко 2-й лекции.

Нужно сделать задачи:

  • A. Списки смежности в список рёбер
  • B. Список взвешенных рёбер в словарь словарей смежности
  • F. Количество сильно связных и слабо связных компонент орграфа.
  • G. Вывести остовное дерево графа, если граф связный и NO, если не связный.
  • H. Проверить, что орграф - ациклический
  • I. Найти диаметр графа (при помощи двух поисков в глубину)
  • J. Проверить, Эйлеров ли граф.

Как выкладываем промежуточный результат:
заливаете

условие задачи,
образцовое решение
генератор тестов ( или сами тесты )
чекер
короткое описание каждой задачи в текстовичке Markdown, содержащее кусочек конфига для этой задачи

в папку 2_03_lab
в репозиторий: https://github.com/mipt-cs-on-python3/contests/tree/master/2016-2017_python3

Вот здесь можно посмотреть как я делаю генератор тестов:
https://github.com/mipt-cs-on-python3/contests/tree/master/2016-2017_python3/2_02_lab

В первой из задачек (A_dic1) можно посмотреть на нестандартный чекер — checker.py

Условия Ejudge принимает в xml виде. Пока я оставил statements как есть.
@fufler Хотелось бы придумать rst, который будет легко переводить в xml скриптом.

Дедлайн передачи критику : 20:00 19.02.17
Дедлайн согласований с критиком: 20:00 20.02.17

Практика 4 — замечания по задачам

Все задачи

Было бы неплохо отображать, как именно робот должен двигаться (например, записать gif-ки с решениями). Это нужно сделать для тех задач, где наличие подобной анимации не будет облегчать поиск решения.

Задача №3

Нужно сделать произвольную глубину боковых коридоров, чтоб не было соблазна решать без цикла.

Задача №5

Явно указать, что под вспомогательным алгоритмом понимается функция, рисующая часть узора.

Задача №7

Сделать генерацию коридора в произвольных местах.

Задача №8

Сделать генерацию стены в разных местах.

Задача №9

  • Сейчас вместо квадрата рисуется прямоугольник.
  • Указать в условии, что нужно искать именно связную область.

Задача №10

Сделать генерацию коридора в разных местах.

Исправить лабу про ООП и UML

  1. Привести стайлгайд с PEP8
  2. Исправить "двойное" именование переменных: passToUniversity и pass_to_university. И перегенерировать UML картинки
  3. Написать правильное использование abstractmethod - а именно metaclass=ABCMeta. Иначе этот декоратор не работает.

Способ задания ценности отдельных тестов в задаче

Проблема: задача может иметь тесты разной ценности. Может быть "блочность" задачи: за частичное решение хочется давать не около нуля, а 20-30-50% от всех баллов за задачу и т.д. Например, если существует решение для n<100 и решение для n<1000. Хочется давать немного баллов и тем, кто смог только написать простое решение.
Идея:
Дать способ задавать вес каждого теста и вес общего бонуса.

В самом контесте пусть задается суммарная стоимость задачи.
После делается так:
S - суммарная стоимость, W - суммарный вес (все тесты и бонус), w_i - вес i-ого теста, b_i - баллы за i-ый тест

b_i = int(S/W * w_i) (округление вниз!)
а в бонус отправить остаток

Кажется, такое будет надежно работать и не падать. В самых крайних случаях (слишком мелкая стоимость отдельных тестов) за тесты будет 0 баллов, а в бонус будет уходить всё :-)
Это можно починить специальным if'ом.

По умолчанию я бы сделал так: 30% бонус, остальное равномерно между всеми тестами.

Контрольная билет 10

В задаче не очевидно, что нужно искать уникальные числа. В не то что 1 2 3 3 3 должен вывести 3, 2, 1, а не 3,3,3

Практика 4 - Робот уходит за край поля

При старте в клетке 1,1 робот не видит стены сверху и может "шагнуть" вверх.
При этом отрисовывается шаг движения вверх, робот фактически остаётся в той же клетке, а сам после этого становится невидимым до конца выполнения программы...

Лабораторная №8 "Словари и множества в Python" - доработка

Лабораторная работа: Словари и множества в Python

Она является работой №10 прошлого года

Требуется:

  1. Исправить форматирование кода (особенно отступы кода в таблице про словарь).
  2. Добавить простых и интересных упражнений на словари

lab3: Черепашка, задания 9 и 15

Задача 9:
Ребятам было не очевидно, что:

  1. Все многоугольники имеют единый центр описаной окружности
  2. Не знали как вычислить длинну стороны. Тут не хватает формулы. Та, на которую ссылка была дана из лабы не работала, надо просто ее вставить прямо в текст.

Задача 15:
Просто не поняли что делать, пришлось объяснять.

Опечатки

Доброго времени суток!

Заметил парочку опечаток в уроке №2 ("Введение в Python 3"):

  1. В главе "IPython — расширенная оболочка": в коде строка "ABC" умножается на 10, а в поясняющем тексте ниже сказано, что строка умножается на 100;

  2. В упражнении №8 в условии перепутаны ввод и вывод.

В дальнейшем предлагаю собирать всю информацию об опечатках здесь.
dhdetmucyxg
tcjyp-3vyhy

Контест 4

Контест: поиск в ширину, поиск кратчайшего пути.
Ответственный: Семенцов-Огиевский
Критик: Хламов

Дедлайн передачи критику: 20:00 22 февраля
Дедлайн передачи в общий доступ: 20:00 24 февраля

Результаты контрольных

Сделать вкладку "Достижения учащихся" с результатами контрольных работ
Генератор я закоммитил в корень: quiz_results_generate.py

Лабораторная №6 "Арифметика и статистика" - доработка

Лабораторная работа: Арифметика и статистика
Она является частью работы №5 прошлого года. Добавить разумных и интересных упражнений.

Темы работы:

  1. Генерация случайных чисел
  2. Среднее арифметическое и среднеквадратическое отклонение
  3. Задача поиска максимума, положения максимума.
  4. Статистический анализ
  5. Гистрограммы
  6. Пример построения гистрограммы при помощи Matplotlib.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.