学童プログラミングの指導経験

約1年半前、私が働いていた会社は教育プロジェクトを開始することを決めました。学生や学校のベンチから将来のプログラマーを準備することです。 この決定は、私たちの地域に資格のあるプログラマーの不足と、卒業しなければならない多くの新卒者がいるという事実の両方によって引き起こされました-大学で受けた教育は、ソフトウェア開発業界の現代の現実を完全に満たしていません。 このプロジェクトは、実際に産業用プログラミングに精通する機会を得る学生と、数年以内に資格のある専門家を受け入れる企業の両方にとって、相互に有益です。



しかし、さらに興味深いのは、学生との共同作業に焦点を当てたプロジェクトの一部でした。 私はこの部分に直接関わっているので、それについてお話したいと思います。



学校教育プログラミングの問題



なぜ小学生と仕事をする必要があるのですか? 8〜9年生の生徒に教え始めることで最大の成功を達成できるように思えます-将来、学習は減少します。 コンピューターサイエンスの学校の先生には、「悪いことを教える」時間があります。これには、プログラミングへの関心を思いとどまらせることが多いため、「感謝ではなく、反対」を学ぶ準備ができている人だけがいます。 「。 残念ながら、この分野への渇望は少ないが、非常に有能な人は、この段階ですでに排除されています。



学校プログラミング教育の主な問題は、この問題に対する体系的なアプローチの欠如です。 問題は、学校で、プログラミングを使用して問題を解決するのではなく、プログラムを開発するのではなく、プログラミング言語自体にのみ教えることです。 学校の授業は、本質的に、言語の構造を学習し、これらの構造に関するタスクを完了することから始まりますが、実際に発生する問題を解決するためにそれらを使用するというより重要なスキルは教えません。 プログラミングの才能を持っている学生はこれを独学で学び、残りは「オタクのための退屈で退屈なレッスン」としてプログラミングのアイデアを得ます。



しかし、プログラミングは「選ばれたもの」だけでなく必要です。 プログラミングレッスンでは、子どもたちは主に情報を操作し、構造化し、管理することを学びます。これらのスキルは、現代生活の絶え間ない「情報の壁」に直面して不可欠です。 コンピューターが文字通りどこにでも浸透し、普通の人にとってはある種の魔法になりつつあるとき、コンピューターの設計方法、プログラムの動作と実行方法、その機能と制限は大まかな理解でさえ、現在の状況では重要なスキルですボタンを押したところ、タコオオです!!!」)。 子供がプログラマーにならなくても、プログラミング中に習得したスキルは、彼の将来の人生で彼にとって良い助けになります。 結局のところ、彼はコンピューターから離れません。



メソッドI.R. Dedinsky


現代の学校のパターンとは異なる教授法の探求は、私たちを素晴らしい、熱狂的な人、イリヤ・ルドルフォヴィチ・デディンスキーに導きました。 彼はモスクワ物理技術研究所(MIPT)の上級講師と物理学と物理学の学校の教師として働いており、学童で大成功を収めています。 、物理的プロセスをシミュレートし、学生からも予想されるよりもはるかに大きなボリュームのプロジェクトを意識的に操作します。 さらに重要なことは、イリヤ・ルドルフォヴィッチはそのような結果を定期的に達成していることです。 これらは星ではなく、普通の生徒です(物理的な学校から)。 彼自身が言うように、「方法は中間農民によって判断されなければならない」。 「星」も常に遅れをとっています。 グループの主要部が到達したレベルは、適用された方法論の質と教師の仕事の真の指標です。 彼の生徒の業績の例は、特にイリヤ・ルドルフォヴィッチのサイトに掲載されています。これは、10年生のIvan Shapovalov Platformによるプログラムです。 (グレード7) 3D-Actionスタイルの自動化されたマルチエージェントシステムのプラットフォーム



私は偶然イリヤ・ルドルフォヴィッチと会い、彼と個人的に話し、彼の方法についての話を「直接」聞きました。 それを基礎として、私たちは同じ原則に基づいて彼のトレーニングプログラムの独自のバージョンを開発しました。 残念ながら、教育的経験がないため、イリヤルドルフォビッチの元の方法論を使用することは非常に困難です。 Ilya Rudolfovichは1年以上にわたってトレーニングプログラムを改善してきたため、その利点と機会をまだ十分に評価していない可能性があります。 経験を積むことで、私たちのプログラムで何が改善できるのかが理解できると思います。 しかし、ご存知のように、トレーニングプログラムは、軽率にコピーできるものではなく、直接理解する必要があります。 以下は、トレーニングプログラムの根底にある原則であり、私の実践でそれらを理解し、適用しています(著者の方法論の原則の元のプレゼンテーションは、 IR DedinskyWebサイトの「基本資料」セクションにあります )。



  1. 「良いことだけを教えてください。」 子供たちはすぐに、最初のレッスンから、正しい、良い目標と正しい、良い例を見るべきです。 何かに注意を払わない場合(たとえば、コードの書式設定)、自分で行かせてください。子供たちは、自分で「理解」したときにそれを行います。 その後、彼らは再訓練される必要があり、これは最初から正しく教えられるよりもずっと生産的ではありません。 したがって、最初のレッスンでは、スペースとインデントを正しく使用する方法と、プログラムを論理的な断片に分割する空行が重要である理由を子どもたちが学びます。 最初のレッスンから、名前の質の概念が導入され、子供は変数と関数にわかりやすい名前を使用する必要があります。
  2. 「プログラミングではなく、言語を教える。」 子どもたちに与えられたすべての概念は、問題を解決するためのツールとして表示されます。 このようなことでもありません。最初に問題が定式化されると、問題を「感じる」機会が与えられ、利用可能な手段(宿題として、または教室で教師と一緒に)を使って解決しようとします。 たとえば、画面に家を描くことができます(このような機能は既にあります)。 画面に5つの家を次々と描きましょう。 もちろん、タスクは関数を5回呼び出すことで解決できます。 しかし、テクノロジーをチェックして、私たちは質問をします。10の家が必要な場合はどうでしょうか? 50? 100? そして4なら? もしそうなら、画面にどれくらい収まりますか? または、ユーザーがプログラムを入力するのと同じくらいですか? その後、子供たちはこの問題をどのように解決できるかを話し合うように招待されます。通常は、教師自身の助けを借りて、彼ら自身がさまざまな近似度でサイクルのアイデアを策定します。 その場合にのみ、学習用に選択されたプログラミング言語のループ演算子の構文が使用されます。


タスクシーケンス



子どもたちが習得した知識とスキルのシーケンスは、子どもたちの実際の使用に焦点を当てています。 上で書いたように、構造は、学習過程で子供に生じる問題の結果として与えられます。 もちろん、これらの問題が特定の順序で発生するように、タスクは正確に選択されます-これは教師のタスクの1つです。 タスクは原則に従って選択されます。スキルが重要であるほど、早く学習されます。 重要性は、産業コードでの構造の使用頻度として理解されます。 それが、最も重要なプログラミング要素である関数ができるだけ早く研究される理由です。



現代の小学生の問題の1つは、数学的な教育を受けていても、コンピューターを操作する能力(誰もが音楽のダウンロード方法やSkypeのインストール方法を知っている)の錯覚であると同時に、プログラミングに対する恐怖と不確実性です(「難しい、わかりません」)。 したがって、最初のレッスンでこの不安を取り除くために、子供たちはビジネスゲームをするように誘われます。 。 ゲーム中、参加者は自分自身を広告代理店の所有者と考え、特定の顧客(教師)が広告バナーを注文したいと考えています。 しかし、疲労について言及し、契約書が作成される回答から彼に質問することを申し出る人は説明しません。 TKのそのようなベールに包まれた議論。 彼は、お金、バナーのインストール、インストールの許可などに関するすべての質問を安心させます。「これは問題ではありません。 お金があり、許可があります。そのような広告をかけるのは初めてではなく、労働者はすでに呼ばれています。」 キャッチは、 明日バナーが必要であり、そのサイズは100×400 メートルであるということです 。 彼は彼と一緒に何をしますか?



なぜバナーが必要なのか(有害な顧客の独白)


「ほら、私は大規模な取引ネットワークの所有者です。」Teapot Unlimited。 最高級の磁器のコレクションカップから金属製のティーポットまで、あらゆる料理を販売しています。 つい最近、彼らはプラチナから5000万ドルでエミレーツにサービスを売りました。 今、安価な料理の大量供給に関する中国との交渉。 それで、私はあなたの街に店を開いたのですが、たまたま広告を忘れていました。 助手は病気になり、私の頭から飛び出しました。 開始日を変更することはできません-すべてが計画され、注文され、評判が損なわれます...正直に言うと、今日、競合他社がこの問題を抱えて、私たちは多くのことを話し、お茶を飲みました。彼らにはいくつかの困難があり、彼らは命令を受け取らないだろうと。 そして、私はあなたのところに来ました。 一般的に、バナーが必要です。 少なくとも1つ。 競合他社と話をするのは少しうんざりしているので、注文の詳細をもう一度述べたくはありません。したがって、これをしましょう。何か質問したり明確にしたい場合は質問してください。これが契約のテキストになります。」



以下は、学生の質問に対する顧客の回答、描写する必要があるものの説明、および方法などです。 ここで、描画、サイズ、およびタイミングが決まります。 ゲームがモスクワで行われる場合、この巨大なバナーは超高層ビルの壁に貼り付けるように提案されているため、遠くから見ることができます。 私の場合、超高層ビルがないため、プロジェクトでも、風船を空想しなければなりませんでした。



誰がこれをしますか?


このサイズとタイミングについて予期せぬ回答をした後、彼らは少しショックを受けました。 これは重要なポイントです。彼らは、割り当てに明示的に含まれていなくても、仕事を始める前に実質的にすべての詳細を見つける方法を学びます。 実際、これはTKの編集に関するゲームトレーニングです。 このフェーズが完了すると、教師はステージ上に「秘密兵器」を展開します。設計会社には、必要なバナーを時間通りに描画できるおなじみのアーティストがいます。 しかし、このアーティストは遠く離れた荒野に住んでおり、彼に連絡する唯一の方法は電話をかけることです。 彼は悪いタイプです。あなたは彼と正確かつ正確に話す必要があります。さもなければあなたは少しなじみのない言葉を聞くでしょう-彼は電話を切って再び電話をしなければなりません。 次は、あなたが彼と話す必要があるフレーズのリストです:キャンバスの設定、色の設定、線の描画など。 実際、これが抽象パフォーマー(「ダムアーティスト」)と彼のチームシステムの導入方法です。 しかし、正式なだけでなく、状況に関連して、学生がより自然に認識しています。



その後、子供たちは集合的に「愚かなアーティスト」(教師が演じる役割)とチームごとに「呼び出し」、チームごとにアクションを実行する「アーティスト」を管理します-まあ、または構文エラーで「攻撃」して電話を切ると、ダイアログが再び開始されます。 本質的に、これは、解釈モードでエグゼキュータが擬似コードで最初のプログラムを実行することです。 4〜5回失敗すると、プログラムが作成されます。



したがって、最初のレッスンでは、子供は2つの重要なポイントを学習します。タスクを設定し、最初のプログラムを書くことです。 プログラムはボード上に書かれており、インデント、空白行およびスペースに非常に注意が払われています-しばしば省略され、後で意識的に教えることは非常に困難です。



擬似コードプログラム
  (          )

 

    100 400

    
   25 300 75 300
   25 300 50 100
   50 100 75 300

    
   65 200 40

    
   40 180 20 80

   

      
      





, .



C++
#include "TXLib.h"

int main()
{
  txCreateWindow(100, 400);
  
  txSetColor(TX_RED);
  txLine(25, 300, 75, 300);
  txLine(25, 300, 50, 100);
  txLine(50, 100, 75, 300);

  txSetColor(TX_GREEN);
  txCircle(65, 200, 40);
  
  txSetColor(TX_BLUE);
  txLine(40, 180, 20, 80);

  return 0;
}

      
      





TXLib.h (TX « ») API , Win32. .



, — , , , . , : «, ? — . , , … , , ».





, . main 50-100 , . «» — , void DrawMan(),— . «» . . , .



, . . « », — . , «» .



— , «». «» ( ). , . , . : , , «» , . () . , .



, «», . , .



, . «» ( .h , , ). , , , . , , , (, SDK peer review).



( «»). , , , , «» . . (: .)



— «». , , . , if , , , «» «» . if — «», , . () () .



, . , . « „“ „“ — , ».



, , , . .





( ). — 2 , — 3 (120 , ). , 8 11 . — . , 8-9 10-11 . , « » ( , «-» — ) . , — (if //), «» , «». , , , . , , , , .



, , , . . , — . , , , , — , , . , . (, , «» ) , . , , , , ( ). , , , . , : , / / / . , : , ? «» , ? — «», , , , , . , . , , . «… . — , ! , , — ». , , .



, . , , . , — , . , — .







TXLIb

TXLib

(pdf)

« »

(pdf)




1 « » « » . . . ( )



All Articles