الأحد، 20 أبريل 2014

        
  مقدمة عن تعليم البرمجة في المدارس
إعداد/ محمد أحمد ماهر
معلم علوم كمبيوتر
Abosheetah@gmail.com

أثبتت العديد من الدراسات ضعف مستوى أداء الطلاب في مهارات البرمجة(Lahtinen, Ala-Mutka, & Järvinen, 2005; Sison, Numao, & Shimura, 2000) واعتبر الكثير منهم أن عملية تعلم البرمجة تحتوي على العديد من الأنشطة، فعلى سبيل المثال منها، تعلم ميزات اللغة، وتصميم البرامج، وفهم البرنامج(Ala-Mutka, 2012, p. 3).
إن عملية تعلم البرمجة هي عملية صعبة ومعقدة، ولعل من أهم أسباب ذلك هو أن الطلاب يجدون صعوبة في فهم ما يقوم به جهاز كمبيوتر في الواقع عند تنفيذ خطوط البرنامج وبين ما يحدث في وقت واحد في الذاكرة(Miyadera, Kurasawa, Nakamura, Yonezawa, & Yokoyama, 2007).
وتشمل هذه العملية المعرفة بأدوات البرمجة ولغاتها، ومهارات حل المشكلة، واستراتيجيات فعالة لتصميم البرامج وتنفيذها، ويعتبر المنهج المتبع في عملية تعليم وتعلم البرمجة يكون من خلال إدراك أساسيات اللغة ومن ثم توجيه الطلاب نحو استراتيجيات فعالة لعملية البرمجة بشكلها العام لذلك، غالبا ما يتم التأكيد من تعلم المفاهيم الأساسية، لأنها تشكل الأساس لبناء مهارات أكثر تقدماً(Ala-Mutka, 2012, p. 2)
لذلك تعتبر عملية تعلم البرمجة أمراً صعباً، وغالباً ما تسجل أعلى معدلات الانقطاع عن تعليمه من قِبل الطلاب(O'Kelly & Gibson, 2006)، وعزى كثير من الباحثين هذه الظاهرة إلى المنهجية والأدوات المستخدمة كطرق التدريس التقليدية القائمة على المحاضرات، وكذلك استخدام جمل محددة أثناء تعليم لغات البرمجة إلا أنه غالباً ما يفشل هذا الأسلوب في تحقيق دفع الطالب للانخراط في تعلم أنشطة البرمجة (Lahtinen et al., 2005; Schulte & Bennedsen, 2006; Wilcocks & Sanders, 1994).
وتكمن المصاعب التي تواجه الطلاب في معرفة المفاهيم المجردة عن كيفية تصميم حلول للمشكلات البرمجية ثم ترجمة ذلك لكود فرعي بسيط وتصور حالات الخطأ الافتراضية لنفس الكود مع صعوبة استيعاب التركيبات البرمجية (Elgamal, Abas, & Baladoh, 2013; Esteves, Fonseca, Morgado, & Martins, 2008)، وكذلك صعوبات في فهم المفاهيم الأساسية للبرمجة مثل المتغيرات و أنواع البيانات وعناوين للذاكرة وحيث أن هذه المفاهيم ليس لها تشبيه مباشر على أرض الواقع(Miliszewska & Tan, 2007)، وكذلك عدم معرفة كيفية استخدام لغة البرمجة بشكل صحيح لإنشاء برنامج(Winslow, 1996).
وقد حاول كثير من الباحثين إيجاد طرق وأساليب جديدة لتعليم لغات برمجة الحاسوب، فهناك من حاول حل هذه المشكلة باستخدام العالم الافتراضي(Esteves, Fonseca, Morgado, & Martins, 2011)، وهناك من حاول حلها من خلال مساعدة الطالب لفهم سلوك البرنامج بشكل رسومي (Kordaki, 2010; Tekdal, 2013)، وأيضاً من خلال البرامج التفاعلية عبر الويب(Elgamal et al., 2013)، ومن خلال الألعاب(Moreno, 2012).
خصائص الطلاب المبتدئين في البرمجة
تم عمل بحوث تربوية للتعرف على خصائص الطلاب المبرمجين المبتدئين ودراسة عملية تعلم البرمجة وصلاتها بالجوانب مختلفة من البرمجة، وقد أوضحت العديد من الدراسات أن السمات المشتركة بين متعلمي البرمجة المبتدئين تقتصر على المعرفة السطحية حول البرمجة وانتهاج أسلوب البرمجة "سطراً سطراً" في كتابة الكود البرمجي، وأن المبتدئين يقضون وقتاً طويلاً في تخطيط وتكويد "كتابة رموز" البرنامج، وعند الضرورة يقومون بمحاولة تصحيح البرنامج إصلاحات محلية صغيرة بدلاً من إعادة صياغة البرنامج بشكل أكثر شمولاً(Kölling & Rosenberg, 1996)، وأيضاً تميل معرفة المبدئين البرمجية إلى أن تكون في سياق معين بدلاً من أن تكون في سياقات عامة، وكذلك يفشلون في تطبيق المعرفة التي تم الحصول عليها بشكل صحيح(Kölling & Rosenberg, 1996).
وقد أجرى كلاً من ميلن وروي(Milne & Rowe, 2002) دراسة استطلاعية حول صعوبات تعلم برمجة الـ C++ عن طريق إجراء استبيان على شبكة الإنترنت لكلاً من الطلاب والمعلمين، وكانت واحدة من النتائج الأكثر وضوحاً أن تقييم الطلاب أصعب من تقييم المعلمين، واقترحا أن ذلك يرجع إلى أن الطلاب يعتقدون أنهم قد فهموا المسألة في حين أن المعلمين يحددون أوجه القصور التي لديهم في تعلم البرمجة.
وكذلك الخصائص الشخصية للطلاب تؤثر على أدائهم، ومن الممكن القول أنه لا توجد فروق ذات دلالة إحصائية في تعلم البرمجة التي من شأنها أن تكون ناجمة عن فئات مثل الجنس أو الجنسية، ولكن في المقابل يعتبر الذكاء العام والقدرات الرياضية والعلوم لهم صلة تعود بالنجاح في تعلم البرمجة(Bruce-Lockhart & Norvell, 2000)، وبطبيعة الحال، فإن استراتيجيات التعلم لدى الطلاب تحفزهم وتؤثر على نجاحهم في تعلم استراتيجيات البرمجة المختلفة.

References
Ala-Mutka, K. (2012). Problems in learning and teaching programming. Codewitz Needs Analysis. 
Bruce-Lockhart, M. P., & Norvell, T. S. (2000). Lifting the hood of the computer: program animation with the Teaching Machine. Paper presented at the Electrical and Computer Engineering, 2000 Canadian Conference on.
Elgamal, A., Abas, H., & Baladoh, E.-S. (2013). An interactive e-learning system for improving web programming skills. Education and Information technologies, 18(1), 29-46. 
Esteves, M., Fonseca, B., Morgado, L., & Martins, P. (2008). Contextualization of programming learning: A virtual environment study. Paper presented at the Frontiers in Education Conference, 2008. FIE 2008. 38th Annual.
Esteves, M., Fonseca, B., Morgado, L., & Martins, P. (2011). Improving teaching and learning of computer programming through the use of the Second Life virtual world. British Journal of Educational Technology, 42(4), 624-637. 
Kölling, M., & Rosenberg, J. (1996). Blue—a language for teaching object-oriented programming. Paper presented at the ACM SIGCSE Bulletin.
Kordaki, M. (2010). A drawing and multi-representational computer environment for beginners’ learning of programming using C: Design and pilot formative evaluation. Computers & Education, 54(1), 69-87. 
Lahtinen, E., Ala-Mutka, K., & Järvinen, H.-M. (2005). A study of the difficulties of novice programmers. Paper presented at the ACM SIGCSE Bulletin.
Miliszewska, I., & Tan, G. (2007). Befriending computer programming: A proposed approach to teaching introductory programming. Informing Science: International Journal of an Emerging Transdiscipline, 4(1), 277-289. 
Milne, I., & Rowe, G. (2002). Difficulties in learning and teaching programming—views of students and tutors. Education and Information technologies, 7(1), 55-66. 
Miyadera, Y., Kurasawa, K., Nakamura, S., Yonezawa, N., & Yokoyama, S. (2007). A Real-time Monitoring System for Programming Education using a Generator of Program Animation Systems. Journal of Computers, 2(3), 12-20. 
Moreno, J. (2012). Digital Competition Game to Improve Programming Skills. EDUCATIONAL TECHNOLOGY & SOCIETY, 15(3), 288-297. 
O'Kelly, J., & Gibson, J. P. (2006). RoboCode & problem-based learning: a non-prescriptive approach to teaching programming. Paper presented at the ACM SIGCSE Bulletin.
Schulte, C., & Bennedsen, J. (2006). What do teachers teach in introductory programming? Paper presented at the Proceedings of the second international workshop on Computing education research.
Sison, R. C., Numao, M., & Shimura, M. (2000). Multistrategy discovery and detection of novice programmer errors. Machine Learning, 38(1-2), 157-180. 
Tekdal, M. (2013). The Effect of an Example-Based Dynamic Program Visualization Environment on Students’ Programming Skills. EDUCATIONAL TECHNOLOGY & SOCIETY, 16(3), 400-410. 
Wilcocks, D., & Sanders, I. (1994). Animating recursion as an aid to instruction. Computers & Education, 23(3), 221-226. 
Winslow, L. E. (1996). Programming pedagogy—a psychological overview. ACM SIGCSE Bulletin, 28(3), 17-22. 


0 التعليقات :

إرسال تعليق

حقوق التأليف والنشر © ٢٠١٥ برمجيات تعليمية | مصمم بواسـطة إسماعـيل الشحـات | مدعـوم من بلوجـر