学習者がAIコード生成ツールとどう関わるか
初心者がコーディングを学ぶときにAIツールをどう使ってるか見てみよう。
― 1 分で読む
目次
大きな言語モデル(LLM)、例えばOpenAI Codexは、初心者がコーディングを学ぶための人気のツールになってる。これらのモデルは、シンプルな指示をもとに動作するコードを作成できる。ChatGPTやGitHub Copilotのようなアプリを通じて多くの人がこれらのツールにアクセスできるようになっているから、特に若い学習者が自己ペースで学ぶ環境で、初心者プログラマーがこれらのツールとどのように関わるかを探るのが重要だ。
この記事では、10歳から17歳の33人の学習者がPythonを学ぶ際にAIコードジェネレーターをどのように使ったかを見ていく。学習者たちはこのAIツールの助けを借りて45のコーディングタスクを完了した。彼らのインタラクションを分析することで、AIとどのように関わっているのか、何を頼んでいるのか、プロンプトをどう書いているのか、AIが生成したコードをどう使っているのかをよりよく理解できる。
研究の質問
私たちの研究では、以下の2つの主な質問に焦点を当てた:
初心者はコーディングを学ぶ際、AIベースのコードジェネレーターをどのように使ってインタラクションするのか?
これらの学習者は、プログラミングの問題を解決するためにAIコードジェネレーターを使用する際に、どのようなコーディングアプローチを取るのか?
データと方法論
これらの質問に答えるために、学習者がプログラミングタスクに取り組む際にAIコードジェネレーターとどのようにインタラクションしたかを探った以前の研究からログデータをレビューした。そのデータには、コードの変更、コンソールの実行ログ、AI生成ログ、提出ログが含まれていた。
学習者たちは3週間にわたって構造化された学習プランに従った。彼らはまずプログラミングの概念についての導入から始め、その後Pythonでのコーディングタスクに取り組んだ。このトレーニングフェーズでは、AIコードジェネレーターが彼らのコーディングを助けるために利用可能だったが、学習の評価を行うテスト中はアクセスできなかった。
学習者がAIコードジェネレーターを使った方法
学習者はコーディングタスクの中で様々な状況でAIコードジェネレーターを使用した。私たちは5つの主要なシナリオを特定した:
タスクの開始時:ほとんどのケースで、学習者はタスクの最初にAIを呼び出し、まずコードを書くことはなかった。彼らは全体のタスク説明をコピーしたり、タスクを小さい部分に分けたりすることが多かった。
エディタをクリアした後:いくつかの学習者は、エラーに苦しんだ後にコードをクリアしてからAIに助けを求めた。
手動でコードを書いた後:多くの学習者は、自分でいくつかのコードを書いた後にAIを使った。彼らは特定の部分のサポートや、自分のコードのデバッグのためにAIに頼ることが多かった。
前回のAI使用の後:多くの学習者は、前回の提案に基づいてコードをさらに洗練させるためにAIに連続でリクエストをした。
すでに解決策を持っているとき:いくつかのケースでは、学習者はタスクを完了しているにもかかわらず助けを求めることがあった。
学習者がAIに何を頼んだか
AIを使用する際、学習者は特定のリクエストをしていた。彼らはしばしばAIにゼロからコードを生成させたり、新しいコードの部分を作成させたり、既存のコードのエラーを修正させたりしていた。私たちが見つけたのは:
多くの学習者が、タスクを小さい部分に分けるのではなく、AIに完全な解決策を提供するよう頼んでいた。
多くのリクエストは基本的な構文や動作に関するもので、学習者はコードを正しく構成することに主に焦点を当てていた。
いくつかの状況では、学習者が必要なことを明確に理解していなかったため、あいまいなプロンプトが生成され、効果的なコード生成ができなかった。
プロンプトの書き方を分析
学習者が提出したプロンプトは、質や明確さが異なっていた。私たちが気づいたのは:
半数以上のプロンプトがタスクの説明を直接コピーしたものであり、他はアダプテーションであった。
一部の学習者は、擬似コードをリクエストに含めて、望む結果をより良く伝えていた。
多くのプロンプトには具体的な詳細が欠けていて、AIが正確な結果を生成するのを難しくしていた。例えば、学習者は変数の初期値を指定するのを忘れることがあった。
学生がプロンプトを作成する際の一般的なパターンが見られ、効果的なリクエストを構築するためのさらなるガイダンスが必要であることが明らかになった。
AI生成コードの特性
AIが生成したコードのほとんどは概ね正しかったが、一部には問題があった:
生成されたコードの大部分は学習資料に従っていたが、一部は不必要な複雑さを生み出していた。
一部の学習者は、AIが既存の作業に基づいて不正確なコードを再生成する問題に直面し、タスクがさらに複雑になった。
AI生成コードはしばしば小さな重要な要素を欠いていて、全体のプログラムに機能上の問題を引き起こしていた。
学習者がAI生成コードを使った方法
AIがコードを生成した後、学習者はその出力と様々な方法でインタラクトした:
配置:学習者は一般的にAIが生成したコードをプロジェクトの正しい位置に配置していたが、コードのインデントが不適切だったり、必要な変数が宣言される前に配置されたりすることもあった。
検証:多くの学習者はAIが生成したコードを積極的にテストしていた。出力がどのように変わるかを見るために値や条件を変更し、最終的な作品を提出する前に検証のために追加のコードを加える学習者もいた。
修正:学習者はしばしばAIが生成したコードを自分のニーズに合わせて調整した。一部はタスクの要件に出力が合うように小さな変更を加え、他の学習者は編集の影響を理解せずに動作するコードを壊してしまうことがあった。
AIコードを例として使用:さまざまな状況において、学習者は不正確なコードをAI生成の代替案で単に置き換えるのではなく、両者を注意深く比較し、AIの提案に基づいて手動で修正を行っていた。
異なるコーディングアプローチ
私たちの分析を通じて、学習者がAIジェネレーターでコーディングをする際に取った4つの異なるアプローチを特定した:
AI単一プロンプト:これは最も一般的なアプローチで、学習者は1つのプロンプトを使って完全な解決策を作成した。これは初期タスクの正確性スコアが高くなるが、後でそのコードを修正する時には低いスコアにつながることが多かった。
AIステップバイステップ:このアプローチでは、学習者がタスクを部分に分け、各セクションごとにAIにプロンプトを出した。この方法はあまり採用されなかったが、各プログラミングコンポーネントをよりよく理解することができた。
ハイブリッド:一部の学習者は自分のコードとAIのサポートを組み合わせて、自分でコードの一部を書いて、他の部分にはAIを利用した。このアプローチはより良い学習成果の可能性を示していた。
手動コーディング:少数の学習者はすべてのコードを手動で書き、AIコードジェネレーターの助けをあまり頼らなかった。
過剰依存と自己調整
多くの学習者はAI生成コードとの積極的な関与を通じて強い自己調整を示す一方で、他の学習者はAIツールに過剰に依存している兆候を示した。一般的なパターンには以下が含まれていた:
問題を自身で考えずにAIに完全な解決策を依存しすぎること。
AIが常に正しい解決策を提供すると思い込んで、AI生成コードを提出する前に十分にチェックしたり検証したりしなかったこと。
一部の学習者は、同様のコードスニペットを繰り返しAIに求めて、プログラミングの課題を理解するために必要な批判的思考を避けていた。
教師やデザイナーへの影響
AIコードジェネレーターが学習環境に広く統合されるにつれて、教師には以下のことが重要である:
学習者がAI生成コンテンツと批判的に関わることを奨励し、AIが生成したコードを単に受け入れるのではなく、確認や理解を促す。
効果的なプロンプトの構築方法に関するサポートを提供し、初心者がAIに対してニーズをより明確に伝えられるようにする。
将来の学習環境をデザインする際には、AIと効果的に生成されたコードをいじることを促すようにし、探索と実験を可能にする。
AIの助けと独立した問題解決のバランスを促進し、生徒がプログラミングの概念に深く関与するようにする。
結論
私たちの研究は、初心者学習者がコーディングを学ぶ際にAIコードジェネレーターをどのように使用しているかを明らかにする。多くの学習者がAIの助けを利用している一方で、一部は基礎となるプログラミング概念を完全に理解せずに依存する危険があることが分かった。この分析は、これらのツールとの相互作用において学習者を導く重要性を強調し、彼らがAI生成の解決策だけに頼るのではなく、コーディングの理解を深めることを保証するためのものである。
学生がAIコードジェネレーターとどのようにインタラクトするかを調べることで、将来の教育実践、ツールデザインの改善、およびプログラミング教育における効果的な学習戦略を促進することができる。学習者が批判的かつ独立して考えるスキルを持つことが、AIツールが進化しプログラミングやテクノロジー教育に不可欠になるにつれて重要になるだろう。
タイトル: How Novices Use LLM-Based Code Generators to Solve CS1 Coding Tasks in a Self-Paced Learning Environment
概要: As Large Language Models (LLMs) gain in popularity, it is important to understand how novice programmers use them. We present a thematic analysis of 33 learners, aged 10-17, independently learning Python through 45 code-authoring tasks using Codex, an LLM-based code generator. We explore several questions related to how learners used these code generators and provide an analysis of the properties of the written prompts and the generated code. Specifically, we explore (A) the context in which learners use Codex, (B) what learners are asking from Codex, (C) properties of their prompts in terms of relation to task description, language, and clarity, and prompt crafting patterns, (D) the correctness, complexity, and accuracy of the AI-generated code, and (E) how learners utilize AI-generated code in terms of placement, verification, and manual modifications. Furthermore, our analysis reveals four distinct coding approaches when writing code with an AI code generator: AI Single Prompt, where learners prompted Codex once to generate the entire solution to a task; AI Step-by-Step, where learners divided the problem into parts and used Codex to generate each part; Hybrid, where learners wrote some of the code themselves and used Codex to generate others; and Manual coding, where learners wrote the code themselves. The AI Single Prompt approach resulted in the highest correctness scores on code-authoring tasks, but the lowest correctness scores on subsequent code-modification tasks during training. Our results provide initial insight into how novice learners use AI code generators and the challenges and opportunities associated with integrating them into self-paced learning environments. We conclude with various signs of over-reliance and self-regulation, as well as opportunities for curriculum and tool development.
著者: Majeed Kazemitabaar, Xinying Hou, Austin Henley, Barbara J. Ericson, David Weintrop, Tovi Grossman
最終更新: 2023-09-25 00:00:00
言語: English
ソースURL: https://arxiv.org/abs/2309.14049
ソースPDF: https://arxiv.org/pdf/2309.14049
ライセンス: https://creativecommons.org/licenses/by/4.0/
変更点: この要約はAIの助けを借りて作成されており、不正確な場合があります。正確な情報については、ここにリンクされている元のソース文書を参照してください。
オープンアクセスの相互運用性を利用させていただいた arxiv に感謝します。