web-dev-qa-db-ja.com

C ++の基本に苦労している生徒を指導する

私は、最初のプログラミング言語であるC++の基本を学ぶのに大きな問題を抱えている数人の生徒を指導しています。私は、最初のCSコースを失敗または落とした優秀で優秀な学生をたくさん知っています。私が家庭教師をしているすべての人は、クラスでの彼または彼女の経験について同様の説明を与えます。インストラクターはあまりに速く進み、講義では何も意味がありません。このCSクラスの前は、これらの苦労する学生のほとんどは、ワープロ、Webブラウザ、またはその他の娯楽以外の何ものとしてもコンピュータに興味を示していませんでした。コンピュータは機能するブラックボックスですが、なぜそれを台無しにするのですか?

私の推測では、コンピュータサイエンスの抽象概念とおなじみの概念との関連付けに問題があると思います。つまり、これらの学生は数学、生物学、または物理学を学ぶ方法を知っているかもしれませんが、プログラミングに関してはこれらの技法は機能していません。

誰か提案やアドバイスはありますか?私が手助けしている学生は、このクラスに失敗するに値しません。インストラクターがこれらの学生の学習スタイルを考慮していないことは明らかです。つまり、インストラクターは生徒を失っていません。

26
AdmCrunch

ほとんどすべての初心者が苦労しているいくつかの事があります。 学生はコードの読み方を知る必要があります彼らがコードの書き方を学ぶ前に==。

  • 命令型言語の逐次的な性質。レシピのように、関数が1つずつ順番に実行されることを理解するのは困難です。これを克服する1つの方法は、デバッガを介して機能するコードを示すことです。
  • 代入演算子(=)Cスタイルの言語では、非常に誤解を招きます。 a = 5は、「5を変数に割り当てるanot「aは5に等しい」という意味です。
  • 初心者にとっては、他の関数がジャンプできるコードの構造化ブロックとして関数を記述しても安全です。また、初心者は、C++では関数の引数が名前ではなく順序で識別されることを理解するのに苦労しています。
  • ほとんどの命令型プログラミング言語には、宣言型コンポーネントと手続き型コンポーネントがあり、C++も例外ではありません。コードの一部がプログラムの構造を説明し、他の部分(関数)がプログラムの動作を説明することを生徒が理解していることを確認してください。
  • デバッガーでプログラムをステップ実行することは非常に重要であり、しばしば無視されているティーチングツールです
  • 式にはtypesがあります。 3+3は整数、3.5 + 3はdouble、"3" + "3"(C#の場合)は文字列、x == 5 * 3 + 25はブール値(またはC++では整数)です。生徒がこの概念に完全に満足できることを確認するために、多くの時間を費やしてください。
  • 変数スコープは、初心者が常に混乱するものです。生徒にスコープのしくみを説明し、あるスコープで定義されたxが別のスコープで定義されたxと異なることを生徒に知らせます。
  • すべての変数は、存続期間中に少なくとも3回参照されます:宣言、代入(宣言と同じ行で行われることが多い)、消費。これらのいずれかが欠けている場合、どこかに概念的な間違いがあります。同じ理由で、動作中のプログラムを分析している場合は、コードでこれらの3つを常に検索して、変数の目的を理解できます。
  • forループは、whileループを使用した適切な反復の例が提供されるまで、教えるべきではありません。省略構文は混乱を招き、生徒はなぜwhileループを使用できないのか疑問に思います。 forループの観点からwhileループを説明するチートシートを用意すると役立ちます。
  • 配列とポインタは教えるのはかなり簡単ですが、学ぶのは悪夢です。つまり、カチッと音がするまでは練習が大事です。
  • コードはテキストであり、コンパイルされたプログラムは実際にはfileであるという考えは、初心者にはわかりにくいものです。必ずシェルで.cpp、.h、およびバイナリファイルを表示してください。

OOP C++のコンポーネントはまったく別の獣であり、インストラクターがそこに到達しないことを願っています-OOPは、最初からOOPになるように設計された言語。私の経験では、C++でOOP=を教えることはうまくいっていません。

42
Rei Miyasaka

以前にプログラミングを教えたことはありますか?

私は4年間、CSおよびCS以外のメジャーにプログラミングを教えました。私がいくつかのことを学ぶまで、最初の学期、私の経験はあなたのようなものでした。

私にとって空想的に単純に思えたのは、初心者にはまったく単純ではありませんでした。

言語に関係なく、メンタルフレームワークを配置する必要があります。たとえば、次のように、それらを知っていることに気づかないほど明白なものがあります。

  • コンピュータは一度に1つのことしか行いません。 (並列処理とパイプライン処理があると言う人は誰もいません。生徒が何かを知ったら戻ってきてください。)コンピューターはいくつかの異なることしか実行できず、前のステップが完了するまで1ステップを開始できません。私がこれを言っているのは、コンピューターは非常に多くのことを行い、瞬時に実行するため、初心者には一度にすべてを実行し、心を読むように見えるためです。

  • 変数は重要です。変数の名前と実行時のその内容は、2つのまったく異なるものであることを理解することが不可欠です。初心者はこれで苦労します。 「あなたの名前を入力するプログラムを書いて、次にHello to you」と言うと、彼らは自分の名前を保持する変数が必要であることを理解する必要があり、変数の名前を考えなければならず、誘惑されますそれ自体にちなんで名前を付け、「入力」が何を意味するのか疑問に思います。

  • プログラムを作成/編集する時間とプログラムを実行する時間には大きな違いがあります。最初の演習では、これをかなり頻繁に思い出す必要があります。

私が使用した言語は初心者にとって非常にシンプルなので、BASICでした。基本的なプログラミング機能のセットを構築した後、他の言語に移行することは難しくありません。

ボードにプログラムを書いて、それから「コンピューターを遊ぶ」ことがよくありました。つまり、現在のステートメントの隣にXを置き、手動でそれを行ってから、Xを次のステートメントに移動します。変数は、現在の内容を書き込むボード上の長方形でした。割り当てが発生すると、それを消去して新しい値を入力します。

私が開発した1つのトリックは、それぞれが4桁の数値を保持できる1000のメモリロケーションを備えた10進シミュレーションコンピュータです。アキュムレータのロード、追加、保存、ジャンプなどの「オペコード」の小さなセットがありました。この「機械語」で小さなプログラムを作成してから、シングルステップで動作することを確認します。その後、変数、ジャンプなどの概念の説明がはるかに簡単になります。

お役に立てば幸いです。

19
Mike Dunlavey

私の意見では、C++は第一言語としてはやりすぎです。

私があなたであり、十分な時間があれば、Python(または同様の))を使用してプログラミングとCSの概念を紹介します。

概念が明確である場合、つまり、基本的なデータ構造、間接参照、基本的なアルゴリズムなどに慣れている場合は、C++をゆっくりと紹介します。これらは、すでに学んだこととすぐに関連づけることができます。

12
yati sagade

これが私がアドバイスすることです:

  1. 理解するために必要なすべての詳細を提供する
  2. 詳細を理解するように励ます
  3. 必要なときはいつでも、詳細がコンパクトな形式で保存されていることを確認してください

基本的には、必要なすべての詳細が必要なa4用紙を1つ作成することをお勧めします。すべての詳細を含むある種のリファレンスマニュアル。たとえば、「Cプログラミング言語」のような本も役立ちます。必要な詳細がすべてコンパクトな形で利用できるので、本は非常に役に立ちました。情報の圧縮は、すべての詳細を含むa4用紙を作成する際に必要な部分です。

4
tp1

大学時代は、他のコースの中でも特にプログラミングコースのイントロの講師でした。あなたが説明している問題は珍しいことではありません。特定の役割が何であるかによって、実行したいアプローチが異なる場合があります。

最初に、これがクラスの学生の大部分に影響を与える広範囲にわたる問題である場合、それにアクセスすることができれば、コースを教えている教授に、学生が理解していない概念について具体的なフィードバックを提供し、彼または彼女は、その用語が再び登場するときにその資料の追加のレビューを組み込むか、将来の用語のためにカリキュラムを改善するかもしれません。

ラボの時間に加えて、コースのディスカッションセクションを教える場合は、講義で混乱していたことを詳しく説明し、それらをより具体的にして、基本がすべて理解されていることを確認するのに素晴らしい時間です。

これらの生徒と一緒に作業する唯一の時間は、個別指導ラボでの時間である場合でも、この時間を使用して、生徒に1つずつ、またはいくつかずつ、理解するために必要な概念的な構成要素を教えることができます宿題を完成させます。

彼らはクラスでとても途方に暮れていると感じるかもしれません。その場合は、彼らと一緒に基本に戻ってください。彼らが何が起こっているのかを最後に理解したとき、彼らはコースのどこにいましたか?それらが不明な場合、または「理解できない」場合は、最初からhello worldの説明に戻り、変数とは何か、コンピュータが「命令」のリストを取得して、それらを順番に実行しますが、コンピュータは私たちのように「スマート」ではないので、非常に文字通りであり、コンピュータが理解できるように正確に物事を言う必要があります。

それは実際、私が非専攻のプログラミングコースでかなり頻繁に見た苦労と欲求不満のポイントです。学生はいくつかのコードを書きます。それは「約」正しいように見えますが、その後、コンパイルして、非常に不可解なエラーを出します。そして、彼らはそれの何が悪いのか分かりません。そして、何時間も彼らのコードを見つめます。次に、セミコロンがない、または間違った場所にあるブレースのように、それが些細なことのように思われたことを最後に理解します。それから彼らはそれを再びコンパイルします、そしてそれでもまだエラーがあります、それは別のものです。変数名のスペルは、2回目に使用したときとは異なります。等々。したがって、彼らは友人や家庭教師、あるいは誰かに助けを求め、彼らは頭の上で「ああ、これを追加すればうまくいくだろう」と答えることができます。したがって、彼らの経験は、プログラミングは少し「神秘的」であり、非常に苛立たしいものであり、実際よりも試行錯誤がはるかに多いということです。

それは、あなたが助ける余地がたくさんある家庭教師としての領域です。彼らの欲求不満のレベルに応じて、彼らのコードが機能していない理由を彼らが理解するのを助けるために私は異なるアプローチをするかもしれません。もし彼らがそれを手に入れているなら、私は彼らにヒントを与えて、彼らが彼ら自身で理解するのを手伝おうとするかもしれません。しかし、彼らがイライラすることをあきらめる準備ができている寸前にいる場合、私はしばしば彼らにいくつかの無料の答えを与え、少なくとも「この変更がプログラムを修正した理由を理解していますか? ?」

一部の学生、特に非専攻学生は、優れたプログラマーになるため、またはプログラミングを楽しむために必要な細部への系統的な注意を払っていない場合があります。あなたは彼らが戦略に手を握って詳細に注意を払うのを手助けし、たとえそれが彼らにとって挑戦であるとしても、問題を解決するのに十分系統立てることができる。

しかし、学生がコードを「適切に」インデントすることについてのアナル保持-多くの場合、初心者プログラマーは、何の下に何が入れ子になっているかに注意を払わないため、中括弧などが一致しないため、入れ子とスコープに問題を引き起こします。すべてのコードを適切にインデントし、中かっこが一致していること、すべての行がセミコロンで終了していること、特に最初のエラーが表示されている行番号の周辺などを確認するなど、「プログラムがコンパイルされないときに確認すること」のチェックリストを提供します。アップなど.

早期にコンパイルし、頻繁にコンパイルするように指導します。最小限のスケルトンコード(たとえば、hello world)を記述し、コンパイル/テストします。数行追加して、再度コンパイルします。大きなバケツではなく小さなバケツの変更だけを見ている場合は、エラーを見つけるのがはるかに簡単です。

問題を小さな解決可能な問題に分解する方法を彼らが学ぶのを助けます。これは、プロのプログラマーが解決方法がわからないはるかに難しい問題を解決するのと同じです。解決方法を知っているか、解決方法を学ぶための調査ができる何かに到達するまで、それを細かく分解し続けます。 「実用的なソリューションを実現するには、どのような手順を踏む必要がありますか?」まず、スケルトンコード(hello world)が必要です。それを行う方法を知っていますか?はい、すばらしいので、話が終わったら、それから始めることができます。次に、入力としてファイルを読み取る必要があります。第4章でそれについて読んだことを覚えていますか?あんまり? Hello Worldを実行した後、それを見てみませんか。それがどれくらいの距離で機能するようになるのかを確認してから、電話をかけ直してください。それが動けなくなったら、さらにお手伝いします。最初の数回は、問題を解決する方法の例から学ぶことができるように、問題を解決するために必要なステップの番号付きリストを作成する必要がある場合があります。

彼らがクラスですべてではなく一部の資料を取得している場合は、クラスで質問するように促してください。10回のうち9回は、理解できない唯一の学生ではないため、教授はおそらく重要なことについて単につぶやいただけです。

彼らが「時間」を費やして1つのバグを見つめているが、それを理解していない場合、それは彼らの時間の浪費であり、彼らはそれから多くを学んでいない。多くの場合、バグは洞察の問題であり、それを解決するための正しい洞察を思い付くことが問題であり、それらのタイプの問題のコツがない場合があります。行き詰まったときにとる他の一般的なアプローチを提案する:クラスの別の友人に助けを求め(必要に応じてクラスメートに知らせてください)、事前に宿題を開始して、生徒が立ち止まる時間を確保し、後で入るようにします。講師の研究室に行って、営業時間中に質問したり、教授のオフィスアワーに行ったりしてください。彼らが暗記の対象にうまく機能する詰め込みに慣れている場合、彼らは暗記よりも問題解決についてのプログラミングに直面すると、彼らは欲求不満の壁にぶつかるでしょう。教科書、stackoverflowなどから構文の例を調べる方法を説明します。プライベートクラスの質問フォーラムがある場合は、そのフォーラムに質問を投稿するように勧めます。

コードが機能しなくなった場所を絞り込む方法を説明します。動作するものに戻るまでコメントをコメントアウトし、segfaultが再び表示されるまでゆっくりと追加していきます。

これらのアイデアの多くは、たくさん出てくると、配布資料になる可能性があります。戦略は通常、教授が見落とす部分です。彼らは、構文、ループ、配列、I/Oなどの記述方法のセマンティクスに時間を費やしています。私のコードを実行するのに、コンパイルもクラッシュもしませんか?」

「変数とは」、「ループとは」などの概念的なこと、特に基本的なことについては、彼らがコースの残りについていくことができなくなることを理解していない。講義ベースのコースでは、教授がすべての質問に答えたり、すべての生徒が電球を消したりするのを助ける時間がないかもしれません。そして、それが、家庭教師がプログラミングの学習にとって非常に重要である理由の一部です。特定のトピックを具体化するために、追加のアナロジーを使用した個別の指導が必要になる場合があります。

あなたはC++で教えているので、一部の学生が「取得」するのに苦労する抽象的なトピックとしてクラスが登場することを想像します。多くの場合、クラスの抽象化は、「ATMマシン」などのランダムな実世界オブジェクトに対応する例で教えられ、実世界オブジェクトに類似しています。内部にいくらお金が入っているかを追跡する変数があるかもしれません。特定の条件にどのように対応するかをATMマシンに伝えるルールのようなメソッドがあるかもしれません。 、および他の学生は別のものをよりよく理解しています。

可能な限り、彼らのために絵を描いてください。彼らが書いているコードが何をしているかの全体像を見るのを助けるために時間とともに起こることのシーケンス図のように。ユーザーがこのボタンをクリックします。次に、プログラムはx、y、zを実行して応答する必要があります。それぞれが1つの番号のみを保持できる私書箱の束のような配列と、箱の前面の「住所」を指す矢印のようなポインターを描画します。等。

3
Jessica Brown

プログラミングは、学生が遭遇する他の一般的なドメインとは大きく異なります。大学の前の多くの学生は、授業で単に注意を払い、おそらく簡単な問題と本の裏にある答えを使っていくつかの宿題をすることで成功しました。それは、プロセスを記憶し、それらを作成することに関するものです。また、多くの学生が間違った答えを繰り返し得るのは初めてです(構文エラー、論理エラー、セグメント障害など)。これは、プログラムに取り組む際に学生のやる気を失わせる可能性があります。

プログラミングで何が起こっているかを正確に知るには、彼らはたくさんの実践をする必要があります。見落とされがちなテクニックは、母国語が最初に何であれ、疑似コードを書き出すことです。問題に対するかなり詳細な解決策が見つかるまで、それを拡張し続けるように依頼してください。次に、それを実際のコードに変換します。

3
Peter Smith

私がCS 101を通過したときに私を助けたのは、コードを見る前にロジックを学ぶことでした。私たちは真理値表と前置詞計算を行ったので、「これはこれと等しいか」ではなく、「これは真か偽か」と考え始めました。

それはすべてが私のためにクリックしたときにありました。プログラミングは基本的に真/偽の値をコアで操作するだけであることがわかったら、すべてが比較的単純になります。

そして、これはそれを作ったので、私が使用している言語は関係ありませんでした、論理はどこでも同じです。構文はわかりにくいかもしれませんが、「わかりました、Obj Cではこのようなクラスにメッセージを送信し、C++ではこのようにメッセージを送信しましたが、アルゴリズムはまったく変更されていません。」等.

2
OghmaOsiris

ACMまたはIEEEの記事のどこかに、初心者(CSの卒業生でさえフィールドにいる人も)が上級プログラマの後ろに座って問題のコードを見る必要がある理由の詳細について説明しています。

多くの場合、専門家は難しい問題についてペアリングします。学生は頻繁にしないように言われています。ペアリングの利点(キーボードを順番に回す):1.生徒は、自分が間違っていることをすぐに知らされます。インスタントフィードバック。 2.学習者が教師を見るとき、学習者は教師が指摘することを決して考えなかったであろうものを取り上げます。

学生に悪い習慣を身につけさせるのではなく、彼らは芽につかまれます。 (私はここで#1を#2で裏返し、生徒にインストラクター/ TAを見させます[〜#〜] first [〜#〜]

静的なPowerPointスライドのセットを使用してCSを教えることは、プログラムを作成する一時的なプロセスには適していません。 (関数を1行ずつ成長させることでできるトリックがあることは確かですが、それらは通常扱いにくいものです。)

学習者は、書き込みを開始する場所と、停止してコンパイルする場所を知る必要があります。私たちの脳は主に左から右、上から下に読むように配線されていますが、プログラムはまるで1ページに詰め込んだ独自の冒険本を選ぶようなものです!

多くの場合、初心者はプログラム全体をコピーしてからコンパイルします。専門家でさえ、そのように最初のクラックを与えるかもしれません。気づく前に、すべての関数を空のままにして、プログラムをコンパイルしてから、作業用のスケルトンに繰り返し追加する必要があったことを認識していました。

また、CSはコンピューターなしで鉛筆と紙だけで教えられるべきだというとんでもないアイデアも関連しています。採用されているプログラミングプロフェッショナルの多くが、これが最良の方法であると本当に思っているのでしょうか。画像からコンピュータを削除しようとする試みはすべて卑劣なものです。これを行うと、プログラミングが本来よりも楽しくなくなり、対話性が低下します。私たちはパンチカードにデータを入力し、辛抱強く待っている日々を過ぎています。今日のプロの開発者は、すぐに満足するファンです。幸い、ほとんどの学生もそうです。

明らかに、開発プロセスの前と最中に、鉛筆と紙で美しいデザインを描くことは、プロと初心者の両方のプログラマにとって強力なツールです。これは「キーボードを操作する」時間のように、ペアリングにも費やされるはずです。おそらくここでは、生徒に教師を見る前に最初のラウンドを試させることが理にかなっているかもしれませんが、それでも、教師の実際の思考プロセスを見る価値はあるでしょう。

最後に、プロの開発者が採用するホットキーと編集トリックは、学生の学習にとって「ノイズ」ではありません。最も重要なのは、彼らが学生に従事し、興味をそそるということです。第二に、彼らは共通の開発ニーズへの意識を高めます。さらに、これらのプラクティスの最も基本的なものは実行が簡単ですが、最初は明らかではありません。若い木工店の学生は、ハンマーの爪で釘を外す方法を簡単に学ぶことができますが、ほとんどの場合、最初にそれが爪の目的であることを知らされなければなりません。非常に簡単にできることの中には、教えられずに学ぶのは簡単なことではありません。プロの開発者でさえ、常にこれらの「トリック」を忘れており、リシャーパーなどのリファクタリングツールを使用して、冗長なコードや未到達のコードなどを削除することができます。

2
David

この大学では、プログラミング言語のすばらしい選択肢の中で、CS以外の専攻分野のイントロCSクラスとしてC++を使用していますか?有能なインストラクターの手には、それは遠く離れて考えられるかもしれません-しかし、なぜそれをそんなに難しくするのですか?

大学のイントロCSクラスで「パスカル」を学んだとき、最初の3週間は「 ロボットのカレル 」で作業しました。これは非常にシンプルなサンドボックスロゴのようなプログラミング環境であり、Pascalで実行する前に、すべての基本的な概念(再帰を含む)が徹底的に調査されました。 「カレルザロボット」では、簡単なコマンドの小さなセットを使用して2D空間でロボットを制御します。これにより、学生は、次に何が起こるかを理解するのに役立つ具体的な基礎が得られます。

おそらく、「カレルザロボット」の役割を果たす、より近代的な教育用プログラミング言語があるでしょうか。しかし、おそらくあなたの生徒にとって今は遅すぎます。

2
Angelo

コンピュータプログラミングは、多くの場合、合格点として synthesis の認知スキルが必要な最初のコースの1つです。そのスキルを他の誰かに伝えることは非常に困難です。それらが利用できるすべてのコンポーネントとそれらがどのように機能するかを説明できます。他の人々が合成を使用してそれらのコンポーネントをより有用な全体に組み合わせる方法の例を多数示すことができますが、学生の心に何か「クリック」することなくできることは非常に多くあります。

私の経験では、ほとんどの場合、プログラミングを「受け取らない」人々から逃れるのは合成のスキルです。変数、関数、ループなどの部分については完全に理解していますが、「なぜ機能するのかは理解していますが、そこにループを配置する必要があるとどうしてわかったのですか?」あなたはそれを手に入れるまで練習しなければなりません。

2
Karl Bielefeldt

言われたことに加えて、私は初心者として表面を引っ掻くだけでよいので、複雑なものを避けるためにそれに応じてカリキュラムを調整すると思います。

それらに単純な問題を与えます(たとえば、式を評価します)。

彼らにそれを理解する時間を与える。

答えを2つあげてください。

3行ごとに回答を確認する

4-彼らにあなたの答えを彼らのattmptと比較するように依頼してください

5-この問題から教訓を引き出すように依頼する

6-SAME問題にさらにステップを追加します(IFステートメントを必要とする条件など)

7いくつかの問題について上記のタスクを繰り返します。それまでに彼らは言語の基本と環境の使い方を理解していたでしょう。は、次に来ることに備えます。

また、

-2つのクラスごとに自宅で試す簡単な問題があります。

-各生徒と協力して、生徒がそれ以上進むのを妨げているポイントを確認する

-簡単な参照資料を提供し、複雑なトピックや複雑な本を忘れる

-フィードバックを頻繁に取得して使用する

-クラスに来る前に、次のトピックの準備をするように依頼します。

2
NoChance

アーロン・ヒレガスを誤って引用するために、彼らが愚かではないことを思い出させてください、それはただ難しいです。プログラミングはあなたの心を訓練するのが難しく、それはまったく別の考え方であり、彼らが彼らが知っている基本におそらく苦労しているかもしれない一方で、彼らは彼らをかなり落胆させるでしょう。

最初の1年のCSコースにも不合格だったと私は言います。私は以前に多くのプログラムを作成し、すべての概念(VB、ええベイビー)を得ましたが、C++は私のためにクリックしませんでした。結局、基本に戻り、そこから作業をすることになったのですが、クリックしてしまいましたが、誰かが「バカじゃないなら、これは難しい」と言っていたら、私の人生は楽になったでしょう。

2
Nicholas Smith

あなたは「これらの学生は数学、生物学、または物理学を学ぶ方法を知っているかもしれませんが、プログラミングに関してはそれらの技術は機能していません」と述べました。

これには理由があります。プログラミングには、他の分野が必ずしも必要としない何かが必要です:創造性および... ファンタジー。 「仕事で物事を想像する」機能。私は個人的に、そのような要件が(もちろん、すべての例外を除いて)技術学校(特に電子工学と電気機械学)から来ている人々から存在していることを発見しました。彼らは、「電気の流れと互いの制御方法を想像する」必要があります。それらを参照してください!)「純粋な科学」(すべてが数学の向きを変えたように見える)からではありません。

この最後のケースでは、「視覚的認知」が助けられなければなりません。概念とテキストに焦点を合わせるだけでなく(タイプ->コンパイル->エラーを「読み取る」ことができない場合はエラーが表示されないように見える)、-視覚化する方法を提供することが重要です。設計時(マシンで何が行われるかをシミュレートすることによって:ホワイトボードと色付きのポストイットのセットで準備する)と実行時のいずれか。

この最後の部分を成功させるには、オペレーティングシステムと「プログラムがマシンにどのように実行されるか」(およびそのマシンが実際に何であるか)の重要な概念を与える必要があります。そして、威圧しないIDEを指定する必要があります。私は通常、「気を散らさない」ために多くのものが削除された「カスタマイズされたコードブロック」です。オブジェクトを生成するためのソースで構成されるプロジェクトの概念ライブラリとリンクするには、言語について話し始める前に指定する必要があります。

C++の従来のHello Worldには、エントリポイントと出力デバイスが必要です。学生はすでにそれに精通している必要があります。この種のコースの成功は、最初の日次第です。あなたは彼らがプログラミングが何であるかを彼らに理解させるために、コンピュータの中で起こることの視覚化を刺激する必要があります。
残りは構文(科学)と抽象(ファンタジー)です

0