WeBWorKの数学者のためのPerlの進化としてのPG

免責事項 :提供された情報は、教師、コース作成者に役立つ場合があります。 情報のほとんどは、英語版のWiki WeBWorKからの無料翻訳です



開始するには:WeBWorKとは何ですか?



WeBWorKは、Web上で個々の宿題を配信するためのPerlで書かれた無料のシステムです。 このシステムにより、教師は一連の宿題からコースを作成し、後で生徒が決定することができます。



学生はどのコンピューターからでも宿題にアクセスできます。 システムには、同じ形式の数式を入力する必要があります。これにより、学生から不必要な心配がなくなります。 決定の正しさに関する情報がすぐに届くという事実により、学生はタスクを無効にする機会があります。



教師のアクセスも制限されていません。 コースを編集するには、新しいタスクと、いくつかの大学の数千の既成タスクの両方を使用できます。 不正行為を防ぐために、生徒ごとにタスクの個々の特性を設定することができます。 問題を解決するための学生、コース、統計に関するすべての情報は教師が利用できます。これにより、一般的および個人の両方の学生のパフォーマンスをより良く評価することができます。
WeBWorKのすべてのタスク(問題)は、PG(問題生成用)と呼ばれる言語で記述されたテキストファイルから読み取られます。



PG言語は、Perlで記述されたマクロ(ルーチン)のコレクションであり、数学的な問題の記述を簡素化します。 その開発は1995年に始まり、言語はまだ開発中です。



PGには現在3つの方言があります。



  1. オリジナルPG;
  2. MathObjects;
  3. PGML


WeBWorKとPGについて少し情報を書きましたが、PG言語自体を解析してみましょう。



標準のWeBWorK PGファイルには5つのセクションがあります。



  1. 将来のユーザーおよび作成者向けのタスクを説明するメモと説明のセクション。
  2. タスクに必要なマクロをロードする初期化セクション。
  3. このタスクに必要な変数が設定されるセクション。
  4. タスクのテキストが生徒に表示されるテキストのセクション。
  5. 応答セクション。


PGで書かれた簡単なタスクを分析しましょう。



セクションのメモと説明
コードピース
#説明

#生徒に次のことを尋ねる簡単なサンプル問題

#三角関数を微分します。

#Gavin LaRoseが書いたWeBWorKの問題、

#<glarose(at)umich(dot)edu>

#ENDDESCRIPTION



## DBsubject( 'WeBWorK')

## DBchapter(「デモ」)

## DBsection(「問題」)

##キーワード( '')

## TitleText1( '')

## EditionText1( '')

## AuthorText1( '')

##セクション1( '')

##問題1( '')

##著者( 'Gavin LaRose')

##機関( 'UMich')



「#」で始まる行は、教師や他のタスク作成者へのコメントです。 説明は、別のタスクの作成者または教師がコード自体を詳しく調べることなくタスクの本質を見つけることができるようにするために必要です。



タスクに関するすべての情報はメモに記入されています。 マークは「##」という文字で始まります。 これは、タスクのインデックスを簡単に作成できるようにするために必要です。



現在の章と章名のオンラインリスト 、およびキーワードの同様のリストがあります。



キーワードはカンマで区切って引用する必要があります(例: KEYWORDS( 'calculus'、 'derivatives') )。



初期化セクション
コードピース
文書();

loadMacros(

「PGstandard.pl」、

「MathObjects.pl」、

);



タスクの最初のコマンドはDOCUMENT()コマンドでなければなりません

各コマンドはセミコロンで終わる必要があることに注意してください。

loadMacrosコマンドを使用して、必要なマクロをロードします。



可変セクション
コードピース
#必要なコンテキストにいることを確認する

コンテキスト(「数値」);



$ a =ランダム(2,9,1);

$ trigFunc =数式( "sin($ ax)");

$ trigDeriv = $ trigFunc-> D();



コンテキストコマンド(「数値」); 変数の解釈方法を設定する「コンテキスト」を設定します。

すべてのコンテキストおよびコンテキストの説明は、 このヘルプページに記載されています

セクションの主要部分は、タスクの残りで使用する変数を定義します。



すべてのスカラー変数には$記号が付いています。したがって、 $ aは重要な変数です。

MathObjectのコマンドを使用して、 $ trigFunc$ trigDerivも定義します。



テキストセクション
コードピース
テキスト(beginproblem());

コンテキスト()-> texStrings;

BEGIN_TEXT

関数\(f(x)= $ trigFunc \)の導関数を見つけます。

$パー

\(\ frac {df} {dx} = \)\ {ans_rule(35)\}

END_TEXT

コンテキスト()-> normalStrings;



TEXTコマンド(beginproblem()); タスクのタイトルを表示します。



コマンドコンテキスト()-> texStrings; 数式をタスクテキストに表示する方法を設定します。



BEGIN_TEXTからEND_TEXTまでのすべてが生徒に表示されます。



数学方程式は、 \(\) (組み込みの方程式の場合)または\ [\] (表示される方程式の場合)に分割されます。 フォーマットを設定する変数は多数あります。 このページには、これらの変数のリストが含まれています。



ただし、 \ {\}は、タスクのテキストで実行されるコードの部分を強調表示します。 ここで、 ans_rule(35)は35文字幅の応答フィールドを挿入する関数です。



回答セクション
コードピース
ANS($ trigDeriv-> cmp());



コンテキスト()-> texStrings;

ソリューション(EV3(<< 'END_SOLUTION'));

$ PARソリューション$ PAR

を使用してこれの導関数を見つけます

チェーンルール。 内部関数は\($ ax \)です。

そのため、その導関数は\($ a \)であり、

外部関数は\(\ sin(x)\)であり、

微分\(\ cos(x)\)。 したがって、解決策は

\ [\ frac {d} {dx} $ trigFunc = $ trigDeriv。 \]

END_SOLUTION

コンテキスト()-> normalStrings;



ENDDOCUMENT();



応答は、 ANSコマンド($ trigDeriv-> cmp())によってチェックされます。 。 このコマンドは、正しい答えと生徒が入力した答えを検証します。 次に、学生に決定を説明します。 このソリューションは、学生が「ソリューション」ボタンを押すと表示されます。 チームENDDOCUMENT(); ファイル内の最後のコマンドです。



このシステムの唯一の問題は、ロシアとCIS諸国にローカライズされていないことです。したがって、このシステムを知り、このシステムを使用して生徒の知識を教えたりテストしたりする人はほとんどいません。



All Articles