
著者:
(1) J. Walker Orr、ジョージフォックス大学電気工学・コンピュータサイエンス科、ニューバーグ、オレゴン州、97132、米国 (jorr@georgefox.edu)。
この研究では、ペアプログラミングと組み合わせることで、問題解決スタジオをコンピュータサイエンス教育に適応させる方法を検証します。ペアプログラミングは、業界ではソフトウェアエンジニアリングの実践ですが、教室ではさまざまな結果が出ています。最近の研究では、ペアプログラミングは効果的な教育ツールになる可能性と可能性を秘めていることが示唆されていますが、教室でのペアプログラミングの優れた教育設計と実装とはどのようなものかは明らかではありません。私たちは、バイオメディカルエンジニアリングから生まれた教育法である問題解決スタジオ (PSS) を適応させることで、ペアプログラミングの教育設計のフレームワークを開発しました。PSS では、インストラクターからリアルタイムのフィードバックを受けながら、学生のチームがオープンエンドの問題を解決します。特に、PSS では、難易度を調整できる問題を使用して、あらゆるレベルの学生が関心を持ち、近接発達領域内で機能できるようにします。コース構造は 3 段階に分かれており、最初はデモンストレーションから始まり、次に PSS セッションが続き、最後に報告会が行われます。私たちは、3 年間にわたって CS1 クラスで PSS とペアプログラミングの組み合わせを研究しました。学生へのアンケートでは、高いレベルの関心、学習、モチベーションが報告されています。
ペアプログラミングは、業界でも使用されているエクストリームプログラミング (XP) 手法 (Beck、2000) です (Hannay ら、2009)。ペアプログラミングでは、2 人のプログラマーが 1 つの問題とコンピューターで協力し、1 人のプログラマーが「ドライバー」の役割を担い、もう 1 人が「ナビゲーター」の役割を果たします。「ドライバー」はキーボードを操作してコードを直接記述し、「ナビゲーター」はコードとその設計を観察して質問し、批評して改良します。「ナビゲーター」は受動的ではなく、バグや欠陥を監視し、代替設計を考え、関連するドキュメントやリソースを調べます。ペアプログラミングの有効性はまちまちですが (Hawlitschek ら、2022 年、Hannay ら、2009 年)、場合によっては、ソロプログラミングよりも高品質のコードをより速く生成できることが示されています (Williams ら、2000 年)。ペアプログラミングにより、開発者が協力して作業することで、単独で作業するよりもはるかに早く間違いや欠陥を発見できるようになることが目的です。
教育において、ペアプログラミングが魅力的なのは、徒弟制度と分散学習のパラダイム、「知識は一般に、共通の目的に向けた共同作業を通じて、または個人の視点の違いによってもたらされる対話や課題を通じて社会的に構築される」という考え方に適合するためです (Salomon、1997)。さらに、ペアプログラミングは、学生の満足度を高め、学生のフラストレーションを軽減し、学生の継続傾向を改善し、学生に自己効力感を与えることが示されています (Williams および Upchurch、2001)。ICAP フレームワークは、学生の関与と行動の 4 つのモードを説明し、対話型モードが最高レベルの学生の認知的関与を生み出すとしています。対話型の学習モードは、深く移転可能な知識を生み出すと考えられています (Chi および Wylie、2014)。ペアプログラミングは、ICAP の対話型学習の定義に適合しているため、堅牢で移転可能な概念学習を生み出す可能性があります。最近、Hawlitschek ら(2022)は文献レビューを実施し (arXiv:2311.01693v1 [cs.CY] 2023年11月3日)、教育におけるペアプログラミングのメタスタディでは、ペアプログラミングは学生、特に初心者にとって重要かつ効果的であるが、効果的な指導設計が欠けていると結論付けられました。したがって、ペアプログラミングは教授法として大きな可能性を秘めていることが示されていますが、教室でそれを正しく実装する方法の詳細はまだ明らかにされていません。
教室でのペアプログラミングのための効果的な指導設計の解決策は、問題解決スタジオ (PSS) 学習環境 (Le Doux and Waller、2016) に見出されたと私たちは提案します。PSS は、バイオメディカル エンジニアリングの学生が、手順やアルゴリズムを暗記することなく複雑な問題を解決できるようにするために設計されました。学生は 2 人 1 組で公共の場で明確に定義されていない問題を解き、講師は進捗に合わせてリアルタイムのフィードバックを提供できます。PSS の重要な特徴は、動的な足場作り、つまり、学生に挑戦し続けながらも落胆させないように、問題の難易度を的を絞って調整することです。チームごとにリアルタイムで難易度を上げたり下げたりすることで、できるだけ多くの学生を近接発達ゾーンにとどめておくことができます。講義ベースのコースでは、すべての学生に同じ講義内容と講義方法が伝えられるため、学生のさまざまなレベルに合わせることが困難です。PSS が学生の概念理解を向上させるという確かな証拠があります (Le Doux and Waller、2016)。
PSS とペアプログラミングは自然に調和し、この 2 つを組み合わせることで CS1 コースの目的と教育上のニーズに一致します。このため、本研究では、CS1 教育法への PSS とペアプログラミングの併用について具体的に取り上げます。CS1 コースの 2 つの主な目的は、アルゴリズムによる問題解決スキルと特定のプログラミング言語を教えることです。熟練したインストラクターにとっての課題の 1 つは、問題解決と言語の知識がどちらもインストラクターにとって非常に深く根付いており、第二の性質になっていることです。逆説的に、この高いレベルの理解は、インストラクターがこの知識を当然のことと考えているため、伝えるのに苦労することが多いことを意味します (Le Doux および Waller、2016)。さらに、CS1 コースでは学生の能力と背景が大きく異なります。ただし、PSS とペアプログラミングを統合すると、問題解決とプログラミング言語のスキルを身に付ける実践的な機会を学生に提供することで、これらの課題と目的に直接対処できます。 PSS にペアプログラミングを追加することで、認知的徒弟制度環境を通じてアルゴリズムによる問題解決を教えることができます (Collins 他、1987)。学生は互いに学び合い、インストラクターや他のティーチングアシスタントの指導も受けます。能力レベルが似ている学生は、最近似たような問題を経験したことがあるため、ピアラーニングは役立ちます。つまり、学生は、困難だと感じたこととその障害をどのように克服したかの詳細と特殊性を覚えているため、多くの場合、それらの解決策を伝えるのが得意です。ペアプログラミングの迅速なフィードバック機能は、学生がプログラミング言語の構文とセマンティクスを学ぶのに役立ちます。さらに、ペアコラボレーションと問題解決を促進します。ペアプログラミングは、プログラマーが自分では処理できない問題を解決するのに役立つことが示されています (Hawlitschek 他、2022)。PSS とペアプログラミングを組み合わせることで、学生が問題解決とプログラミング言語のスキルの両方を身に付ける徒弟制度とピアラーニングの両方の環境が生まれます。
この論文は