部分単位 – 構想から実装まで

31年2015月XNUMX日 | 執筆者

こんにちは!コリン・フレデリックスです。HarvardXでシニアプロジェクトリーダーとして働いており、ハーバード大学の教授陣が質の高いコースを作成できるようサポートすることが主な仕事です。しかし、ここ数ヶ月は主に余暇を利用して、コースに新しい機能を追加する作業に取り組んできました。 Open edXプラットフォームへの部分的な貢献.

Open edXプラットフォームは本当に気に入っているのですが、部分的な単位を付与する機能がないことにいつも驚いていました。大学や高校で教えた経験から、これはあまりにも明らかな見落としだと思い、「今後の機能」リストに載っていることを期待していました。3年間待ち続け、ついに自分で解決しようと決意しました。

さて、私はプロのプログラマーではありません。(バックグラウンドで不気味な音楽が流れているのが聞こえるかもしれません。私たちはこれを「伏線」と呼んでいます。)小学校4年生でApplesoft BASIC、高校でTI-82プログラミング、大学でC++、MITで働いていたときにPython、失業中にJavascriptを学びましたが、オープンソースの取り組みに貢献したことは一度もありませんでした。テストコードを書いたこともありませんでした。そもそも、テストコードの存在すら知りませんでした。(カメラに影が落ちました。また伏線です。)そこで、XNUMX種類の問題にXNUMX種類の部分点を加算し、XNUMX、XNUMX週間で解けるようにシンプルなものにしようと決めました。(これも伏線です。)

4月初旬のことでした。当初の目標は2日で達成しましたが、その後プロジェクトは急速に拡大し、現在の状況になりました。私は、単一の問題タイプから、無理なく扱える範囲で可能な限り多くの問題タイプに拡大し、 本格的な提案 それは最終的に16ページになりました。 

この機能を実装する中で、私は「テストコード」や「コード品質チェッカー」といったもの、そしてコンピュータサイエンスIIでは(賢明にも)教えてもらえない他のものについて知りました。私は edX 開発者ガイド私が理解した限りでは、 きれいなフローチャート私は JIRAの提案チケット自分のコード用のgithubリポジトリを作成しました。 私の 最初の プル要求, さらに開発を進め、多くの良いフィードバックを得て(そのほとんどを取り入れました)、リベースを適切に行う方法を学び、 新しい、より良いプルリクエストそして、さらにコーディングを行いました。約15週間の開発期間を経て、ついにこの機能がedx-platformのマスターブランチにマージされたことを誇りに思います!

部分的なクレジット: 機能の詳細

現時点でこの機能がどのようになっているか、簡単に説明します。なお、現在、作成者は問題のOLX定義を直接編集することによってのみ、部分的なクレジットを有効化できます。

複数の選択肢 の三脚と 落ちます 問題には、部分的な評価方法が50種類だけ用意されています。それは「ポイント」形式の評価です。コース作成者は、部分的な評価に値する選択肢をいくつかリストアップし、必要に応じて評価点数を設定できます(デフォルトはXNUMX%)。その副作用として、ドロップダウン問題は複数の選択肢を正解としてマークできるようにアップグレードされました。

チェックボックス 問題には、100 種類の(相互に排他的な)部分評価タイプがあります。「半分」スタイルでは、完璧な回答で XNUMX% の評価が与えられ、間違いごとに評価が半分に減ります。「すべての決定が重要」スタイルでは、各チェックボックスが実質的に個別の真偽の質問になります。

以下は、コース作成者が Studio の問題で「すべての決定が重要」(または「EDC」) スタイルの部分クレジットを有効にする方法の例です。

EDCチェックボックス応答部分点問題のOLX定義。詳細はドキュメントをご覧ください。

生徒にはこの問題が次のように表示されます。

EDCチェックボックス問題。正解が3つ、誤答が2つあります。正解0.4つと誤答1つをチェックすると、合計得点はXNUMX点満点中XNUMX点となります。

数の 問題には2つの種類があります。「リスト」形式は、作成者が部分点となる解答を列挙する形式です(例えば、数学の問題では、負号の書き忘れや分数の反転などによって生じる解答が部分点となる場合があります)。「クローズ」形式は、与えられた許容範囲を拡張し、「蹄鉄と手榴弾」のようなアプローチを可能にします。2つの形式は互換性があるため、必要に応じて同じ問題で両方を使用できます。

コース作成者が「リスト」形式の部分評価で数値問題を定義する方法は次のとおりです。

生徒にとって、この問題はどのように見えるでしょうか:

数値応答による部分点問題です。正解は93*10^6マイルです。キロメートル単位での値も部分点として認められます。これにより、合計点は0.5点満点中1点となります。

最後に、 カスタムPython 問題は、ポイント値だけでなく、問題が完全に正解であると見なされるか、部分的に正解であると見なされるかを示す指標を返すことができるようになりました。

問題に部分的な得点を加算する方法の詳細については、 部分的なクレジットの文書.

結果には非常に満足しています。プロジェクトは予想以上に時間がかかりましたが、その分、はるかに強力なものになりました。将来、他の種類の問題にも部分的な得点を付与しやすくなるフレームワークを提供してくれるので、ぜひ皆さんに活用していただければと思います。 

v2 では何が起こりますか? 

まず、バージョン1.5では、 周囲の Capaモジュールの将来の貢献者が私ほど苦労しないように、コードを修正しました。その後は、もちろん、より多くの問題タイプに対応していきます!また、XMLを使わずに一般的な問題でこの機能を利用できるようにすることも検討しています。つまり、講師がStudioのマークダウンエディターからこの機能を使えるようにするということです。コードの汎用化もまだ進めるべき点があります。将来的には、試行に基づく採点機能を追加する可能性もありますが…今は一歩ずつ進めていきましょう。

このプロセスを通して、edXの皆さんが本当に素晴らしく、親身になってサポートしてくれたことに、言葉では言い尽くせません。PythonとJavaScriptの知識は片言程度でしたが、修了時にははるかに確かなスキルを身につけ、オープンソースプロジェクトへの貢献とはどういうことなのかを理解することができました。Sarina Canelake、Leslie Gerhat、Piotr Mitros、Mark Sadecki、Marco Morales、Ben Patterson、Diana Huang、Mark Hoeberをはじめ、多くの方々が忙しい中、時間を割いて私のコードをより深く理解し、磨き上げるお手伝いをしてくださいました。実際に使われて使われるのを見るのが待ちきれません。

私はまだ自分自身をプロのプログラマーだとは思っていませんが、この仕事のおかげで近づいています。

コリン・フレデリックスはハーバードXのシニアプロジェクトリーダーです。余暇には料理を楽しんでいます。 ロールプレイングゲームの執筆、そしてすべての動物たちと友達になること。

 

ローディング

もっと時間が必要ですか? 以下の記事をご覧ください。

共に問題を解決する:コミュニティ主導のプラットフォーム開発
Open edXカンファレンスで未来を切り拓くスキルとスケールアップ
Open edXカンファレンス開発者向けワークショップ
デジタルの未来を取り戻す:私がオープン・ルネッサンス・グループに参加した理由
Open edX カンファレンス 2026 に参加しましょう!

2026 Open edX カンファレンスでは、世界最高峰のオープンソース オンライン学習管理システムの XNUMX つである Open edX プラットフォームの革新的な使用事例を紹介し、教育設計、コース構成、生成 AI などの画期的なテクノロジーを含む Open edX プラットフォームの運用と拡張の方法における最新の進歩を紹介します。