When learning to program, students are usually assessed based on the code they wrote. However, the mere completion of a programming task does not guarantee actual comprehension of the underlying concepts. Asking learners questions about the code they wrote has therefore been proposed as a means to assess program comprehension. As creating targeted questions for individual student programs can be tedious and challenging, prior work has proposed to generate such questions automatically. In this paper we generalize this idea to the block-based programming language Scratch. We propose a set of 30 different questions for Scratch code covering an established program comprehension model, and extend the LitterBox static analysis tool to automatically generate corresponding questions for a given Scratch program. On a dataset of 600,913 projects we generated 54,118,694 questions automatically. Our initial experiments with 34 ninth graders demonstrate that this approach can indeed generate meaningful questions for Scratch programs, and we find that the ability of students to answer these questions on their programs relates to their overall performance.
- معرّف الورقة البحثية: 2510.11658
- العنوان: Automatically Generating Questions About Scratch Programs
- المؤلفون: Florian Obermüller, Gordon Fraser
- التصنيف: cs.SE (هندسة البرمجيات)
- وقت النشر/المؤتمر: CompEd 2025 (مؤتمر ACM العالمي لتعليم الحوسبة 2025)
- رابط الورقة البحثية: https://arxiv.org/abs/2510.11658
في تعليم البرمجة، يتم عادة تقييم الطلاب بناءً على الكود الذي يكتبونه. ومع ذلك، فإن إكمال مهام البرمجة بنجاح لا يضمن الفهم الحقيقي للمفاهيم الأساسية. لذلك، اقترحت الأبحاث السابقة تقييم فهم البرامج من خلال طرح أسئلة على المتعلمين حول أكوادهم. نظراً لأن إنشاء أسئلة مخصصة لكل برنامج طالب يعتبر مملاً وصعباً، اقترحت الأعمال السابقة طرقاً لإنشاء هذه الأسئلة تلقائياً. تعمم هذه الورقة هذه الفكرة على لغة البرمجة القائمة على الكتل Scratch. نقترح 30 نوعاً مختلفاً من أسئلة كود Scratch، تغطي نموذج فهم البرامج المعروف، وتوسع أداة التحليل الثابت LitterBox لإنشاء الأسئلة المناسبة تلقائياً لبرنامج Scratch معين. على مجموعة بيانات تحتوي على 600,913 مشروعاً، أنشأنا تلقائياً 54,118,694 سؤالاً. أظهرت التجارب الأولية على 34 طالباً في الصف التاسع أن هذه الطريقة تنتج بالفعل أسئلة ذات معنى لبرامج Scratch، وتكشف أن قدرة الطلاب على الإجابة عن هذه الأسئلة ترتبط بأدائهم الإجمالي.
تتمحور المشكلة الأساسية التي يعالجها هذا البحث حول: كيفية تقييم فعال لفهم الطلاب لبرامج Scratch التي كتبوها بأنفسهم، وليس فقط التحقق من أن البرنامج يعمل بشكل صحيح.
- الفجوة بين الفهم والتنفيذ: قد يكمل الطلاب مهام البرمجة من خلال التجربة والخطأ أو النسخ أو المساعدة الآلية، لكنهم لا يفهمون حقاً المفاهيم البرمجية الأساسية
- قيود طرق التقييم: تركز طرق التقييم التقليدية بشكل أساسي على صحة الكود، وليس على قدرة الطالب على فهم البرامج
- التحديات على نطاق واسع: في سيناريوهات التدريس على نطاق واسع، يجد المعلمون صعوبة في إنشاء أسئلة تقييم فهم مخصصة يدوياً لكل برنامج طالب
- قيود اللغات النصية: تركز طرق إنشاء الأسئلة الموجودة بشكل أساسي على لغات البرمجة النصية مثل Java، وليست مناسبة للغات البرمجة القائمة على الكتل مثل Scratch
- اختلافات خصائص اللغة: يتم إنشاء المتغيرات في Scratch من خلال واجهة المستخدم وليس من خلال بيانات الإعلان، ولا يمكن الإشارة إلى الكتل برقم السطر
- نقص النهج المنظم: نقص طريقة تصميم الأسئلة المنظمة والمبنية على إطار عمل نظري
يتمثل دافع هذا البحث في توسيع مفهوم "الأسئلة حول كود المتعلم" (Questions about Learner's Code, QLCs) الموجود إلى بيئة Scratch، لتوفير أداة تقييم فهم برامج مؤتمتة لتعليم البرمجة القائمة على الكتل.
- تصميم الأسئلة المنظم: تصميم منظم لـ 30 نوعاً من أنواع الأسئلة الموجهة لكود Scratch بناءً على نموذج Block Model لفهم البرامج
- توسيع الأداة: توسيع أداة التحليل الثابت مفتوحة المصدر LitterBox لتتمكن من إنشاء أسئلة فهم برامج Scratch تلقائياً
- التحقق على نطاق واسع: التحقق من قابلية تطبيق الطريقة على مجموعة بيانات تحتوي على 600,913 مشروع Scratch عام
- دراسة تجريبية: التحقق من فعالية الأسئلة والعلاقة بين أداء الطلاب في الإجابة وقدرتهم على البرمجة من خلال تجربة صفية على 34 طالباً في الصف التاسع
الإدخال: مشروع برنامج Scratch
الإخراج: مجموعة من أسئلة الفهم المُنشأة تلقائياً حول هذا البرنامج، بما في ذلك نص السؤال وخيارات الإجابة والإجابة الصحيحة
القيود: يجب أن تكون الأسئلة مبنية على بنى الكود الموجودة فعلاً في البرنامج، وتتوافق مع إطار عمل Block Model النظري
يتضمن نموذج Block Model أربع مستويات من نطاقات الاهتمام وثلاثة أبعاد برامج:
| المستوى | البعد النصي | بعد التنفيذ | بعد الهدف |
|---|
| المستوى الذري | عناصر اللغة | عمليات العناصر | الغرض من العناصر |
| مستوى الكتلة | المناطق ذات الصلة بالبناء الجملي/الدلالي | عمليات كتل الكود | وظيفة كتل الكود |
| مستوى العلاقة | المراجع بين كتل الكود | تدفق العمليات بين كتل الكود | العلاقة بين الأهداف والأهداف الفرعية |
| المستوى الكلي | البنية الإجمالية للبرنامج | الخوارزمية أو سلوك البرنامج | الهدف الإجمالي أو الغرض من البرنامج |
بناءً على نموذج Block Model، تم تصميم 30 نوعاً من الأسئلة، مقسمة إلى 5 تنسيقات إجابة:
- النوع الرقمي (🔢): الإجابة عبارة عن رقم واحد
- النوع النصي (📝): الإجابة عبارة عن سلسلة نصية واحدة أو أكثر
- النوع الثنائي (✓/✗): الإجابة نعم أو لا
- النوع متعدد الخيارات (☑️): اختيار الإجابة الصحيحة من الخيارات
- النوع النصي الحر (📄): أسئلة مفتوحة تتطلب إجابات توضيحية
يتم التنفيذ من خلال توسيع أداة LitterBox:
- تحليل AST: تحويل برنامج Scratch إلى شجرة بناء جملة مجردة
- نمط الزائر: تنفيذ محقق أسئلة لكل نوع سؤال
- اجتياز الكود: اجتياز AST لتحديد أنماط الكود التي يمكن إنشاء أسئلة عنها
- إنشاء الخيارات: إنشاء خيارات تشتيت تلقائية للأسئلة متعددة الخيارات
- التكييف مع البرمجة القائمة على الكتل: أول تطبيق منظم لمفهوم QLCs على لغات البرمجة القائمة على الكتل
- التصميم المدفوع بالنظرية: تصميم أنواع الأسئلة بناءً على إطار عمل نظري متطور لفهم البرامج
- الإنشاء المؤتمت: تنفيذ عملية إنشاء أسئلة مؤتمتة بالكامل
- التغطية متعددة الأبعاد: تغطي الأسئلة جميع المستويات من عناصر اللغة الأساسية إلى الغرض الإجمالي من البرنامج
- مجموعة البيانات الكبيرة: 600,913 مشروع Scratch عام، مع استبعاد المشاريع الفارغة والمختلطة
- بيانات التجربة الصفية: 34 طالباً من الصف التاسع الألماني، لديهم خبرة في برمجة Scratch
- مشاريع السقالات: استخدام لعبة Boat Race كمشروع أساسي للتجربة الصفية
- تكرار إنشاء الأسئلة: العدد الإجمالي لكل نوع سؤال والنسبة المئوية للمشاريع المغطاة
- تحليل الارتباط: معامل ارتباط بيرسون بين أداء الطلاب في الإجابة وإكمال مهام البرمجة
- تحليل التغطية: النسبة المئوية لتغطية المشاريع لكل بعد من أبعاد نموذج Block Model
نظراً لأن هذا هو أول بحث عن QLCs موجه لـ Scratch، يتم التحقق بشكل أساسي من خلال:
- المقارنة المفاهيمية مع QLCs الموجودة للغات النصية
- التحقق المنظم بناءً على إطار العمل النظري
- التحقق من التطبيق في سيناريوهات التدريس الفعلية
- توسيع الأداة: بناءً على أداة التحليل الثابت LitterBox
- تنسيق الإخراج: تنسيق JSON يتضمن مقاطع كود بصيغة ScratchBlocks
- عرض الأسئلة: تمييز جزء الكود المستهدف (كما هو موضح في الشكل 1a)
- آلية التصحيح: 0.2 نقطة لكل اختيار صحيح في الأسئلة متعددة الخيارات، نقطة واحدة للإجابة الصحيحة في الأسئلة ذات الخيار الواحد
- الإحصائيات الإجمالية: تم إنشاء 54,118,694 سؤالاً في 600,913 مشروع
- الأسئلة الأكثر تكراراً:
- Purpose of Script: 9,748,844 مرة (تغطية 100% من المشاريع)
- Purpose of If Condition: 5,103,322 مرة (تغطية 41.1% من المشاريع)
- Scripts for Actor: 3,524,268 مرة (تغطية 100% من المشاريع)
- الأسئلة الأقل تكراراً:
- My Block Definition: 368,712 مرة (تغطية 11.3% من المشاريع)
- Purpose of Loop Condition: 486,902 مرة (تغطية 15.2% من المشاريع)
| البعد | المستوى الذري | مستوى الكتلة | مستوى العلاقة | المستوى الكلي |
|---|
| البعد النصي | 64.5% | 61.2% | 46.5% | 100.0% |
| بعد التنفيذ | 30.4% | 58.4% | 99.0% | 71.1% |
| بعد الهدف | 49.0% | 100.0% | 31.2% | 100.0% |
- معامل الارتباط: r = 0.467 (p = 0.005)
- قوة الارتباط: ارتباط إيجابي متوسط
- الدلالة الإحصائية: p < 0.01، ذو دلالة إحصائية
- الأهمية العملية: ترتبط قدرة الطلاب على الإجابة عن QLCs بشكل كبير بدرجة إكمالهم لمهام البرمجة
- التحقق من الشمولية: يمكن إنشاء جميع أنواع الأسئلة الـ 30 بتكرار في المشاريع الفعلية
- الخصائص الهرمية: يمكن إنشاء الأسئلة عالية المستوى (مثل الغرض من البرنامج) في جميع المشاريع تقريباً، بينما تعتمد الأسئلة منخفضة المستوى على بنى برمجية محددة
- إثبات الفعالية: يمكن استخدام QLCs بفعالية كمؤشر على قدرة فهم البرامج
- القيمة التعليمية: يمكن استخدامها للكشف عن نقص المعرفة السابقة للطلاب
- تقييم فهم البرامج: تركز الطرق التقليدية بشكل أساسي على مهارات تتبع الكود والتفسير والكتابة
- إنشاء الأسئلة التلقائي: توجد بالفعل أدوات لإنشاء أسئلة تلقائية للغات النصية مثل Java
- تعليم البرمجة القائمة على الكتل: التطبيق الواسع لـ Scratch كلغة برمجة للمبتدئين
- الوراثة النظرية: تعتمد على نموذج Block Model كإطار عمل نظري متطور
- التوسيع التقني: تطبيق مفهوم QLCs الموجود لأول مرة على لغات البرمجة القائمة على الكتل
- الابتكار في الأدوات: تنفيذ إنشاء أسئلة مؤتمت موجه لـ Scratch بناءً على أداة LitterBox
- قابلية التكييف مع اللغة: تصميم متخصص يأخذ في الاعتبار خصائص لغات البرمجة القائمة على الكتل
- الاكتمال المنظم: تصميم منظم للأسئلة بناءً على إطار عمل نظري
- الفائدة العملية: التحقق على نطاق واسع من البيانات والتطبيق الفعلي في الفصول الدراسية
- الجدوى التقنية: يمكن إنشاء عدد كبير من أسئلة الفهم ذات المعنى لبرامج Scratch تلقائياً
- الفعالية التعليمية: يمكن للأسئلة المُنشأة تقييم قدرة الطلاب على فهم البرامج بفعالية
- القيمة العملية: توفير أداة تقييم مؤتمتة قابلة للتوسع لتعليم Scratch
- تقييم النصوص الحرة: لا تزال الأسئلة المفتوحة تتطلب مشاركة بشرية في التقييم التلقائي
- درجة تغطية الأسئلة: بعض بنى Scratch المحددة لا تحظى بتغطية كافية في الأبعاد منخفضة المستوى
- حجم التجربة: حجم العينة في التجربة الصفية نسبياً صغير (34 طالباً)
- قيود الوقت: قد تؤثر قيود الوقت في التجربة الصفية على النتائج
- دمج نماذج اللغة الكبيرة: الاستفادة من نماذج اللغة الكبيرة لتقييم الإجابات النصية الحرة تلقائياً
- توسيع الأسئلة: إضافة المزيد من أنواع الأسئلة الموجهة لبنى Scratch المحددة
- واجهة المستخدم: تطوير واجهة مستخدم مناسبة للاستخدام في الفصول الدراسية لإنشاء وإدارة الأسئلة
- دراسات التأثير طويلة الأجل: تقييم التأثير طويل الأجل لـ QLCs على نتائج التعلم
- ابتكار قوي: أول تطبيق منظم لـ QLCs على لغات البرمجة القائمة على الكتل، يملأ فراغاً بحثياً
- أساس نظري قوي: يضمن التصميم المنظم بناءً على نموذج Block Model الاكتمال النظري للأسئلة
- تجارب شاملة: الجمع بين تحليل البيانات على نطاق واسع والتجارب الصفية يتحقق من جدوى الطريقة وفعاليتها
- قيمة عملية عالية: يسمح نشر الأداة مفتوحة المصدر بتطبيق نتائج البحث مباشرة في الممارسة التعليمية
- كتابة واضحة: هيكل الورقة واضح، والتفاصيل التقنية موصوفة بدقة
- قيود التقييم: لا يزال تقييم الأسئلة النصية الحرة يتطلب مشاركة بشرية، مما يحد من الأتمتة الكاملة
- قيود العينة: حجم العينة في التجربة الصفية صغير نسبياً، مما يتطلب تحققاً على نطاق أوسع
- نقص التحليل المتعمق: نقص التحليل الدقيق لفعالية أنواع الأسئلة المختلفة
- مشاكل التكيف: لم يتم مناقشة كيفية التكيف مع مستويات مختلفة من الطلاب والمهارات بشكل كافٍ
- المساهمة الأكاديمية: توفير اتجاه بحثي جديد وأداة لمجال تقييم تعليم البرمجة
- القيمة العملية: توفير أداة تقييم مؤتمتة عملية لمعلمي Scratch
- قابلية التكرار: يضمن الكود مفتوح المصدر والإعداد التجريبي التفصيلي قابلية تكرار البحث
- إمكانية التوسع: يمكن توسيع الطريقة لتشمل لغات برمجة قائمة على كتل أخرى ومنصات
- تعليم البرمجة K-12: مناسب بشكل خاص للفصول الدراسية التي تستخدم Scratch لتعليم البرمجة الأساسي
- منصات التعلم عبر الإنترنت: يمكن دمجها في أنظمة التعلم البرمجي عبر الإنترنت لتوفير تعليقات تلقائية
- تدريب المعلمين: مساعدة المعلمين على فهم أفضل لمستوى فهم الطلاب للبرامج
- أداة البحث: توفير أداة تقييم موحدة لأبحاث تعليم البرمجة
تستشهد الورقة البحثية بـ 23 مرجعاً مهماً، تغطي نظرية فهم البرامج وتقييم تعليم البرمجة وأدوات تحليل Scratch وغيرها من مجالات البحث ذات الصلة. من بين الأعمال التي تستحق الاهتمام بشكل خاص الورقة الأصلية لنموذج Block Model والأعمال ذات الصلة بأداة LitterBox والدراسات التجريبية حول العلاقة بين فهم البرامج والقدرة على البرمجة.