
プロジェクトWebサイト:https://feli10.github.io/math-coding/
2022年、私の両親は私の弟が小学校の数学を学ぶのを助けるように私を委託しました。当時、彼は6歳で、私は高校の新入生でした。このプロジェクトに取り組むために、私は計画を策定しました - 彼が数学の教科書の各ユニットを完了した後、私は彼にユニットのコンテンツに密接に関連するPythonで書かれた1-2のコーディング演習を設計し、割り当てました。数学とコーディングを組み合わせたこのアプローチを使用して、2か月ごとに平均1学期のコースワークを完了することができました。約1年で、3年生から5年生までの中国小学校数学カリキュラムを終えました。
プロジェクトライブラリには、グラフィカルユーザーインターフェイスを備えた22とコマンドラインインターフェイスを備えた38を含む、年間に書いた60のPythonプログラムが含まれています。これらのプログラムは、3年生から5年生までの中国の数学の教科書の教科書の49ユニットすべてをカバーしています。 math_coding_handbook.pdfファイルには、各ユニットの主要な数学的トピックと、対応するプログラムの説明が含まれています。また、すべてのプログラムに詳細なドキュメントとコメントを含めました。
Graphical User Interface | Command Line Interface |
|---|---|
![]() | ![]() |
すべてのプログラムと学習ハンドブックには、英語と中国語の個別のバージョンがあります。 _enディレクトリには英語バージョンが含まれており、すべてのグラフィカルなディスプレイとプログラムコメントが英語のコメントがあります。 _cnディレクトリには中国語版が含まれており、すべてのグラフィカルなディスプレイとプログラムコメントが中国語にあります。

math_coding_handbook.pdfをダウンロード(英語版)
math_coding_handbook.pdfをダウンロード(中国語版)
このプロジェクトを通じて、私の兄弟と私は、コーディングで小学校の数学を学ぶことで、学習者がプログラミング言語に熟練しながら効率的かつ効果的に数学を研究できるようになることを実際に証明しました。
このプロジェクトを通じてコーディングで小学校の数学を効果的に学ぶには、次のことが必要です。
このプロジェクトを使用するには2つの方法があります。
2022年、弟のヘンリーが6歳だったとき、両親は私に彼の数学と英語の教育を一時的に担当するように頼みました。当時、私は彼より10歳年上で、高校の最初の年でした。私たちが同意した最初の目標は、私が大学に行く前に、彼が小学校の数学を完了し、独立して改善し続けることができる英語の習熟度に到達するのを手伝うことでした。私は英語で家族で最高だったので、それについての不確実性はあまりありませんでしたが、彼に数学を教えるにはどうすればよいですか?
私は9歳のときに小学校数学を完了しました。振り返ってみると、多くの教科書を読んだり、多くの練習問題を遂げたり、かなりの数の模擬テストを受けたりしたことを覚えています。ある程度の検討の後、私はわずか6歳だったヘンリーが別のアプローチを必要としていることに気付きました。私の学習経験に基づいて、誰かが特定のタイプの数学の問題に絶えず苦しんでいるとき、それは通常、根本的な概念を深く理解していないためです。練習の問題を行う目的は、これらの弱点を特定して対処することです。ただし、問題を無意識に練習すると、同じ間違いが何度も何度も現れます。これが、練習の問題を遂行することは、多くの場合、新しい数学のトピックを学ぶための効率的な方法ではない理由です。したがって、ヘンリーが広範な問題解決に飛び込む前に学習する必要がある数学の概念とスキルを徹底的に理解できるようにするアプローチを見つけることを目指しました。
数学とコーディングを組み合わせるための主なインスピレーションは、機械学習研究プロジェクトの一環として高レベルの数学コースを受講することから来ました。コースを受講している間、大学レベルで数学を学ぶのを支援するためにプログラミングツールを使用することは非常に一般的で非常に効果的であることがわかりました。計算、線形代数、および統計を学習するとき、プログラミングを使用して数学的実験を実施し、実際的な問題を解決しました。結果の視覚化と相まって、これは抽象的な数学的概念と定理についての私の理解を大いに助けました。その後、プログラミングの助けを借りて中学校数学を学ぶためのいくつかのリソースも見つけました。しかし、私は小学校の数学に似たものを見つけたことはありません。
それで、ヘンリーと私のアイデアについて話し合った後、「コーディングで小学校の数学を学ぶ」プロジェクトが生まれました。
ヘンリーとの1年間のプロジェクトに加えて、いくつかの「プログラミングウィークエンド」イベントを開催し、5〜10人の子供のグループをプログラミングで数学を学ぶように導きました。これらのイベントは非常に成功していたため、このプロジェクトはより多くの子供に利益をもたらすと思います。学習成果を改善しながらプログラミングスキルを身につけて数学を効率的に学ぶことができると思います。
学校のカリキュラムに従う子どもたちにとって、このプロジェクトが数学とプログラミングの能力を高めるのに役立つことを願っています。また、このプロジェクトにより、ヘンリーのような数学の学習を加速したい人がそうすることを願っています。加速学習の利点の1つは、基本的な数学の知識が早期の関心の発達を促進できることです。たとえば、ヘンリーの数学的能力は彼の音楽学習を大いに助け、彼の音楽的関心と才能が早期に発展することを可能にしました。
このプロジェクトが、数学を学ぶための新しいアプローチを人々に提供し、それを使用することを選択した人々により多くの機会をもたらすことができることを願っています。プロジェクトについて質問や提案がある場合は、このメールでお気軽にお問い合わせください:[email protected]。
ディレクトリの組織は、People's Education Pressの中国の数学の教科書と同じです。たとえば、ディレクトリ名g311_timeの場合、最初の「G311」は、ディレクトリがグレード3教科書の学期1のユニット1に対応していることを識別します。
識別子の後のテキストは、ユニットの主な学習コンテンツを示します。 G311ユニットは主に時間を通知することであるため、このユニットのディレクトリ名はg311_timeです。
各ディレクトリには、1-2のPythonプログラムファイルが含まれています。プログラムの名前はその内容を示しています。たとえば、 g311_timeには、機能するアナログクロックを表示するclock.pyと、機能するデジタルクロックを表示するdigital_clock.pyの2つのプログラムが含まれています。
_enディレクトリのmath_coding_handbook.pdfファイルには、3年生から5年までの49ユニットの60のすべてのプログラムの説明ページが含まれています。各プログラムの説明には、以下が含まれます。

すべてのプログラムには、最初に詳細なドキュメントが含まれており、全体を通して有用なコメントが含まれています。

学習ハンドブックとすべてのプログラムには、個別の英語と中国語のバージョンがあります。 _enと_cnディレクトリは、同じ方法で編成されていますが、それぞれ英語と中国語のコンテンツがあります。
コードライブラリの一部のプログラムには、互いに参照が含まれています。したがって、使用する前にコードライブラリ全体をダウンロードすることをお勧めします。
プログラムの数学的内容に関するいくつかのメモ:
すべての数学ユニットはSI(国際システム)にあります。
特定のプログラムにおける垂直形式の算術の表示は、中国の教科書に示されている垂直形式に基づいています。

| ユニットID | ユニット名 | プログラム |
|---|---|---|
| G311 | 時間 - 時間、数分、秒 | 1。アナログクロック 2。デジタル時計 |
| G312 | 2桁の追加と減算 | 2桁の追加と減算を練習します |
| G313 | 測定 | 練習ユニット変換 |
| G314 | 垂直の追加と減算 | 1。垂直加算 2。垂直減算 |
| G315 | 乗算単語の問題 | 乗算単語の問題を練習します |
| G316 | 短い乗算 | 短い乗算 |
| G317 | 長方形と正方形 | 長方形クラスを作成します |
| G318 | 分数を理解する | 分数の比較を練習します |
| G319 | セット | 操作を設定します |
| G321 | オリエンテーション | オリエンテーションの識別を練習します |
| G322 | 短い分割 | 短い分割 |
| G323 | テーブル | テーブルの作成と表示 |
| G324 | 2桁の長い乗算 | 長い乗算1 |
| G325 | エリア | 長方形のクラスを改善 - 領域を計算し、長方形を描きます |
| G326 | 年、月、日 | カレンダーを表示します |
| G327 | デシマルを理解する | 1。10進練習1 2。小数の視覚化 |
| G328 | 組み合わせ | 3つの一般的なカウントの問題 |
| G411 | 多数で作業します | 自然数を読んでください |
| G412 | 広い面積ユニット | 練習エリアユニット変換 |
| G413 | 測定角度 | クロックダイヤルを描きます |
| G414 | 3桁の長い乗算 | 長い乗算2 |
| G415 | 平行四辺形と台形 | 台形を数える |
| G416 | 長い部門 | 長い部門 |
| G417 | バーチャート | 1. Matplotlibを使用したバーチャートの作成 2。バーチャートを描くためのテーブルクラスのサブクラスを作成する |
| G418 | 最適化 | カウントゲーム |
| G421 | 操作順序 | 算術式を評価します |
| G422 | 観察オブジェクト | キューブの3つのビュー |
| G423 | 基本的な運用法 | 解決する24 |
| G424 | 小数の意味と特性 | 小数練習2 |
| G425 | 三角形 | 1.イソシェルの三角形を描きます 2.通常のポリゴンを描きます |
| G426 | 小数の追加と減算 | 垂直形式の小数の添加と減算 |
| G427 | 反射的対称性 | 反射的対称形状を生成します |
| G428 | 平均値とグループ化されたバーチャート | 平均値とグループ化されたバーチャート |
| G429 | 鶏肉とウサギの問題 | 鶏肉とウサギの問題 |
| G511 | 小数の乗算 | 小数の長い乗算 |
| G512 | 位置 | 1。位置に基づく入力座標 2。座標に基づいて位置をクリックします |
| G513 | 10進み | 1。小数の長い分割 2。一般的な分数を小数に変換する練習 |
| G514 | 確率 | 1。重み付きのランダム選択 2。2つのサイコロロールの合計 |
| G515 | 単純な方程式 | 方程式を使用した鶏肉とウサギの問題を解く |
| G516 | ポリゴンの領域 | エリアプロパティを備えたポリゴンクラス |
| G517 | 木の植え付けの問題 | 木の植え付けの問題 |
| G521 | 観察オブジェクト2 | キューブV2の3つのビュー |
| G522 | 要因と倍数 | 1。プライムナンバーを取得します 2。ゴールドバッハの推測 |
| G523 | 立方体と立方体 | 1。ユニットプロパティを備えた立方体クラス 2。ボリュームユニット変換を練習します |
| G524 | 分数の意味と特性 | 1。最大の共通除数と最も一般的な倍数 2。小数を最も単純な割合に変換します |
| G525 | 回転 | 回転 |
| G526 | 分数の添加と減算 | 分数の添加と減算 |
| G527 | ラインチャート | データクラスを改善して、マルチラインチャートを描画します |
| G528 | 外れ値を特定します | 外れ値を特定します |
このプロジェクトのプログラムの目標は、人間の問題解決方法を機械言語(つまり、Pythonプログラム)に可能な限り明確かつ明示的に変換することです。これは主に次の考慮事項が原因です。
したがって、ほとんどのプログラムの効率より上の結果を優先しました。ただし、ランタイムが入力データの影響を大きく影響するシナリオに遭遇すると、学習者はさまざまな効率のさまざまなプログラミング方法を試すように導かれます。
Pythonの公式WebサイトからPythonインストーラーをダウンロードします(さまざまなオペレーティングシステムに適しています)。 Windowsユーザーの場合は、インストール中に「python.exe to path」オプションを必ず確認してください。

アナコンダまたはミニコンダ(さまざまなオペレーティングシステムに適しています)をインストールします。 Condaは、オープンソースパッケージおよび環境管理システムです。 Condaのインストールは、Pythonといくつかの一般的に使用されるモジュールもインストールします。
HomeBrewを使用してPython(MacOSおよびLinuxオペレーティングシステムに適しています)。 HomeBrewは、オープンソースのパッケージ管理システムです。 HomeBrewがすでにシステムにインストールされている場合は、次のコマンドを使用してPythonをインストールできます。
brew install python-tkアイドル(統合開発および学習環境)は、Python用の組み込みプログラミングツールです。インタラクティブなインタープリターとコードエディターが含まれています。アイドルにはベアボーン機能しかないため、VSコードなどのより強力なコードエディターを使用することをお勧めします。

vsコード(ビジュアルスタジオコード)

シェルとも呼ばれるPython Interactiveインタープリターは、Python式を入力できる非常に便利なコマンドラインインターフェイスであり、結果は即座に画面に表示されます。インタープリターは、組み込みのデータ型や関数の使用をテストするなど、小さなコードスニペットの実験に最適です。プログラミングの場合、コードエディターにコードを入力するだけでなく、同時にインタラクティブなインタープリターを開くこともお勧めします。これにより、式の結果が不確実な場合、直ちにインタープリターで結果を実験および検証できます。
次の方法で、Pythonインタラクティブインタープリターにアクセスできます。
MacOSまたはLinuxユーザーの場合、ターミナルにpythonを入力して、インタラクティブなインタープリターにアクセスできます。システムがpythonを認識していない場合は、 python3を試すことができます。

Windowsユーザーは、メニューの「Python」をクリックするか、コマンドプロンプトウィンドウ(cmd.exe)にpythonを入力することで、インタラクティブな通訳にアクセスできます。システムがpythonを認識していない場合は、 python3またはpyを試すことができます。
Pythonに組み込まれたプログラミングツールがアイドル状態にあるため、起動時にインタラクティブインタープリターが直接開きます。

また、VSコードの組み込みターミナルまたはインタラクティブウィンドウを介してインタラクティブインタープリターにアクセスすることもできます。
TurtleやTkinterなどのモジュールやパッケージはPython Standard Libraryの一部であり、Pythonが事前にインストールされているため、追加のインストールは必要ありません。
Matplotlibは人気のPythonデータ視覚化ライブラリであり、次の方法を使用してインストールできます。
Pythonのpipモジュールを使用してインストールします。システムがpythonを認識していない場合は、以下のコマンドでpython python3またはpy (Windowsユーザー用)に置き換えることができます。
python -m pip install -U matplotlib Condaがインストールされている場合、インストールにはcondaコマンドを使用できます。
conda install matplotlibPygameは人気のPythonゲーム開発ライブラリです。 G512プログラム「Coordinate Game」は、Pygameのサウンドモジュールを使用します。 Matplotlibと同様の方法でインストールできます。
Pythonのpipモジュールを使用してインストールします。
python -m pip install -U pygame Condaがインストールされている場合、インストールにはcondaコマンドを使用できます。
conda install pygametopに戻ります