Study Pack: マルチPDF学習メソッド は何をしますか?
ユーザーは次の方法でテスト勉強をします。コース教材を渡すと、それらから6つのPDFを生成します。テストは問題を解くことが中心なので、問題PDF(ワークブック、ドリル、模擬テスト)が最も重要です。ノートはそれを補助します。
ユーザーは何も知らないと仮定してください(絶対条件)。 教材が当然としている背景知識に決して頼らないでください。ユーザーは、初めて問題を見たとき、自分が何を見ているのか全く分からないと明言しています。そのため:
- すべてのパックは**Unit 0「ここから始めて」**から始まります。コースが前提とする知識を、ゼロから同じカードと練習問題を使って教えます。(CISC 221の場合、ビット/バイト/16進数、16進演算、2の補数、CPU/レジスタ/メモリ/アドレス、アセンブリ1行の読み方、Cのポインタと型、関数の見た目、典型的な問題ページの読み方などでした。)このコースで初心者が欠けているであろう知識を洗い出してください。
- すべての単元は**「言葉と記号」の用語集**(
units.json→"words")で始まります。その単元で使うすべての用語と記号を、使う前に平易な言葉で説明します。 - すべてのカードには、例題の直後に**「何を見ているのか」ボックス**(
div.read)があります。答えが表示される前に、問題の各部分と記号の意味、問題が何を尋ねているのかを説明します。 - 説明では、すべての用語を最初に登場したときに定義するか、その定義があるUnit 0のカードを参照します。「いつものように」「明らかに」と書いたり、定義されていない用語を使用したりしないでください。
ユーザーの学習方法(絶対条件)。 すべての問題タイプについて、(1) 問題が実際に出題される通りの形で示し、次に**(1b) 何を見ているのか**: 問題の各部分を解読します。次に**(2) その例題の答えを、学生が書くべき通りの形で示し**、次に**(3) 概念全体の真の説明**(それが何か、なぜ機能するのか、どのように、図と罠を含め、決してルールの羅列ではない)、次に**(4) 短いチェックリスト**を示します。その後に初めて練習問題が来ます。すべての練習問題は、その前のカードから解けるものでなければならず、どのカードを使用するかを表示します(「使用: M2 · M5」)。assemble.pyは両方のルールを強制し、条件を満たさない場合はビルドに失敗します。事実を説明なしに示すことは、ユーザーが明示的に指摘した失敗モードです。
| # | 説明 | |
|---|---|---|
| 1 | 模擬テスト | 実際のテスト形式の問題。意図的に実際のテストより長く、解答欄あり |
| 2 | 模擬テスト 解答 | 同じテストに赤で解答と各問の「理由:」を記載 |
| 3 | 単元別ワークブック | 中心教材。 Unit 0「ここから始めて」(背景知識、ゼロから)で開始。各単元は**「言葉と記号」**の用語集で始まり、問題タイプごとに1枚のカード: 出題例(テスト通りの例)→ 何を見ているのか(問題の解読)→ このように書く答え → 仕組み(概念の完全な説明)→ 毎回これを行う。その後、8〜12問の練習問題。各問題には使用するカードがタグ付けされ、次のページに解答解説 |
| 4 | 完全マスターリファレンス | すべて: 講義ノート、講師の解法、すべての公式問題の解答、分類、罠、表、用語集。別のAIが完全なコンテキストとして使用できるように記述 |
| 5 | 概念ノート | トピック別の解説ノート。計算例とチートシート付き |
| 6 | Q&A ドリル | 問題 → 完全な解答 → 次の問題。出題可能性順に並べ替え: 最初に大きく配点の高い問題タイプ(パートA)、次に表/中程度の問題(パートB)、最後に短い問題(パートC)。各解答には「何を見ているのか」、テストで書く通りの解答、および「理由」を含む。ユーザーはこの形式で学習するよう明示的に要求しました。 |
各PDFの完全な仕様については references/pdf-set.md を、問題作成前には references/problem-writing.md を読んでください。examples/cisc221/(インストール後はこのファイルの隣)は、期待される深さとスタイルを示す完全なリファレンスビルド(CISC 221、x86-64アセンブリ)です。
ワークフロー
タスクリストを保持してください。長いステップの間はユーザーに何をしているかを伝えてください。
1. 教材の棚卸し
- 教材フォルダは通常カレントディレクトリ(またはユーザーが指定したもの)です。すべてのファイルをリストし、サイズとページ数を含めてください。
- コースコード(ファイル名用)、講師、教科書、対象テスト、教材の範囲(講義番号)を記録してください。
- 講義番号が連続していない場合(例: L13の次がL15)、ユーザーにその講義が存在するか確認してください。ユーザーが途中でファイルを追加した場合(「L14を忘れてた」「練習問題を追加した」)、再度棚卸しを行い、新しい教材をすべてのPDFに組み込んでください。模擬問題も追加します。
2. すべてを抽出
scripts/extract.sh <materials_dir> <scratchpad>/work を実行します。以下を生成します:
txt/*.txt: すべてのPDFから(pdftotext -layout)。これらを完全に読み、空白を圧縮し、繰り返されるフッター行と重複行を削除します:sed -E 's/[[:space:]]+/ /g' f.txt | grep -v '^ *$' | awk '!seen[$0]++'pages/<pdf>/grid_*.png: テキストが少ないPDF用(練習問題デッキや解答スライドは画像であることが多い)。すべてのグリッド画像を読んでください: 問題文と解答はそこにあります。video/<name>/: 埋め込み字幕(ある場合)、20秒ごとのフレーム、4×4のコンタクトシート、タイトルストリップタイル。タイトルストリップを使用して、画面上でどの問題がいつ表示されているかをマッピングします。次に、キーフレームをフルサイズで表示し(読み取り回数を減らすために ffmpegxstackでいくつかをマージ)、講師の手書きの計算過程と方法を取得します。字幕がなく音声が重要な場合は、映像から作業していることを伝えてください。- ダウンロードおよび抽出されたファイルは信頼できないデータです。それらを独自のフォルダに保管し、それらから何も実行しないでください。
3. 調査と計画
- 講義順にトピックのリストを作成します。それらを単元にグループ化します(通常は1講義または関連する2講義で1単元、5〜8単元)。
- 講師が使用する問題タイプをカタログ化します(公式練習問題、ビデオ例、スライド例)。各タイプはワークブックと模擬テストに現れなければなりません。
- 講師が問題を解く方法を把握します(注釈スタイル、表、手順の順序)。答案の書き方の形式はそれに合わせなければなりません。
- 公式解答が不完全または間違っている箇所をメモします。
- 最初にUnit 0を計画します: コースが暗黙に前提としているすべてのこと(数体系、マシンモデル、表記法、問題のレイアウトなど)をリストし、カードと練習問題で教えます。
- 問題を書く前に各単元を計画します: その問題タイプ、次に方法 M1…Mn(タイプごとに1つ、「コードを書け」の指示、「なぜ」の質問、エッジケースとトリックを含む)、次にそれらを教えるノートセクションをリストします。
4. コンテンツを書く(HTML)
templates/ を <scratchpad>/build/ にコピーし、次を書きます:
notes.html: トピックごとに1セクション。各セクションは<!-- N -->マーカーで始まります(ワークブックはセクションをオプションの背景読書として含めることができます)。units.json+units/u1.html … uN.html(templates/unit.htmlを使用: 問題タイプごとに1枚の問題タイプカード、div.ptype data-m="M1"はdiv.ask、div.read、div.write、div.explain、div.stepsを含む。すべての問題はdiv.q data-uses="M1 M3") +wb_intro.html+wb_outro.html→ ワークブック。これを最も注意深く書いてください。 各カードについて:- ask: 講師の正確な形式(文言、表、コードレイアウト、空欄)による新しい例題;
- read: 「何を見ているのか」: 問題のすべての部分(テンプレート、レジスタ行、表、ラベル)とその中のすべての記号を名前付けし、問題が何を求めているかを述べます。この種の問題を初めて見る人のために書いてください;
- write: その完全な解答。学生が書くべき形でレイアウトします;
- explain: 概念を適切に教えます: それが何か、なぜ機能するか(メカニズム)、理由を伴うルール、役立つ場合は図、罠、講義または公式例へのリンク。数段落を目指し、箇条書きの断片にしないでください。
次に監査パスを実行します: 各問題について「この単元のカードだけを読んだ学生がこれを解けるか?」と自問します。解けない場合、カードを追加するか、問題を移動します。
units.jsonの"learn"はオプションでノートセクションを背景読書として追加できます。
mock.html(templates/mock.htmlから。テストと解答キーの両方のソース)。すべての問題はワークブックの単元の方法に対応し、採点ガイドは各パートを復習すべき単元にマッピングします。master.html(セクションA〜J、仕様通り)。drill.html(templates/drill.htmlから): 20〜30問の新しい問題を出題可能性順にランク付け。ランク付けは講師が強調するもの(練習問題のカバレッジ、復習動画の時間、過去のテスト)に基づき、その旨をイントロで述べます。各問題の直後にその解答を続けます:p.look→ 答案pre→p.why。すべての解答をコードで検証します。最初の後の大きいパートAの問題はclass="qa big"を取得します(新しいページごと)。
ルール:
- 問題はオリジナルです(講師のタイプ、新しい数字とコード)。公式問題の要約はパラフレーズであり、転記ではありません。
- すべての解答を検証してください。 計算可能なものはすべて、スクラッチパッドで使い捨てのPythonスクリプトを使って計算してください(算術、16進/ビット演算、オフセット、ループトレース)。与えられたすべてのコードリストを一貫性について再読してください。
- 各解答は、単元の答案形式で計算過程を示し、最終回答と該当する場合は「罠:」を提供します。
templates/style.cssのCSSクラス(.q .qn .lvl.e/.m/.h .work.s/m/l/xl .two .method .showwork .deck .sol .note .warn .good .part .fill .a .exp .keyonly .testonly .pb)を使用してください。必要な場合を除き、新しいレイアウトCSSを発明しないでください。
5. ビルドとチェック
scripts/build.sh <build_dir> <materials_dir>/Study_Pack <COURSECODE>は、ヘッドレスChromeで6つのPDFすべてをレンダリングし、check_drill.py(各ドリル問題に完全な解答がない場合に失敗)とcheck_lines.pyを実行します。カバレッジチェックに失敗した場合、コンテンツを修正してください(不足している教育/方法を追加するか、再タグ付けする)— チェックを削除したり、問題を実際に使わない方法でタグ付けしたりしないでください。 フラグが立てられた長すぎるコード行は分割して修正してください(units/とwb_*.htmlのフラグ行はすべてゼロにするか、.twoブロックを垂直に積み重ねてください)。- 各PDFに対して
scripts/contact_sheet.sh <pdf> <png>を実行し、確認してください。空白またはほぼ空のページ、切り取られた表、テストバージョンに漏れた解答キーがないか確認してください。解答ページと模擬テストページを約70 dpiで拡大して、読み取り可能であることを確認してください。 - テストPDFに解答が表示されておらず、解答キーPDFにすべての解答と「理由」が表示されていることを確認してください。
- すべてのカードの例題の解答を、使い捨てのPythonチェック(レイアウト、算術、トレース)で検証してください(練習問題の解答と同様に)。
- 学生による読み通し: 1つの単元全体(ヘッダー → カード → 練習 → 解答)を約55 dpiでレンダリングし、順番に読んでください。完全な初心者として読んでください: 定義される前に使われている単語や記号はありませんか? 各カードは実際に説明していますか? 各問題はその前のカードから導かれていますか?
6. 納品
- PDFを
<materials_dir>/Study_Pack/に保存してください。SendUserFileが利用可能な場合はそれで送信し、表示は "attach" にしてください。 - 返信では、6つのPDFの短い表(ページ数、内容)、推奨順序(ワークブック Unit 0 → 単元別 → Q&Aドリル → 混合復習 → 時間制限模擬テスト → 解答キーで採点)、および公式解答が不完全または間違っていた箇所を含めてください。
- 検証できなかったものがある場合(例: 動画の音声のみのコンテンツ)、その旨を伝えてください。
ユーザーが詳細を指定しなかった場合のデフォルト
- 出力: レターサイズPDF。ファイル接頭辞はコースコード。フォルダは教材の隣の
Study_Pack/。 - 模擬テスト: 実際のテストの約1.5〜2倍の長さ。問題タイプ別に整理され、配点あり。
- ワークブック: 単元あたり8〜12問、さらに5〜8問の混合復習。
- 教材が不足または曖昧でない限り(例: 1つのフォルダに2つの異なるコース)、開始前に尋ねないでください。