分解はコンピュータ サイエンスの基本的なスキルであり、コーディングの問題を解決する方法について生徒が長期的に理解するために不可欠です。 この記事では、分解とは何か、分解が重要である理由、および学生の分解学習を促進する方法について説明します。
分解とは何ですか?
分解は、複雑な問題をより小さく、より管理しやすい部分に分割するプロセスです。 これにより、学生は一度に問題の 1 つのコンポーネントを解決できるため、コーディング プロジェクトの作成プロセスが簡素化されます。
なぜ分解が重要なのでしょうか?
学生はコーディングを学び始めると、言語について新しい挑戦的な方法で考えることに直面します。 推測やニュアンスに満ちた話し言葉でのコミュニケーションから、コーディングに必要な正確で論理的な構造へ移行する必要があります。 この調整は生徒にとって非常に難しく、しばしば成功の妨げになります。 分解は、学生がコーディングを成功させるために習得する必要がある重要なコンピュータ サイエンス スキルです。分解により、学生は話し言葉から始めて、コーディング プロジェクトで使用できるものになるまで洗練することができます。
問題を分解すると、少しずつ解決できるため、生徒が圧倒されるのを防ぐことができます。 学生がコードを書き始める前に問題を小さな部分に分解すると、次の部分に進む前に、プロジェクトの小さなセクションをそれぞれ構築してテストして、期待どおりに動作することを確認できます。 これは、目標を達成するために必要なすべての手順を一度にコード化するよりもはるかに簡単で、学生がエラーのトラブルシューティングを行うときに長いプロジェクトの中で道に迷ってしまうというフラストレーションを防ぐことができます。
また、分解のプロセスにより、生徒はプロジェクトを構築するための体系的なアプローチが得られ、生徒が解決策への道を推測したり確認したりする誘惑が排除されます。 推測して確認することは問題を解決する非効率的な方法であり、学生がますます複雑なコーディングの課題に取り組み始めると、効果がなくなります。
さらに、プロジェクトを分解することで、学生はコード内のパターンを特定し、コードのセクションを構築、変更、再利用できるようになります。 これにより、プロジェクトの構築とトラブルシューティングが容易になると同時に、学生が作成しているコードをより深く理解できるようになり、その理解を将来のプロジェクトに活用できるようになります。
最後に、分解により、グループでロボット工学プロジェクトを作成するために学生が協力する際のコラボレーションも促進されます。 エンジニアリング ノートに記録された分解されたプロジェクトは、学生がグループ プロジェクトについて話し合ったり、他のグループと共有したりするときに使用できる成果物となります。
分解を促進する
分解は、学生がプロジェクトを構築し始める前の、計画段階にあるときに発生します。 学生は、コードを書き始める前に、分解プロセスをエンジニアリング ノートに記録し、それを共有する必要があります。 学生によるエンジニアリング ノートブックの使用について詳しくは、この記事を参照してください。
分解に取り組むための次のシンプルな 3 ステップのフレームワークを生徒に提供します。
- プロジェクトが成功したときにロボットが示す結果を述べることで、プロジェクト の主な目標を特定します。 この目標をエンジニアリング ノートに記録します。
- 目標を達成するためにロボットが実行する必要がある主な手順を決定します。 目標を達成するためにロボットが完了する必要がある主な手順または全体像の手順を検討し、記録します。 これらの高レベルの手順をエンジニアリング ノートブックに記録します。
-
主要なステップをロボットの動作の可能な限り小さな段階に分割します。 主要な各ステップを、ロボットが実行できる最小の動作に分割します。 これらの分解されたステップをエンジニアリング ノートに記録します。
- ロボットの各動作は、1 つの対応するブロックまたはコマンドと一致できる必要があります。 そうでない場合は、ステップをさらに分解できます。
この例では、学生がプロジェクトを分解して VEXcode VR Wall Maze + Playground で迷路を完成させています。
ステップ 1: プロジェクトの主な目標を特定します。 エンジニアリングノートに目標を記録します。
ステップ 2: ロボットが目標を達成するために実行する必要がある主な手順を決定します。
- ここで、学生は、ロボットが迷路の開始点から終了点まで移動するために必要なすべての動作を熟考し、それらをエンジニアリング ノートに順番にリストしました。
ステップ 3: 主要なステップをロボットの動作の最小単位に分割します。
- 学生は、各ステップを完了するために必要なおおよその値を決定し始めることができます。 これらの値は、VEXcode でプロジェクトをビルドするときにテストおよび調整する必要があります。
- 学生は、分解された各ステップが 1 つの VEXcode ブロックに直接対応していることを確認する必要があります。 そうでない場合は、ステップをさらに分解する必要があります。
学生がプロジェクトを個々のブロックまたはコマンドのレベルまで分解したら、プロジェクトの計画段階から実装段階に進むことができます。 プロジェクトを構築するには、ステップ 2 で決定した主なステップをコメントに転送し、ステップ 3 で完全に分解された各動作に対応するブロックまたはコマンドをそれらのコメントのそれぞれに追加する必要があります。
学生は、次の動作に進む前に、各動作 (または論理的にグループ化された一連の動作) をテストしながら、一度に 1 つの分解ステップでプロジェクトを構築する必要があります。 この段階では、学生は自分が持っているリソースを使用して正しいパラメータ値を決定する必要があります。 たとえば、上記の VEXcode VR の例では、各迷路の正方形が直径 300 mm であるという知識を使用して距離値が決定されています。 値を決定する方法は状況によって異なりますが、コーディング プロジェクトを作成するプロセスでは常に値のテストと調整が必要です。
学生の分解学習をサポート
学生が STEM Lab または他の VEXcode プロジェクトからの課題に取り組み始める前に、時間を取って自分で分解に取り組み、学生が抱くかもしれない質問に答える準備を整えてください。 コーディングを開始する前に、プロジェクトの分解計画を示すよう学生に奨励します。これにより、分解のプロセスを強化し、タスクを可能な限り最小のロボットの動作に分解していることを確認できます。 それぞれの動作に対応するブロックまたはコマンドを識別できる必要があることを生徒に思い出させます。
- 生徒が、プロジェクトの目標を達成するためにロボットが実行する必要がある主要な手順、または全体像の手順を思い描くのが難しい場合は、次のように勧めます。
- ロボットが目標を達成するために必要なパスを描きます。
- ロボットが目標を達成するために必要な手順を実行します。
- ロボットが目標を達成するために必要な手順を説明します。
- 生徒が自分のステップが個々のブロックまたはコマンド レベルまで分解されているかどうかを判断するのに苦労している場合は、次のように尋ねます。
- ロボットがその動作を完了するには、いくつのブロックまたはコマンドが必要ですか?
- ロボットは 1 つのブロックまたはコマンドだけを使用してそのステップを完了できますか?
- その動作をさらに小さなロボットの動作に分解するにはどうすればよいでしょうか?
学生が分解を学ぶのをサポートすることで、コンピュータ サイエンスにおける将来の問題解決のための強固な基盤を確実に築くことができます。
教室での生徒の分解学習の促進についてさらに質問がありますか? PD+ コミュニティで彼らに依頼する 1 、または 1 対 1 のセッション をスケジュールして、VEX エキスパートと話をします。