
Paroxythonは、アルゴリズムによるタグとフィルターのタグとフィルターを、Pythonプログラミングエクササイズのコレクションを特徴とするコマンドラインツールのセットです。
あなたは教師であり、教育機関の入門プログラミングコースを担当しています。長年にわたり、あなたはあなたの生徒にとって興味深いかもしれないプログラムとコードのスニペットを多く蓄積してきました。
または、ベテランの開発者として、愛する人がコーディングの方法を学ぶのを支援することで、あなたの知識を共有したいと思います。教育学的資料の大まかな検索では、さまざまなレベルのPythonプログラムを詰め込んだ圧倒的な量のWebサイトとリポジトリが得られます(例:1、2、3、4、5、6、および教育のAwesome Pythonからの多くのもの)。
いずれにせよ、収集したPythonソースコードは、通常、多数(数百または数千)、合理的なサイズ(100行以下のコード)、および本質的に教育的(例えば、スニペット、例、クイズ、エクササイズソリューション、古典的なアルゴリズム)です。教えることを計画しているプログラミングの概念は、比較的低いレベルのままです(例:割り当て、ネストされたループ、蓄積パターン、尾の再帰関数など)。
おなじみのように聞こえる場合は、私を読んでください。
Paroxythonは、あなたのコレクションから、あなたのニーズに最適な1つのプログラムを選択するのを支援することを目指しています。たとえば、次の質問に喜んで答えます。
- この概念はどのように説明できますか?
- これと同じアルゴリズムとデータ構造を使用する問題は何ですか?
- 生徒が最後のレッスンの内容を練習できるように、生徒にどのような宿題の割り当てが必要ですか?
さらに、Paroxythonはあなたのクラスが知っていることを知っているので、適切なタイミングで適切なプログラムを推奨できます。
- 良いレビュー演習は何ですか?
- この試験でどのエクササイズをすることができますか?
- この例の現在の学習コストはいくらですか?
長い目で見れば、パロキシソンはあなたを導き、どういうわけかあなたのコースの概要を再考させるかもしれません。
- 割り当ての概念の前提条件は何ですか?
- 条件やループについて話す前に、サブルーチンを導入するのに十分な資料がありますか?
- ループの中で、どちらが最初に来なければなりません:最も強力な(
while)、または最も便利な(for)?- この通常の反復パターンの束を論理的に構成する方法は?
- 正確には基本は何ですか?
著者がこのプロジェクトに取り組み始めて以来、著者が心を変えたすべての問題!
理想的な世界では、パロキシトンは、合理的でデータ駆動型の議論で、最も致命的な宗教戦争に終止符を打つことさえできました。
- 父、早く出るのは罪ですか?
- 実際のバイトはマスクを使用する必要がありますか?

Paroxythonは、プログラムの特定のフォルダーから始まります。その内容は解析され、提供された仕様を満たすすべての機能にラベルが付けられ、そのスパンに関連付けられています(例: "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.etvoilà、あなたの推薦レポート!
誰も驚きではありません:
python -m pip install paroxython
次のコマンドは、ヘルプメッセージを印刷して終了する必要があります。
paroxython --help
Jupyter Notebook/Labを使用する場合、いわゆるMagicコマンドもインストールしました。このようにロードする:
% load_ext paroxythonこれにより"paroxython 0.7.0 loaded." 。 Pythonコードのセルでそれを実行します:
% % 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 );flow/loop/while late)を備えたwhileループ( flow/loop/exit/late while);type/sequence/list/literal/emptyとcall/subroutine/method/sequence/list/append );var/assignment/explicit/parallel )。明示的な( = )と暗黙の(パラメーターと反復変数)割り当てを区別することに注意してください。var/assignment/explicit/parallel/slide )。宗派が私たちに固有の場合、パターン自体は多くのプログラムで発生します。Cが1を超えるCフィニットシーケンスの実装、最大の共通除数、クイックソートなど。var/scope/local );meta/count/variety/3 )。 Magic Command %%paroxython (サブコマンドtagに対応)は、システムの表面を傷つけるだけです。前に示したように、機能の学習コストを推定し、実用的なrecommend事項を取得するには、最初にcollectてタグデータベースを構築する必要があります。
これはまだ進行中の作業ですが、パロキシトンはすでにかなり十分に文書化されるべきです。
最後に、一連の例と包括的なテストカバレッジは、残りの質問に答えるのに役立つはずです。