回答:
計算を学ぶための楽しい方法:
...このゲームは型付けされていないラムダ計算を表します。空腹のワニはラムダ抽象化であり、古いワニは括弧であり、卵は変数です。摂食ルールはベータ削減に対応しています。色の規則は、(慎重すぎる)アルファ変換に対応しています。古い時代のルールでは、括弧のペアに単一の用語が含まれている場合、括弧を削除できると述べています。
私の経験では、組み合わせ論、グラフ理論、プログラミング、アルゴリズムなどの基本的なトピックを教えることは難しくありません。
IOI大会や全国大会で取り上げられているトピックを調べることもできます。IOI競技に関連するサマースクールやワークショップはかなり早い段階から始まります。
このようなワークショップでの私の個人的なお気に入りのトピックは、観客とゲームをプレイすることで動機付けが簡単なので、組み合わせゲーム理論です。
また、ACMのK-12 CS カリキュラムリソース、特にK-12のモデルカリキュラムの 11ページと12ページも確認してください。
いくつかのアイデア。私には、コンピュータサイエンスに興味のある子供向けの高品質で低コストのオプションが爆発的に増えているようです。科学技術工学数学教育と呼ばれるSTEMとの強いつながりに注意してください。(AがAlgorithmicsを表す新しいキーワードSTEAMを使用して、CS側を強調/提唱できると考えていました。)
ブール演算の概念を試して、数学演算を表現してください。2進数から10進数への変換、10進数から2進数への変換、EEからのキャリーを含む多段加算器など。CNFまたはDNFから任意の関数を構築します。若い子供でも、AND、OR、NOTを使用して機能的完全性の概念を理解できます。このような安価なマイクロコントローラを含むもののためのいくつかのラジオシャックキット。たとえば、基本的なスタンプキットを参照してください。この目的のために、いくつかの無料/オープンソースの回路シミュレータがあります。残念ながら、これまでコンポーネントのライブラリで配布されているものを見つけることができませんでした。logisimは人気のあるものの1つです。
Crazy Machinesと呼ばれるPC / ps3 / etcを含むさまざまなシステムで実行されるこのクールなゲームがあります。これは、ソフトウェアの物理シミュレーションを理解し、相互作用するコンポーネントと連鎖反応のシステムを子供に考えさせるために使用できます。新しいps3バージョンには、スイッチやゲートを含む電気およびロジックコンポーネントが多数あります。
ロボット工学。特にレゴマインドストームロボット工学を試してください。ループ、条件、サブルーチンなどを許可する洗練されたソフトウェア。サブルーチンはグラフィカルブロックに含まれています。つまり、そのビジュアルプログラミングシステムは、数年前は非常に最先端でした(現在はおもちゃ)。インスピレーションを得るために、YouTubeには、この最先端のone cubestormer IIなど、多くのルービックキューブロボットソルバービデオがあります。少なくとも1つのデザインは、広く利用可能な本に収められています。たとえば、Daniele Benedettelliによるlego mindstorms nxt thinking robotsなどです。また、最近、この多くの自由度の空気圧ロボットハンドを見ました。First Robotics Competition Leagueも参照してください。
いくつかの簡単なものの基本的なコードを書く。ソートなど。さまざまなソートアルゴリズムの経験的研究を行い、結果を監視/グラフ化します(たとえば、入力サイズを増やすためにバブルソートとqsortのパフォーマンスをグラフ化します。たとえば、このWikipediaページの挿入ソートのアニメーションを参照してください)。アニメーションを並べ替えます。きちんとしたグラフィカルなアナログは、整数や文字列の代わりにカードのデッキをソートすることです。また、多くのグラフィックスや、コードで図を描くなどの幾何学的な操作も優れた演習です。
ゲームプログラミング。これはいくつかの優れたゲームで実行できます。たとえば、リトルビッグプラネットには、複雑な組み込みの構築システムとコンポーネントを使用して、子供が実際に独自のゲームを作成できる洗練されたサブシステムがいくつかあります。この方法で相互作用/発生現象を研究することさえできます。インターネットにアップロードして共有できます。この目的のための別の言語はスクラッチと呼ばれます。その有効性について多くの学術的研究を行っているPapertの古典的なものはLogoです
チューリングマシンシミュレータを使用し、プログラムを構築します。いくつかあります。彼らはいくつかのプログラムが付属しています。グラフィカルであるほど良い。教授がクラスのために書いたものもあります。これはjavascriptで書かれたものです。実際にこの分野で最高のものを知りたい[そのための別の質問かもしれない]
あなたが教えている人とその範囲のエリアに依存します。
WANTSはほとんど何でも処理できるはずの12〜14歳ですが、彼は自分の時間でそれを引き出す必要があります。複雑な概念を若者(またはほとんどの人)にプッシュすることはできません。
私はこの時点でiWozを聴いています(その年齢層をターゲットにしているようで、非常にインスピレーションを与えるでしょう)、その年齢までに彼はいくつかの非常に高度な回路を組み立てていましたが、彼の父は質問に答えただけで、彼を決して手渡しませんでした彼が準備ができていなかった新しい概念)
または、彼は完全に無関心であり、あなたがそれについてできることは何もない。
しかし、子供たちはシンプルなものに本当に感心することができます。彼が好きなゲームを見つけて、彼がそれを再現するのを手伝った場合(非常に表面的でありながらグラフィカルに類似したレベルであっても)、あなたは本当に彼を成功させるかもしれません。
または、さらに良いことに、彼が好むかもしれない既存のオープンソースゲームを見つけたら、彼にそれをプレイさせ、彼を興奮させるために少し修正を加える方法を彼に見せてください。(変更は常に始めるための最良の方法のようです)
実際には、2年生と3年生(対象年齢グループ)が1人いましたが、4年生、5年生を主に含むサマーキャンプを教えました。キャンプは1週間で、XNAにif、if、if、photoshopの簡単な説明の基本を教えました。XNAの問題は、私が彼らが週末までプログラムするのをかなり助けなければならなかったことでした。私たちが行った他のキャンプには、レゴロボット工学とGameMakerが含まれていました。
プログラミングの原理に基づいたSpaceChemと呼ばれるビデオゲームがあります。詳細については、http://gangles.ca/2011/06/19/programming-in-spacechem/をご覧ください。
若者にCSの理論について考えさせ、問題自体を解決させるための良いソースは、「Computer Science Unplugged」http://csunplugged.org/シリーズです。私たちは学校に行って子供たちと一緒に活動したり、子供たちが私たちと一緒にユニに来たりします。
それは何年も続いており、多くの言語に翻訳されています---そして記事はセッションの実行方法、必要な資料、それらを実行した人からのヒントに関する情報を提供します。
強くお勧めします!