
ParoxyThon - это набор инструментов командной строки, которые тегит и фильтр по алгоритмическим характеристикам вашей коллекции упражнений по программированию Python.
Вы учитель, отвечающий за вводной курс программирования в учебном заведении. За эти годы вы накопили много - слишком много - программы и фрагменты кода, которые могут представлять интерес для ваших студентов.
Или, как опытный разработчик, вы хотели бы поделиться своими знаниями, помогая любимому научиться кодировать. Переходы для педагогического материала дают огромное количество веб -сайтов и репозиториев, наполненных программами Python различных уровней (например, 1, 2, 3, 4, 5, 6, и намного больше от Awesome Python in Education).
В любом случае, исходные коды Python, которые вы собрали, обычно многочисленны (сотни или даже тысячи), разумно размер (все ниже 100 строк кода) и образовательный характер (например, фрагменты, примеры, викторины, решения упражнений, классические алгоритмы). Концепции программирования, которые вы планируете преподавать, остаются относительно низким уровнем (например, назначения, вложенные петли, паттерны накопления, хвостовые рекурсивные функции и т. Д.).
Если все это звучит знакомо, продолжайте читать меня.
Paroxython стремится помочь вам выбрать из вашей коллекции, одну программу, которая наилучшим образом соответствует вашим потребностям. Например, это с радостью ответит на следующие вопросы:
- Как можно проиллюстрировать эту концепцию?
- Какие проблемы используют одни и те же алгоритмические и структуры данных, что и эта?
- Какое домашнее задание я должен дать своим ученикам, чтобы они могли практиковать содержание последнего урока?
Более того, поскольку Paroxython знает, что знает ваш класс, он может рекомендовать правильную программу в нужное время:
- Что сделает хорошее обзорное упражнение?
- Какие упражнения я могу сдать на этом экзамене?
- Какова текущая стоимость обучения в этом примере?
В долгосрочной перспективе ParoxyThon может направить вас и каким -то образом заставить вас переосмыслить свой курс курса:
- Каковы предпосылки для концепции задания?
- Достаточно ли у меня материала, чтобы ввести подпрограммы, прежде чем я даже поговорю о условных и петлях?
- Среди петлей, которые должны быть первыми: самые мощные (
while), или самые полезные (for)?- Как логически структурировать эту кучу обычных итеративных шаблонов?
- Какие именно основы ?
Все проблемы, по которым автор передумал, так как он начал работать над этим проектом!
В идеальном мире паракситон может даже положить конец самым смертоносным религиозным войнам с рациональными, основанными на данных аргументах:
- Отец, это грех, чтобы выходить рано?
- Должен ли настоящий байт использовать маску?

Паркситор начинается с данной папки программ . Его содержимое проанализировано, и все функции, которые соответствуют предоставленным спецификациям , помечены и связаны с их пролетами (например, "assignment_lhs_identifier:a": 4, 6, 18 "loop_with_late_exit:while": 3-7, 20-29
Эти этикетки представляют собой только разбросанные знания. Следующим шагом является сопоставление их на таксономию , разработанную с учетом базовых иерархических ограничений (например, тот факт, что введение концепции раннего выхода должно появиться после концепции цикла, которая сама требует потока контроля, выражается таксоном "flow/loop/exit/early" ).

Извлечение таксономии, полученных из алгоритмов - Python.
Нажмите, чтобы перейти к его полной динамической версии в руководстве пользователя.
Затем все сохраняется в базе данных тегов, которая впоследствии может быть отфильтрован через трубопровод команд, например:
Результатом является список рекомендаций программы, заказанных за счет увеличения стоимости обучения.
Предположим, что каталог programs содержит эти простые программы.
Сначала создайте эту базу данных тегов:
> paroxython collect programs
Labelling 21 programs.
Mapping taxonomy on 21 programs.
Writing programs_db.json.Затем отфильтруйте его через этот трубопровод:
> paroxython recommend programs
Processing 5 commands on 21 programs.
19 programs remaining after operation 1 (impart).
18 programs remaining after operation 2 (exclude).
12 programs remaining after operation 3 (exclude).
10 programs remaining after operation 4 (include).
10 programs remaining after operation 5 (hide).
Dumped: programs_recommendations.md.Et voilà, ваш отчет по рекомендации!
Насколько никому не удивление:
python -m pip install paroxython
Следующая команда должна распечатать справочное сообщение и выход:
paroxython --help
Если вы используете Notebook/Lab Jupyter, вы также просто установили так называемую команду Magic. Загрузите это так:
% load_ext paroxython Это должно распечатать "paroxython 0.7.0 loaded." Полем Запустите его на ячейке Python Code:
% % paroxython # Lines
def fibonacci ( n ): # 2
result = [] # 3
( a , b ) = ( 0 , 1 ) # 4
while a < n : # 5
result . append ( a ) # 6
( a , b ) = ( b , a + b ) # 7
return result # 8| Таксон | Линии |
|---|---|
call/subroutine/method/sequence/list/append | 6 |
condition/inequality | 5 |
def/subroutine/function/impure | 2-8 |
def/subroutine/parameter/arg | 2 |
flow/loop/exit/late | 5-7 |
flow/loop/while | 5-7 |
meta/count/program/sloc/8 | 2-8 |
meta/count/subroutine/sloc/7 | 2-8 |
meta/count/variety/3 | 2-8 |
meta/program | 2-8 |
operator/arithmetic/addition | 7 |
style/procedural | 2-8 |
type/number/integer/literal | 4 |
type/number/integer/literal/zero | 4 |
type/sequence/list | 6 |
type/sequence/list/literal/empty | 3 |
type/sequence/tuple/literal | 4, 4, 7, 7 |
var/assignment/explicit/parallel | 4 |
var/assignment/explicit/parallel/slide | 7 |
var/assignment/explicit/single | 3 |
var/assignment/implicit/parameter | 2 |
var/scope/local | 2-8, 2-8, 2-8, 2-8 |
Как видите, в этой программе ParoxyThon идентифицирует среди других:
style/procedural );def/subroutine/function/impure );while петля ( flow/loop/while ) с поздним выходом ( flow/loop/exit/late );type/sequence/list/literal/empty и call/subroutine/method/sequence/list/append );var/assignment/explicit/parallel ). Обратите внимание, что мы различаем явные (с = ) и неявные (параметры и итерационные переменные);var/assignment/explicit/parallel/slide ). Если деноминация уникальна для нас, сам шаблон происходит в ряде программ: реализации последовательностей C-финита с C более 1, наибольшим общим делителем, QuickSort и т. Д.var/scope/local );meta/count/variety/3 ), в зависимости от количества строк, функций и различных функций. Magic Command %%paroxython (соответствующий tag подкоманда) только царит поверхность системы. Как показано ранее, чтобы оценить стоимость обучения функций и получить действенные рекомендации, вам понадобится сначала, чтобы построить базу данных тегов с помощью collect , а затем вызовать recommend по вашему трубопроводу.
Несмотря на то, что это все еще является незавершенной работой, Paroxython уже должен быть довольно хорошо документирован:
Наконец, батарея примеров и комплексного тестового покрытия должны помочь ответить на любой оставшийся вопрос.