
موقع المشروع: https://feli10.github.io/math-coding/
في عام 2022 ، عهدني والداي بمساعدة أخي الأصغر على تعلم الرياضيات في المدرسة الابتدائية. في ذلك الوقت ، كان عمره ست سنوات ، وكنت طالبة في المدرسة الثانوية. لمعالجة هذا المشروع ، قمت بصياغة خطة - بعد أن أكمل كل وحدة في كتابه المدرسي في الرياضيات ، أود تصميمه وتعيينه تمارين الترميز 1-2 ، المكتوبة في Python ، والتي تتعلق ارتباطًا وثيقًا بمحتوى الوحدة. باستخدام هذا النهج يجمع بين الرياضيات والترميز ، تمكنا من إكمال متوسط قيمة دراسي واحد من الدورات الدراسية كل شهرين. في حوالي عام ، أنهينا منهج الرياضيات في المدرسة الابتدائية الصينية من الصفوف من ثلاث إلى خمسة.
تحتوي مكتبة المشروع على 60 برنامج Python كتبنا خلال العام ، بما في ذلك 22 مع واجهات المستخدم الرسومية و 38 مع واجهات سطر الأوامر. تغطي هذه البرامج جميع الوحدات الـ 49 من الكتب المدرسية للرياضيات الصينية من الدرجة الثالثة إلى الخامسة للصحافة التعليمية الشعبية. يحتوي ملف math_coding_handbook.pdf على الموضوعات الرياضية الرئيسية لكل وحدة وأوصاف للبرنامج (البرامج) المقابلة. لقد قمنا أيضًا بتضمين وثائق وتعليقات مفصلة داخل جميع البرامج.
Graphical User Interface | Command Line Interface |
|---|---|
![]() | ![]() |
جميع البرامج وكتيب التعلم لها إصدارات منفصلة باللغة الإنجليزية والصينية. يحتوي دليل _en على الإصدار الإنجليزية ، مع جميع العروض الرسومية وتعليقات البرنامج باللغة الإنجليزية. يحتوي دليل _cn على النسخة الصينية ، مع جميع العروض الرسومية وتعليقات البرنامج باللغة الصينية.

تنزيل Math_coding_handbook.pdf (الإصدار الإنجليزية)
تنزيل Math_coding_handbook.pdf (الإصدار الصيني)
من خلال هذا المشروع ، أثبتت أنا وأخي في الممارسة العملية أن تعلم الرياضيات في المدارس الابتدائية مع الترميز يتيح للمتعلمين دراسة الرياضيات بكفاءة وفعالية مع أن تصبح في وقت واحد بارعًا في لغة البرمجة.
يتطلب تعلم الرياضيات في المدارس الابتدائية بفعالية مع الترميز من خلال هذا المشروع ما يلي:
هناك طريقتان لاستخدام هذا المشروع:
في عام 2022 ، عندما كان أخي الأصغر هنري في السادسة من عمره ، طلب مني والداي أن أتولى مسؤولية تعليمه في الرياضيات وتعليم اللغة الإنجليزية مؤقتًا. في ذلك الوقت ، كنت أكبر من 10 سنوات وفي السنة الأولى من المدرسة الثانوية. كان الهدف الأولي الذي اتفقنا عليه هو أنه قبل ذهابي إلى الكلية ، سأساعده في إكمال الرياضيات في المدارس الابتدائية والوصول إلى مستوى من الكفاءة في اللغة الإنجليزية حيث يمكنه الاستمرار في التحسن بشكل مستقل. منذ أن كنت الأفضل في الأسرة في اللغة الإنجليزية ، لم يكن هناك الكثير من الشكوك حول ذلك ، ولكن كيف يمكنني تعليمه الرياضيات؟
أكملت الرياضيات في المدرسة الابتدائية عندما كان عمري تسع سنوات. إذا نظرنا إلى الوراء ، أتذكر قراءة العديد من الكتب المدرسية ، والقيام بالكثير من مشاكل الممارسة ، وأخذ عدد قليل من الاختبارات الوهمية. بعد بعض الاهتمام ، أدركت هنري ، الذي كان في السادسة فقط ، يحتاج إلى مقاربة مختلفة. استنادًا إلى تجربتي التعليمية ، عندما يكافح شخص ما باستمرار مع نوع معين من مشكلة الرياضيات ، فهذا عادةً ما يكون ذلك لأنهم يفتقرون إلى الفهم العميق للمفاهيم الأساسية. يجب أن يكون الغرض من مشكلات الممارسة هو تحديد ومعالجة نقاط الضعف هذه. ومع ذلك ، إذا كان المرء يمارس المشكلات بلا رحمة ، فستظهر نفس الأخطاء مرارًا وتكرارًا. هذا هو السبب في أن القيام بمشاكل بحر من الممارسة ليس في كثير من الأحيان وسيلة فعالة لتعلم موضوعات الرياضيات الجديدة. لذلك ، كنت أهدف إلى إيجاد نهج يسمح لهنري بفهم أي مفاهيم ومهارات الرياضيات التي يحتاجها لتعلمها قبل الغوص في حل المشكلات.
جاء الإلهام الأساسي للجمع بين الرياضيات والترميز من أخذ دورات الرياضيات عالية المستوى كجزء من مشروع أبحاث التعلم الآلي. أثناء أخذ الدورات التدريبية ، وجدت أن استخدام أدوات البرمجة للمساعدة في تعلم الرياضيات على مستوى الجامعة كان شائعًا وفعالًا للغاية. عند تعلم حساب التفاضل والتكامل والجبر الخطي والإحصائيات ، تم استخدام البرمجة لإجراء التجارب الرياضية وحل المشكلات العملية. إلى جانب تصور النتائج ، ساعد ذلك إلى حد كبير فهمي للمفاهيم الرياضية المجردة والنظريات. في وقت لاحق ، وجدت أيضًا بعض الموارد لتعلم الرياضيات في المدارس المتوسطة بمساعدة البرمجة. ومع ذلك ، لم أجد أي شيء مشابه للرياضيات في المدارس الابتدائية.
لذلك ، بعد مناقشة فكرتي مع هنري ، ولدت مشروع "تعلم تعلم المدرسة الابتدائية مع الترميز".
بالإضافة إلى المشروع الذي استمر لمدة عام مع هنري ، قمنا بتنظيم العديد من أحداث "عطلة نهاية الأسبوع" ، حيث قادت مجموعات من 5 إلى 10 أطفال لتعلم الرياضيات مع البرمجة. نظرًا لأن هذه الأحداث كانت ناجحة تمامًا ، أعتقد أن هذا المشروع يمكن أن يفيد المزيد من الأطفال - مما يسمح لهم بالتعلم الرياضيات بكفاءة مع تحسين نتائج التعلم مع تجهيزهم بمهارات البرمجة.
بالنسبة للأطفال الذين يتبعون المناهج الدراسية ، نأمل أن يساعدهم هذا المشروع في تعزيز قدراتهم على الرياضيات والبرمجة. نأمل أيضًا أن يسمح هذا المشروع لأولئك الذين يرغبون في تسريع تعلم الرياضيات ، مثل هنري ، للقيام بذلك. تتمثل إحدى فوائد التعلم المتسارع في أن معرفة الرياضيات الأساسية يمكن أن تسهل تطوير المصالح المبكرة. على سبيل المثال ، ساعدت قدرات هنري الرياضية بشكل كبير على تعلم الموسيقى ، مما سمح بمهمة وموهبته الموسيقية بالتطور مبكرًا.
آمل أن يتمكن هذا المشروع من تزويد الناس بنهج جديد لتعلم الرياضيات وجلب المزيد من الفرص لأولئك الذين يختارون استخدامه. إذا كان لديك أي أسئلة أو اقتراحات حول المشروع ، فلا تتردد في الاتصال بي على هذا البريد الإلكتروني: [email protected].
إن تنظيم الدلائل مطابق للكتب المدرسية في المدرسة الابتدائية الصينية لصحيفة تعليم الشعب. على سبيل المثال ، بالنسبة لاسم الدليل g311_time ، يحدد "G311" في البداية أن الدليل يتوافق مع الوحدة 1 من الفصل الدراسي 1 من الكتاب المدرسي من الدرجة 3.
يشير النص بعد المعرف إلى محتوى التعلم الرئيسي للوحدة. تدور وحدة G311 بشكل أساسي حول الوقت ، وبالتالي فإن اسم الدليل لهذه الوحدة هو g311_time .
يحتوي كل دليل على ملفات برنامج Python 1-2. أسماء البرامج تدل على محتوياتها. على سبيل المثال ، يحتوي g311_time على برنامجين: clock.py ، والذي يعرض ساعة تمثيلية تعمل ، و digital_clock.py ، والتي تعرض ساعة رقمية تعمل.
يحتوي ملف math_coding_handbook.pdf في دليل _en على صفحات وصف لجميع البرامج الـ 60 عبر 49 وحدة من الصفوف 3 إلى 5. كل وصف للبرنامج يحتوي على ما يلي:

تحتوي جميع البرامج على docstring مفصلة في البداية والتعليقات المفيدة طوال الوقت.

يحتوي كتيب التعلم وجميع البرامج على إصدارات منفصلة باللغة الإنجليزية والصينية. يتم تنظيم أدلة _en و _cn بنفس الطريقة ولكن مع المحتوى باللغة الإنجليزية والصينية ، على التوالي.
تحتوي بعض البرامج في مكتبة الكود على إشارات إلى بعضها البعض. لذلك ، نوصي بتنزيل مكتبة الكود بأكملها قبل الاستخدام.
بعض الملاحظات على المحتوى الرياضي للبرنامج:
جميع الوحدات الرياضية في SI (النظام الدولي).
يعتمد عرض الحساب الرأسي في بعض البرامج على النماذج الرأسية الموضحة في الكتب المدرسية الصينية.

| معرف الوحدة | اسم الوحدة | البرنامج (s) |
|---|---|---|
| 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. ممارسة عشرية 1 2. تصور العشرية |
| G328 | مجموعات | ثلاث مشاكل في العد المشتركة |
| G411 | العمل بأعداد كبيرة | اقرأ أي رقم طبيعي |
| G412 | وحدات مساحة كبيرة | تحويل وحدة منطقة التدريب |
| G413 | قياس الزوايا | ارسم الاتصال الهاتفي على مدار الساعة |
| G414 | 3 أرقام الضرب الطويل | الضرب الطويل 2 |
| G415 | متوازي و Quegzoids | عد المنحرف |
| G416 | تقسيم طويل | تقسيم طويل |
| G417 | مخططات بار | 1. إنشاء مخططات شريطية باستخدام matplotlib 2. إنشاء فئة فرعية من فئة الجدول لرسم المخططات الشريطية |
| G418 | تحسين | عد اللعبة |
| G421 | ترتيب العمليات | تقييم التعبيرات الحسابية |
| G422 | مراقبة الأشياء | ثلاث وجهات نظر من المكعبات |
| G423 | قوانين التشغيل الأساسية | حل 24 |
| G424 | معنى وخصائص العشرية | ممارسة عشرية 2 |
| G425 | مثلثات | 1. ارسم مثلثات متساوي الساق 2. ارسم المضلعات العادية |
| G426 | إضافة وطرح العشرية | إضافة وطرح العشرية في شكل عمودي |
| G427 | التماثل العاكس | توليد أشكال متماثلة عاكسة |
| G428 | متوسط القيمة ومخططات شريط مجمعة | متوسط القيمة ومخططات شريط مجمعة |
| G429 | مشكلة الدجاج والأرانب | مشكلة الدجاج والأرانب |
| G511 | الضرب العشري | الضرب الطويل من العشرية |
| G512 | موضع | 1. إحداثيات الإدخال بناءً على المواقف 2. انقر على المواقف بناءً على الإحداثيات |
| G513 | شعبة عشرية | 1. التقسيم الطويل من العشرية 2. ممارسة تحويل الكسور المشتركة إلى العشرية |
| G514 | احتمال | 1. الاختيار العشوائي مع الأوزان 2. مجموع لفات الزهر |
| G515 | معادلات بسيطة | حل مشكلة الدجاج والأرانب باستخدام المعادلات |
| G516 | منطقة المضلعات | فصول المضلع مع خصائص المنطقة |
| G517 | مشكلة زراعة الأشجار | مشكلة زراعة الأشجار |
| G521 | مراقبة الأشياء 2 | ثلاث وجهات نظر من مكعبات V2 |
| G522 | العوامل والمضاعفات | 1. احصل على أعداد أولية 2. جولباخ تخمين |
| G523 | مكعبات ومكعبات | 1. فئة مكعبة مع خاصية الوحدة 2. تحويل وحدة حجم الممارسة |
| G524 | معنى وخصائص الكسور | 1. أعظم مقسوم مشترك وأقل عدد مضاعفات شيوع 2. تحويل العشرية إلى أبسط جزء |
| G525 | تناوب | تناوب |
| G526 | إضافة وجمع الكسور | إضافة وجمع الكسور |
| G527 | المخططات الخط | تحسين فئة البيانات لرسم المخططات متعددة الخطوط |
| G528 | تحديد الخارجي | تحديد الخارجي |
الهدف من البرامج في هذا المشروع هو ترجمة أساليب حل المشكلات الإنسانية إلى لغة الآلة (أي برامج Python) بشكل واضح وصراحة قدر الإمكان. هذا يرجع بشكل أساسي إلى الاعتبارات التالية:
لذلك ، قمنا بإعطاء الأولوية للنتائج فوق الكفاءة لمعظم برامجنا. ومع ذلك ، عند مواجهة السيناريوهات التي يتأثر فيها وقت التشغيل بشكل كبير ببيانات الإدخال ، سيتم توجيه المتعلمين لتجربة طرق برمجة مختلفة من الكفاءة المختلفة.
قم بتنزيل مثبت Python من موقع Python الرسمي (مناسب لمختلف أنظمة التشغيل). بالنسبة لمستخدمي Windows ، تأكد من التحقق من خيار "إضافة python.exe إلى المسار" أثناء التثبيت.

تثبيت Anaconda أو Miniconda (مناسبة لأنظمة التشغيل المختلفة). كوندا هو نظام حزمة مفتوحة المصدر وإدارة البيئة. تثبيت كوندا أيضا تثبيت Python وبعض الوحدات الشائعة الاستخدام.
استخدم Homebrew لتثبيت Python (مناسبة لأنظمة تشغيل MacOS وأنظمة Linux). Homebrew هو نظام إدارة حزم مفتوح المصدر. إذا تم تثبيت Homebrew بالفعل على نظامك ، فيمكنك استخدام الأمر التالي لتثبيت Python:
brew install python-tkIdle (بيئة التطوير والتعلم المتكاملة) هي أداة البرمجة المدمجة لـ Python. ويشمل مترجم تفاعلي ومحرر رمز. يحتوي IDLE فقط على وظائف عارية ، لذلك يوصى باستخدام محرر رمز أكثر قوة مثل VS Code.

VS Code (Visual Studio Code)

يعد مترجم Python التفاعلي ، والمعروف باسم shell ، واجهة سطر أوامر مفيدة للغاية حيث يمكنك إدخال أي تعبير بيثون ، وسيتم عرض النتائج على الشاشة على الفور. المترجم المترجم مثالي لتجربة مقتطفات رمز صغيرة ، مثل اختبار استخدام أنواع أو وظائف البيانات المدمجة. يوصى أنه عند البرمجة ، لا تقوم فقط بإدخال رمز الرمز في محرر الكود ولكن أيضًا لديك مترجم تفاعلي مفتوح في نفس الوقت. يتيح لك ذلك تجربة النتائج والتحقق منها فورًا في المترجم الفوري عندما تكون نتيجة التعبير غير مؤكدة.
يمكنك الوصول إلى مترجم Python التفاعلي بالطرق التالية:
بالنسبة لمستخدمي MacOS أو Linux ، يمكنك إدخال python في المحطة للوصول إلى المترجم التفاعلي. إذا لم يتعرف النظام على python ، فيمكنك تجربة python3 .

يمكن لمستخدمي Windows الوصول إلى المترجم التفاعلي من خلال النقر فوق "Python" في القائمة أو إدخال python في نافذة موجه الأوامر (cmd.exe). إذا لم يتعرف النظام على python ، فيمكنك تجربة python3 أو py .
تفتح أداة البرمجة المدمجة في Python مباشرة المترجم التفاعلي عند إطلاقها.

يمكنك أيضًا الوصول إلى المترجم التفاعلي من خلال نافذة VS Code المدمجة أو النافذة التفاعلية.
تعد الوحدات النمطية أو الحزم مثل Turtle و Tkinter جزءًا من مكتبة Python القياسية وتأتي مثبتة مسبقًا مع Python ، لذلك لا يلزم تثبيت إضافي.
Matplotlib هي مكتبة تصور بيانات Python شهيرة ويمكن تثبيتها باستخدام الطرق التالية:
التثبيت باستخدام وحدة PYTHON pip . إذا لم يتعرف النظام على python ، فيمكنك استبدال python بـ python3 أو py (لمستخدمي Windows) في الأوامر أدناه:
python -m pip install -U matplotlib إذا تم تثبيت كوندا ، فيمكنك استخدام أمر conda للتثبيت:
conda install matplotlibPygame هي مكتبة تطوير لعبة Python شهيرة. يستخدم برنامج G512 "لعبة الإحداثيات" وحدة الصوت من Pygame. يمكنك تثبيته بطريقة مماثلة لماتبلوتليب:
تثبيت باستخدام وحدة Python's pip :
python -m pip install -U pygame إذا تم تثبيت كوندا ، فيمكنك استخدام أمر conda للتثبيت:
conda install pygame⏫ العودة إلى الأعلى