شعار زيفيرنت

الحوسبة في الرياضيات: قم ببناء الحاسبة الخاصة بك

التاريخ:

الحوسبة في الرياضيات: قم ببناء الآلة الحاسبة الخاصة بك

4 فبراير 2019

خلال أيام الجمعة القليلة الماضية ، قمت بتدريس أول درس لي على الإطلاق لفصل من الطلاب النرويجيين ، وأردت أن أكتب عن التجربة هنا. 

كان هذا الفصل عبارة عن فصل يتكون من 30 طالبًا نرويجيًا في الرياضيات 1T ، والذي يغطي موضوعات المحاكاة التفاضلية التفاضلية وحساب التفاضل والتكامل. الطلاب في هذه الدورة قد انتهوا للتو من دراسة وظائف ، وتدوين وظيفة.

سألت الطلاب عن تجربتهم السابقة في البرمجة - لقد قام الكثير من الطلاب ببعض البرمجة في نقطة الصفر ، وأحدهم قام ببعض الأعمال في HTML ، ولم يكن لدى أي منهم أي خبرة في Python.

فيما يلي تفكير مبدئي حول كيفية هيكلة سلسلة من الدروس لدمج البرمجة في فصل الرياضيات. الطلاب مرتاحون بالفعل مع الآلات الحاسبة مثل Desmos و Geogebra ، ويرون بسهولة فائدتها في الرياضيات. لماذا لا تُقدم Python كنوع من "بناء الحاسبة الخاصة بك" ، مع التركيز على قدرتهم على برمجة وظائفهم الخاصة التي ستكون مفيدة للعمل في المستقبل؟

من الناحية المثالية ، يمكن أن أتخيل أن الطلاب في الفصل الدراسي Algebra 2 أو Precalc يقومون بإنشاء ملف من الوظائف التي ستكون مفيدة لعملهم في الرياضيات - وظائف لإيجاد التقاطع السيني لخط ، أو جذور التربيعي ، أو حتى منحدر من فوكتيون في وقت ما. بمجرد أن يتعلم الطلاب إتقان إجراء ما ، فإنهم يقومون بعد ذلك بتطوير هذا الإجراء إلى وظيفة في Python ، ويصبحون لاحقًا أحرار في استخدام هذه الوظيفة في المهام المستقبلية.

لهذا النوع من المقدمة ، قررت بدء تشغيل الطلاب في الاستبدال بيئة برمجة الويب. إذا كان لديك اتصال بالإنترنت في الفصل الدراسي ، فإن Repl.it هي بيئة رائعة للعمل بها لأنه لا يوجد شيء لتثبيته أو تهيئته ، ومع ذلك تحصل على نفس واجهة Python بالضبط التي ستحصل عليها من تثبيت IDLE أو Anaconda (دون الاضطرار إلى الانتظار نصف ساعة لأناكوندا لتحميل).

كان الخيار الآخر الذي قمت به هو البدء بالعمل مباشرة مع مترجم بايثون ، بدلاً من كتابة نصوص بايثون الفعلية. يتطلب هذا من الطلاب إدخال أوامر في المترجم الفوري واحدًا تلو الآخر. بعد معظم الأوامر ، يقدم لك المترجم بعض الملاحظات. لذلك إذا أدخلت "3 + 7" ، فسترى 10 تظهر أسفل الموجه. إذا حاولت إدخال أمر يتطلب أسطرًا متعددة ، مثل تعريف الوظيفة ، فإن موجه المترجم الفوري يتحول إلى علامات الحذف "..." مما يسمح لك بإدخال كل سطر من الأمر. وإذا كان الخط الخاص بك يتضمن أقواسًا غير متطابقة ، فستتمكن من معرفة ذلك لأن Python لن تعود إلى الموجه العادي حتى تتم مطابقة الأقواس. أخيرًا ، إذا كان لديك أي أخطاء في بناء الجملة في السطر الذي كتبته ، فستتلقى تعليقات فورية في شكل رسالة خطأ أسفل السطر مباشرة.

أعتقد أن هناك عددًا من المزايا للعمل أولاً مع مترجم Python. في برمجة Python العادية ، حيث تقوم بتشغيل برنامج نصي ، تظهر أخطائك في نافذة منفصلة ، وقد وجدت أنه من الصعب للغاية على الطلاب توصيل رسائل الخطأ هذه وتفسيرها على أنها تحتوي على تعليقات مهمة حول الكود الخاص بهم. إذا كنت تريد التحقق من قيمة المتغير ، فأنت تحتاج ببساطة إلى كتابة اسم المتغير على السطر الخاص به ، وستقوم Python بطباعة محتويات هذا المتغير. يمنحك العمل في المترجم الشفهي فرصة للتنبؤ بمخرج كل سطر من التعليمات البرمجية قبل تشغيله ، وهو أيضًا نشاط قيِّم عند تعلم البرمجة لأول مرة. وأخيراً ، لممارسة بناء الحاسبة الخاصة بك ، فإن العمل في المترجم الفوري يشبه إلى حد كبير كيف تعمل الآلة الحاسبة فعليًا.

خطة الدرس

كل طالب يجلب بيئة بيثون باستخدام اعادتها على أجهزة الكمبيوتر المحمول الخاصة بهم.

نبدأ بإدخال بعض مشكلات الإضافة البسيطة في المترجم - "4 + 6" ، وأسألهم عما إذا كان بإمكانهم معرفة العمليات الرياضية الأخرى والتحقق منها - الطرح والضرب والقسمة ، وسيجدون بسرعة "-" ، "*" "و ،" / ".

ثم أريهم المشغل "٪" وأطلب منهم قضاء بعض الوقت في استكشاف ما يفعله. أبدأ بإعطائهم بعض الأمثلة.

5%3 --> 2

6٪ 3 -> 0

10%3 --> 1

أطلب من الطلاب قضاء بعض الوقت في استكشاف هذه العملية. ما هي النواتج المحتملة لهذه العملية؟ ما هو بالضبط هذا المشغل تفعل؟

يقوم الطلاب بعمل بعض الاكتشافات المثيرة للاهتمام - الإخراج على الأقل 1 على الأقل من الرقم الثاني في المشغل. عندما نحصل على مزيد من المنهجية ، واستكشاف 1 ٪ 3 ، 2 ٪ 3 ، 3 ٪ 3 ، وما إلى ذلك ، يرون الإخراج متابعة باتن دوري. في النهاية ، يكون الطلاب قادرين على التنبؤ بالنمط من خلال أمثلة قليلة ، ثم مع مزيد من التحفيز ، وبعض النقاشات بين الثقافات حول الاختلافات في تدوين التقسيم بين النرويج والولايات المتحدة (هل تعلم أن علامة التقسيم الأمريكية تعمل باعتبارها ناقص تسجيل الدخول باللغة النرويجية؟ والقسمة الطويلة على النرويج تبدو مختلفة تمامًا عن الطريقة التي درست بها) ، فهم يتعرفون على مشغل المعامل الذي يمنحك العدد الصحيح الباقي من القسمة.صورة جديدة

في هذه المرحلة ، أقدم لهم ورقة غش من مختلف أوامر الثعبان التي قمت بلصقها معًا من الإنترنت وأطلب منهم قضاء بضع دقائق في استكشاف بعض الأمثلة في الغش. عندما نقوم بالتبليغ ، اكتشف الطلاب كل أنواع الأشياء الرائعة مثل

طباعة ("Hello" * 2)

> "HelloHello"

تحديد الوظائف

نظرًا لأن الطلاب قد درسوا للتو فكرة الوظيفة ، وكان هدفي الأساسي هو مساعدتهم في بناء مكتبة من الوظائف المفيدة للرياضيات ، فقد قررت أن أعرضهم على تعريف الوظائف في Python.

يرى الطلاب أن تعريفات الوظائف في Python يمكن أن تبدو بشكل ملحوظ مثل تعريفات الوظائف الرياضية. نبدأ مع وظيفة خطية بسيطة.


def f(x):
    return 2x+3

بيثون أيضا يجعل من السهل جدا إنشاء وظائف تدريجية ، مثل هذا


def f(x):
    if x >= 0:
        return 2x+3
    else:
        return 3

بعد ذلك ، تحدثنا عن الفرق بين المتغير والمعلمة ، وكيف في الكود أدناه ، فإن x في الوظيفة ليست مثل المتغير x - هذا يميل إلى أن يكون مفهومًا مربكًا للغاية للطلاب الذين بدأوا للتو مع البرمجة.


x = 3
def f(x):
if x >= 0:
return 2x+3
else:
return 3

كان هذا إلى حد كبير نهاية اليوم الأول من البرمجة و 90 دقيقة أو نحو ذلك من العمل. وبعد أسبوع ، عدت مع نشاط Desmos لقد خلقت لمساعدتهم على اختبار قدرتهم على قراءة التعليمات البرمجية وفهم عمليات بيثون الأساسية. كانت الشاشة الأولى عبارة عن تمرين مطابق حيث قام الطلاب بمطابقة 4 برامج صغيرة من خطين مع ناتجهم.

صورة جديدة

ثم أخذ الطلاب صدعًا في القراءة والتنبؤ بمخرجات برنامج صغير:
صورة جديدة

بفضل طبقة الحساب الرائعة ، تمكنت من إنشاء شاشة متابعة توضح للطلاب ما كتبوه كمخرجات واطلب منهم حل أي اختلافات بين تنبؤاتهم ومخرجات البرنامج.

صورة جديدة

أخيرًا ، قمت بإنشاء شريط تمرير بسيط للطلاب لشرح شعورهم تجاه عملنا حتى الآن:

صورة جديدة

بمجرد أن ناقشنا عملهم بشأن نشاط Desmos هذا ، أردت أن يرى الطلاب كيف يمكننا استخدام Python لتعريف الوظائف التي ليست "رياضية" ولذا فقد عملنا معًا لتطوير وظيفة من شأنها أن تأخذ زوجًا (x ، ص) كزوج المدخلات ، وإرجاع رباعي يحتوي على هذه النقطة ، الأول والثاني والثالث أو الرابع.

لقد بدأنا هذه العملية من خلال تطوير مخطط تدفق صغير لمساعدتنا على التفكير من خلال المنطق:

الربعية

من هذا ، حاولت أن أقوم ببعض الترميز المباشر التفاعلي حيث يخبرني الطلاب بما يكتب ، وفي النهاية ، قمنا بتجميع وظيفة تبدو مثل هذه.

def quadrant (x، y):
 إذا كانت x <0:

إذا كانت y> 0:

إرجاع "أنا"

آخر:

عودة "الرابع"

آخر:

إذا كانت y> 0:

إرجاع "II"

آخر:

عودة "الثالث"


لقد كان من المفيد جدًا أن يكون هناك مخطط تدفق للعودة لتتمكن من إظهار في نقاط مختلفة في الترميز مقدار الوظيفة التي كتبناها. ولكن بينما كان الطلاب يحاولون المتابعة لكتابة هذا البرنامج بأنفسهم ، فقد توقفت الأمور قليلاً عن القضبان. كانت قفزة كبيرة في الانتقال إلى كتابة الكود الذي كان له أوامر متداخلة من ثلاثة مستويات بعمق ، ووجدت مرة أخرى نفسي أجري لمساعدة الطلاب على فهم جميع أخطاء بناء الجملة المختلفة التي كانوا عليها. ليست جيدة.

للأسف ، كان الفصل قد انتهى للتو ، لذلك اضطررت إلى المغادرة مع شعور الكثير من الطلاب بالإحباط.

في اليوم الثالث ، عدت مع آخر ممارسة لمتابعة عملنا على وظيفة رباعي. هذه المرة ، أعدت كتابة الكود الذي ناقشناه في المرة الأخيرة ، وأضيفت خطأ في بناء الجملة وخطأًا في الخوارزمية ، وطلبت من الطلاب قضاء الجزء الأول من تصحيح أخطاء الفصل. هذا اتضح أن يكون كبيرا. قام الطلاب بعمل رائع في العثور على خطأ في بناء الجملة ، وكانوا يجرون مناقشات مثمرة لمحاولة اكتشاف الخطأ في البرنامج الذي ينتج مخرجات غير صحيحة. رأى الكثير منهم أن تصحيح الأخطاء أصعب بكثير (وأكثر إثارة للاهتمام) من مجرد العثور على أخطاء في بناء الجملة ، والبعض الآخر الذي انتهى في وقت مبكر بدأ يتجول في الغرفة لمساعدة أقرانهم.

بمجرد أن تكون لدينا وظيفة ربعية عاملة ، بدأنا في إنشاء وظائفنا الخاصة


def f(x):
    return x**2 + 4

print(Quadrant(2,f(2))

لنرى كيف تتنبأ وظيفتنا بشكل جيد بالنقاط على طول مجموعة كاملة من الوظائف. لقد بدأنا بالفعل في الاستمتاع عندما اقترح المعلم النظر في وظيفة الجيب ، والتي قمت باستيرادها ، ويمكننا أن نرى بسرعة كيف تتطابق تنبؤات وظيفتنا تمامًا مع الرسم البياني للخطيئة (x) في Desmos.

انعكاس

بحلول نهاية الجلسة الثالثة ، بدأ بعض الطلاب في الاستمتاع بالبرمجة والتفكير من خلال تنفيذ البرنامج. ما زال هناك عدد قليل منهم يجدونها محبطة للغاية ويتساءلون لماذا يجب أن تكون البرمجة صعبة للغاية. هذا شيء أريد حقًا أن أعمل عليه في المستقبل في تعليمي الخاص. أكثر بكثير من تجربتي في تدريس الفيزياء ، يبدو أن الطلاب الذين يبدؤون في البرنامج يفصلون أنفسهم سريعًا عن أشخاص يطورون حبًا سريعًا له والأشخاص الذين يعتقدون أنه ليس لهم. في كثير من الأحيان ، أعتقد أن هذا يرتبط ارتباطًا وثيقًا بالتجربة السابقة للطالب فيما يتعلق بالبرمجة والبرمجة للأنشطة المجاورة ، مثل تفكيك الأشياء ، والعمل باستخدام أجهزة بسيطة ، وما إلى ذلك ، وأنا أحب طريقة لمساعدة الطلاب الذين يعتقدون أن البرمجة ليست لهم ؛ إنهم لا يحصلون عليها بالسرعة التي يراها أقرانهم في كثير من الأحيان ، وكان أقرانهم يتمتعون بخبرة سابقة أكثر بكثير والتي تشكل جزءًا كبيرًا من أساس "حدسهم" الظاهر.

أعتقد أيضًا أن هناك حاجة حقيقية لتطوير العديد من التقييمات التكوينية الصغيرة للطلاب الذين يقومون بالبرمجة ، ولتمركز معظم هذه الأنشطة والتقييمات حول قراءة التعليمات البرمجية وإجراء تعديلات صغيرة على التعليمات البرمجية للسقالة. في كثير من الأحيان ، أعتقد أننا نطلب من الطلاب كتابة التعليمات البرمجية من نقطة الصفر ، وليس هذا شيئًا نادرًا ما يحدث في العالم الحقيقي للبرمجة ، بل إنه من الصعب للغاية على الطلاب العمل على ترجمة أفكارهم لبرنامج إلى خوارزمية ثم إتقان جميع التفاصيل الدقيقة اللازمة للحصول على برنامج عمل. هناك الكثير من الاستراتيجيات للمساعدة في ذلك ، مثل كتابة الكود الكاذب ، وتشغيل برنامجك غالبًا للعثور على الأخطاء ، لكنني أعتقد أنه بالنسبة لبعض الطلاب ، لا يزال هذا غير كافٍ ، ومحاولة العثور على الخطأ في الدقائق العشرون من الرمز الذي كتبته للتو في جلسة واحدة مهمة مستحيلة تقريبًا.

وأخيرا ، أتساءل عما إذا كانت هذه المهام مملة بشكل مخيف. اتضح أن منهج الرياضيات النرويجي بالكاد يعالج مفهوم الأرباع ، ولست متأكدًا من أن الطلاب متحمسون لإنشاء مكتبة من الوظائف التي يمكنهم استخدامها كآلة حاسبة خاصة بهم مخصصة كما سأكون. بالتأكيد هناك سياقات ، مثل العمل مع المتجهات ، وحساب المنتجات المتقاطعة ووحدات المتجهات العادية حيث قد تساعد هذه الفكرة الطلاب حقًا في معرفة مدى قوة آلة حاسبة مدفوعة بيثون ، ولكن إذا كنا نريد حقًا أن يرى الطلاب قوة البرمجة باعتبارها أداة لاستكشاف التفكير الرياضي ، وأعتقد أننا بحاجة إلى مواصلة العمل لإيجاد مواضيع أفضل لاستكشافها.


المصدر: https://quantumprogress.wordpress.com/2019/02/04/computing-in-mathematics-build-your-own-calculator/

بقعة_صورة

أحدث المعلومات الاستخباراتية

بقعة_صورة