برنامج حسب التصميم
مشروع ProgramByDesign ( المعروف سابقًا باسم TeachScheme! ) هو جهد توعوي لمجموعة أبحاث PLT . يهدف المشروع إلى تدريب أعضاء هيئة التدريس الجامعيين ومعلمي المدارس الثانوية ، وربما حتى معلمي المدارس الإعدادية، في مجال البرمجة والحوسبة .
تاريخ
بدأ ماتياس فيليسين ومنظمة PLT هذا الجهد في يناير 1995، بعد يوم واحد من ندوة مبادئ لغات البرمجة (POPL)، استجابةً لملاحظات فيليسين على طلابه الجدد في جامعة رايس ومنهج الجبر في المدارس الحكومية المحلية. كان هدفه استخدام البرمجة الوظيفية لجعل الرياضيات أكثر حيوية، والمساهمة في إثراء مناهج علوم الحاسوب التمهيدية بمعرفة التصميم .
بدأ الجهد باستخدام لغة برمجة تسمى PLT Scheme والتي كانت نسخة من لغة Scheme ، وهي لهجة من لغة Lisp .
جمعت المجموعة أموالاً من عدة مؤسسات خاصة ، ووزارة التعليم الأمريكية ، والمؤسسة الوطنية للعلوم لإنشاء:
- برنامج مناسب للمبتدئين في البرمجة الوظيفية
- المواد التعليمية: المناهج الدراسية، وملاحظات المحاضرات، والتمارين، والمشاريع المصغرة
- معسكرات تدريب المعلمين
على مدى عشر سنوات، نظم المشروع عشرات ورش العمل التدريبية التي استمرت أسبوعاً واحداً لنحو 550 معلماً. وفي عام 2005، أقام مشروع "TeachScheme!" ورشة عمل احتفالية بمناسبة الذكرى السنوية، حيث قدم 24 معلماً أعمالهم لطلابهم.
في عام 2010، أعادت شركة PLT تسمية لغة البرمجة الرئيسية الخاصة بها من PLT Scheme إلى Racket ، و DrScheme إلى DrRacket . وبعد ذلك بقليل، أعادت تسمية TeachScheme! إلى ProgramByDesign .
البرمجة الوظيفية، والحوسبة، والجبر
ينطلق منهج البرمجة بالتصميم من ملاحظة أن الطلاب يتصرفون كأجهزة حاسوب في دروس الحساب بالمرحلة الابتدائية ، وفي دروس الجبر التمهيدي والجبر بالمرحلتين الإعدادية والثانوية . يقوم المعلمون ببرمجة هذه الأجهزة بقواعد محددة، ويطرحون مسائل معينة من خلال تمارين. يكمن جوهر هذا المنهج في أن الطلاب ينفذون برامج وظيفية بحتة.
إذا أمكن تحويل الطلاب إلى معلمين يقومون بإنشاء برامج وظيفية وتشغيلها على أجهزة الكمبيوتر، فسيتم تعزيز هذا المحتوى وإظهار للطلاب كيف أن كتابة الرياضيات والبرامج الوظيفية تخلق مشاهد متحركة نابضة بالحياة وحتى ألعاب كمبيوتر.
إليك مثال:
( يتطلب 2htdp/universe ) ( يتطلب 2htdp/image );; إنشاء صورة من الوقت الحالي ( تعريف ( إنشاء-صورة t ) ( وضع-صورة APPLE 50 ( * 1/10 t t ) SPACE ));; أسماء للصور الأساسية ( تعريف APPLE ( دائرة 3 "صلب" "أحمر" )) ( تعريف SPACE ( مشهد فارغ 100 100 ))( animate create-image )يحاكي هذا البرنامج القصير سقوط تفاحة من أعلى إلى أسفل لوحة بيضاء صغيرة. ويتكون من ثلاثة أجزاء:
- تم تقديم تعريف دالة لإنشاء صورة، وهي دالة من سطر واحد في الرياضيات، تفترض وجود جبر للصور مع صورة المكان والدائرة والمشهد الفارغ.
- اختصاران، حيث تُساوى الأسماء بقيمة معينة، تمامًا كما في "ليكن x يساوي 5" في كتاب الجبر
- سطر واحد لتشغيل البرنامج
يستطيع المعلم شرح دالة إنشاء الصورة بسهولة تامة، تمامًا كما يشرح أي دالة عادية في مقرر الجبر. على سبيل المثال، يمكن رسم جدول مكون من صفين و n عمودًا، حيث يحتوي كل عمود على قيمة t في الأعلى وصورة مناسبة في الأسفل. أي، إذا زادت الأرقام من اليسار إلى اليمين، فإن النقطة الحمراء في كل صورة تكون أقل ارتفاعًا قليلًا.
وأخيرًا، يقوم سطر التحريك بتطبيق الدالة المحددة، إنشاء الصورة، بمعدل 28 نبضة في الثانية على الأرقام 0، 1، 2، 3، وهكذا. تُعرض الصور الناتجة على شاشة الكمبيوتر بنفس الوتيرة. هكذا تُصنع الأفلام.
لا تتطلب هذه الأمثلة سوى معرفة بسيطة بصناعة الأفلام، وجبر الصور في برنامج DrRacket (المشابه لجبر الأرقام)، وأساسيات الجبر التمهيدي. مع ذلك، يدّعي مشروع ProgramByDesign أن الأطفال سيستمتعون أكثر بهذه الدوال التفاعلية مقارنةً بالتعبيرات الجبرية التي تحسب عدد بلاطات الحديقة [انظر كتب برنتيس هول للصفين الثامن والتاسع].
يقترح مشروع ProgramByDesign أن تستفيد كل من مناهج الرياضيات والعلوم التقليدية من دمج هذا النوع من البرمجة. على عكس كتل BASIC أو Visual Basic التقليدية في هذه الكتب، يتكون برنامج Racket من عدد أسطر يساوي عدد أسطر المعادلات الرياضية. وبالتالي، يصبح التنقل بين المعادلات والبرنامج سهلاً ومباشراً. والأفضل من ذلك، أن معنى كليهما واحد. يمكن لأداة DrRacket الجبرية أن توضح كيف يُقيّم Racket البرنامج كما لو كان طالبًا في الصف السادس أو السابع، خطوة بخطوة، باستخدام الجبر البسيط.
البرمجة الوظيفية، الحوسبة والتصميم في البرمجة 101
في المناهج التمهيدية للبرمجة، يؤكد مشروع "البرمجة بالتصميم" على ضرورة تركيز المقررات الدراسية على دور التصميم المنهجي. فحتى لو لم يمارس الطلاب البرمجة مجدداً، سيدركون مدى فائدة اتباع منهجية منهجية في حل المشكلات. وهذا من شأنه أن يفيدهم سواء أصبحوا مبرمجين أو أطباء أو صحفيين أو مصورين. وبالتالي، لن يُنظر إلى المقرر التمهيدي في البرمجة على أنه مكان يتعلم فيه الطلاب قواعد لغات البرمجة الرائجة حالياً (والتي ستصبح قريباً قديمة)، بل مكان يتعلمون فيه مهارات قابلة للتطبيق على نطاق واسع.
إن العنصر التصميمي الرئيسي لمنهج ProgramByDesign هو وصفة التصميم . وهي تتكون من بعدين: بعد العملية وبعد البيانات.
على صعيد العملية، يتعلم الطلاب أن هناك ست خطوات لتصميم برنامج (بسيط)، قبل أن يتمكنوا من تشغيله ويتمكن الآخرون من استخدامه:
- تحليل المشكلات بهدف وصف فئات البيانات التي تدخل إلى البرنامج وتخرج منه؛
- إعادة صياغة بيان المشكلة كبيان موجز للغرض
- إنشاء أمثلة توضح بيان الغرض وتكون بمثابة معايير للنجاح؛
- تنظيم المعطيات، ويسمى أيضاً قالب أو قائمة جرد
- البرمجة
- إنشاء مجموعة اختبارات من الأمثلة لضمان عمل البرنامج بشكل صحيح على المدخلات الصغيرة.
كما هو الحال في تطوير البرمجيات القائم على الاختبار ، تتم كتابة حالات الاختبار قبل كتابة التعليمات البرمجية، كجزء من تحليل المتطلبات، بدلاً من كتابتها لاحقاً كجزء من الاختبار.
يمكن لأي مسعى بشري تقريباً أن يستفيد من الفهم الواضح للمشكلة، وتحديد معايير النجاح، وتحليل الموارد والمعطيات المتاحة، ووضع حل مقترح، والتحقق منه مقابل المعايير، بهذا الترتيب.
على سبيل المثال، يستفيد الصحفي من عملية مماثلة: تحديد المفاهيم الرئيسية في القصة؛ إنشاء عنوان رئيسي؛ ترتيب الأمثلة والبيانات المحددة؛ تنظيم المقال حول قصة المعطيات وكيف تطورت القصة؛ الكتابة؛ والتحقق من الحقائق.
يمكن تلخيص بُعد البيانات بالمقولة: " يحدد شكل البيانات شكل الكود والاختبارات". على سبيل المثال، إذا كان لنوع بيانات الإدخال أو الإخراج ثلاثة متغيرات، فيجب أن تحتوي مجموعة الاختبارات على حالة اختبار واحدة على الأقل من كل متغير، ومن المرجح أن يحتوي كود البرنامج على شرط ثلاثي (سواء كان صريحًا أو ضمنيًا في إرسال متعدد الأشكال). إذا كان لنوع بيانات الإدخال أو الإخراج ثلاثة حقول، فسيتعين على مجموعة الاختبارات تحديد قيم لهذه الحقول الثلاثة، وسيتعين على كود البرنامج الإشارة إليها. إذا كان لنوع بيانات الإدخال أو الإخراج حالة أساسية بسيطة ومتغير واحد أو أكثر ذاتي المرجعية، فيجب أن تتضمن مجموعة الاختبارات حالة أساسية وحالة واحدة أو أكثر غير أساسية، ومن المرجح أن يحتوي كود البرنامج على حالة أساسية وحالة واحدة أو أكثر ذاتية المرجعية، متماثلة مع نوع البيانات. إن تقنية الاستدعاء الذاتي ، بدلًا من أن تكون غامضة أو مخيفة، هي ببساطة تطبيق أساليب مُتعلمة مسبقًا على نوع بيانات ذاتي المرجعية.
تتمثل مهمة تنظيم المعطيات في ترجمة أوصاف البيانات إلى هيكل برمجي. يحدد كل شكل من أشكال الوصف شكلاً محدداً من تنظيم البرنامج. هذه العملية آلية تقريباً، مما يساعد الطلاب على التركيز على الجانب الإبداعي من المهمة.
كتاب "كيفية تصميم البرامج " (HTDP) هو كتابٌ دراسيٌّ من تأليف أعضاء المجموعة الأساسية في مشروع ProgramByDesign. [ 1 ] ويجري حاليًا إعداد طبعة ثالثة منه. [ 2 ]
اختيار لغة البرمجة
قد يوحي اسم "TeachScheme!" بأن هذه الوصفة التصميمية تتطلب لغة Scheme (التي تُعرف الآن باسم Racket ) ولا يمكن تدريسها إلا بها. كلا الاستنتاجين غير صحيح. فقد نجح أعضاء PLT والمتدربون لديهم في تطبيق هذه الوصفة التصميمية في لغات برمجة مثل لغة التجميع ، و C ، و Java ، و ML ، و Python ، وغيرها، وفي تدريس مقررات الهندسة، وعلم الأحياء، والشعر. تقوم الفكرة الأساسية لمنهج ProgramByDesign على التأكيد على البرمجة كنشاط تصميمي. هذا المفهوم الخاطئ هو أحد أسباب تغيير الاسم الذي اتُخذ عام ٢٠١٠.
وللبدء، أنتج مشروع ProgramByDesign ثلاثة عناصر أساسية:
- سلسلة من لغات التدريس الأكثر قوة وتساهلاً بشكل متتابع، وهي لهجات من لغة Racket، تتوافق مع وصفة التصميم ولكن مع الإبلاغ عن الأخطاء بما يتناسب مع مستوى الطالب (على سبيل المثال، يتم وضع علامة على العديد من الأشياء المسموح بها في لغة Racket القياسية، ولكن الطالب المبتدئ لا يحتاجها، على أنها أخطاء في مستوى الطالب المبتدئ).
- بيئة برمجة تعليمية سهلة الاستخدام للمبتدئين، قابلة للتنزيل مجانًا، وبيئة تطوير متكاملة تُسمى DrRacket، تُعزز مستويات اللغة هذه
- منهج دراسي، مُشفّر في معظمه في كتاب "كيفية تصميم البرامج"، [ 1 ] والذي يجري العمل على إصدار طبعته الثالثة. [ 2 ]
يعكس اختيارهم للغة Racket إيمانهم بأنها لغة مناسبة لفريق صغير ذي تمويل محدود (مقارنةً بلغة Java) للتحقق من صحة فرضياتهم. وقد حرص فريق PLT دائمًا على ضمان قابلية تطبيق أفكارهم في سياقات أخرى.
للغة جافا
على مدى السنوات القليلة الماضية، أنشأ الفريق أيضًا جزءًا ثانيًا أو مرحلة ثانية من المنهج. يوضح هذا الجزء كيفية تطبيق أفكار تصميم البرمجيات نفسها على لغة برمجة كائنية التوجه معقدة ، مثل جافا . تُطبق هذه الأفكار مبدئيًا في نموذج البرمجة الوظيفية، ثم تُقدم مفاهيم البرمجة الكائنية مثل تعدد الأشكال والوراثة، ثم تُقدم الأساليب الإجرائية الشائعة في جافا.
حصل جزء من الفريق على منحة من المؤسسة الوطنية للعلوم لإجراء اختبارات ميدانية في الكليات والمدارس الثانوية. وعُقدت ورش عمل للتطوير المهني في صيف الأعوام 2007 و2008 و2009 و2010. يُطلق على هذا الجزء من المشروع اسم "ReachJava"، والكتاب المصاحب له يحمل عنوانًا مبدئيًا "كيفية تصميم الفئات".
بوتستراب
في عام ٢٠٠٦، تعاونت مبادرة PLT في جامعة نورث إيسترن مع منظمة Citizen Schools من بوسطن لتقديم برامج ما بعد المدرسة لطلاب الأحياء الفقيرة. Citizen Schools هي منظمة وطنية تربط المتطوعين بمواقع برامج ما بعد المدرسة وتساعدهم على البدء بمناهج دراسية محددة. يهدف هذا الجهد إلى تحويل هذه المواد إلى منهج دراسي للصف السادس. حققت الاختبارات الأولى نجاحًا باهرًا في بوسطن. [ ٣ ] [ ٤ ] وقد شجع تأثير هذا البرنامج على مناهج الرياضيات شركتي مايكروسوفت وجوجل على تمويل مشروع وطني لتوسيع نطاقه، وتطوير مواد لتدريب المعلمين، وإنشاء مواقع في تكساس وكاليفورنيا ومدن أخرى يتطوع فيها المتطوعون.
مراجع
- 1 2 فيليسين، ماتياس ؛ فيندلر، روبرت بروس ؛ فلات، ماثيو ؛ كريشنامورثي، شري رام (2018-01-06). "كيفية تصميم البرامج" . مطبعة معهد ماساتشوستس للتكنولوجيا . تم الاسترجاع في 2019-01-08 .
- 1 2 فيليسين، ماتياس . "كيفية تصميم البرامج، الطبعة الثالثة" . Felleisen.org . تم الاطلاع عليه بتاريخ 2019-01-08 .
- ↑ "برنامج دعم الطلاب يُحسّن أداء طلاب المرحلتين الإعداديتين في روكسبري ودورتشستر" . Boston.com . 3 مايو 2011. مؤرشف من الأصل في 8 مايو 2011. تم الاطلاع عليه بتاريخ 29 سبتمبر 2011 .
- ↑ كريشنامورثي، شري رام (مارس 2009). "مترجم لغة سكيم موبي للهواتف الذكية" . جامعة براون، قسم علوم الحاسوب . تاريخ الاسترجاع: 8 يناير 2019 .
روابط خارجية
- تعليم علوم الحاسوب
- لغة البرمجة Scheme
- جافا (لغة برمجة)
