خلال سنة التطبيق العملي، أتيحت لي فرصة تمرير دروس في لغة #C، وكانت هذه التجربة من أهم المحطات في تطوري كطالب متدرّب. فالوقوف أمام الطلاب يختلف عن مشاهدة الحصة، لأنه يضع المعلم في موقع المسؤولية المباشرة عن التخطيط، الشرح، إدارة الوقت، التفاعل مع الطلاب، ومتابعة فهمهم للمادة.
كل درس قمت بتمريره منحني فرصة جديدة للتعلم. كنت أكتشف من خلال التنفيذ أن التخطيط وحده لا يكفي، وأن نجاح الحصة يحتاج إلى قدرة على التفاعل مع الطلاب، وملاحظة الصعوبات أثناء حدوثها، وتعديل الشرح أو المثال عند الحاجة. وقد ساعدتني هذه التجارب على بناء ثقة أكبر بنفسي، وعلى فهم أعمق لطبيعة تدريس الحاسوب.
الدرس الأول: الوراثة Inheritance في لغة #C
قمت بتمرير درس حول موضوع الوراثة في البرمجة الكائنية، وهو من المواضيع المهمة في عالم OOP. بدأت الدرس بتمهيد يقرّب الفكرة من الطلاب من خلال مثال الكتب الورقية والكتب الإلكترونية، حيث توجد خصائص مشتركة بين النوعين، مثل العنوان واسم المؤلف، وفي الوقت نفسه توجد خصائص خاصة بكل نوع. من خلال هذا المثال، حاولت أن أوضح للطلاب كيف تساعدنا الوراثة على تنظيم الكود وتجنب التكرار.
بعد ذلك انتقلت إلى شرح العلاقة بين الفئة الأم Base Class والفئة الابنة Derived Class، وبيّنت كيف يمكن للفئة الابنة أن ترث الخصائص والدوال من الفئة الأم، ثم تضيف ما يميزها. وخلال الحصة، تم حل سؤال تطبيقي يحاكي نظام إدارة مكتبة، حيث طُلب من الطلاب إنشاء فئة أم باسم Book، وفئتين فرعيتين هما Pbook و Ebook، مع إضافة الخصائص المناسبة لكل نوع من الكتب.
كان الهدف من الدرس أن يفهم الطلاب مفهوم الوراثة بشكل عملي، لا كمصطلح نظري فقط. أردت أن يدركوا أن الوراثة ليست مجرد قاعدة في لغة #C، بل أسلوب يساعد المبرمج على بناء كود أكثر تنظيمًا ووضوحًا، ويقلل من تكرار الخصائص والدوال المشتركة.
ما الذي نجح في درس الوراثة؟
نجح استخدام مثال الكتب الورقية والإلكترونية في تقريب الفكرة من الطلاب، لأنه مثال واضح ويمكن تخيله بسهولة. كما ساعد الانتقال من المثال النظري إلى السؤال التطبيقي على اللوح في توضيح العلاقة بين الفئات، وإظهار كيف يمكن للفئة الأم أن تحتوي على الخصائص المشتركة، بينما تضيف الفئات الفرعية خصائصها الخاصة.
لاحظت أن الطلاب فهموا الفكرة بصورة أفضل عندما رأوا أن تكرار الخصائص في أكثر من فئة يمكن تجنبه من خلال الوراثة. كما أن حل السؤال خطوة بخطوة ساعدهم على ربط المفهوم النظري بالكود الفعلي، وهذا كان من الجوانب الإيجابية في الحصة.
ما الذي كنت لأغيّره لاحقًا في درس الوراثة؟
رغم أن الحصة حققت هدفها الأساسي في توضيح مفهوم الوراثة، إلا أنني شعرت أنه كان من الممكن جعل الدرس أكثر تفاعلية ووضوحًا من خلال استخدام أداة رقمية أو عارضة تعليمية. فموضوع الوراثة يعتمد كثيرًا على فهم العلاقة بين الفئات، وهذه العلاقة يمكن أن تصبح أوضح إذا عُرضت بشكل بصري من خلال مخطط يبيّن الفئة الأم والفئات الفرعية والخصائص المشتركة والخاصة بكل فئة.
لو أعدت تنفيذ الدرس مرة أخرى، لكنت استخدمت عارضة رقمية تتضمن رسومات توضيحية بسيطة، مثل مخطط يربط بين Book و Pbook و Ebook، مع تمييز الخصائص المشتركة بلون، والخصائص الخاصة بكل فئة بلون آخر. كما كنت سأستخدم أداة رقمية تتيح للطلاب رؤية الكود بشكل منظم، وربما تنفيذ أجزاء منه تدريجيًا أمامهم، حتى يتمكنوا من متابعة العلاقة بين النظرية والتطبيق بشكل أوضح.
كما كنت سأضيف نشاطًا قصيرًا عبر أداة رقمية أو نموذج تفاعلي، يطلب من الطلاب تحديد الفئة الأم والفئات الفرعية في أمثلة مختلفة، قبل الانتقال إلى كتابة الكود. أعتقد أن هذا التغيير كان سيزيد من مشاركة الطلاب، ويساعد خاصة الطلاب الذين يحتاجون إلى تمثيل بصري لفهم المفاهيم المجردة في البرمجة.
استنتاج مهني من درس الوراثة
علّمني هذا الدرس أن المفاهيم البرمجية العميقة تحتاج إلى أكثر من شرح شفهي أو حل على اللوح. فهي تحتاج إلى تمثيل بصري، وأمثلة قريبة، وتدرج واضح من الفكرة إلى الكود. وقد أدركت أن استخدام الأدوات الرقمية في تدريس الحاسوب ليس إضافة شكلية، بل يمكن أن يكون عنصرًا أساسيًا في بناء الفهم، خاصة عندما يكون الموضوع مرتبطًا بعلاقات بين كائنات وفئات كما في الوراثة.
الدرس الثاني: تمارين على المصفوفات في لغة #C
قمت أيضًا بتمرير درس في الصف 10-5 حول حل تمارين في موضوع المصفوفات بلغة #C. اعتمد الدرس على عارضة تعليمية، وتضمن مراجعة سريعة لبعض المواضيع المرتبطة بالمصفوفات، مثل الحلقات، الأعداد العشوائية، واستخدام foreach، إضافة إلى شرح وتمثيل خوارزمية Bubble Sort.
خلال الدرس، لم يكن التركيز فقط على الوصول إلى الحل النهائي، بل على طريقة التفكير في حل السؤال البرمجي. حاولت أن أوجه الطلاب إلى قراءة السؤال بهدوء، تحديد المعطيات المطلوبة، فهم المطلوب إنتاجه، ثم اختيار الأداة البرمجية المناسبة، سواء كانت حلقة for أو foreach أو استخدام مصفوفة عدادات أو Switch.
في نهاية الدرس، تم عرض فيديو قصير يوضح مثالًا آخر على Bubble Sort، وكان الهدف من ذلك أن يرى الطلاب الخوارزمية بصورة بصرية، لأن تمثيل التبديل بين القيم يساعد كثيرًا في فهم آلية عمل الترتيب.
ما الذي نجح في درس المصفوفات؟
نجح الدمج بين العارضة، الشرح، حل التمارين، والفيديو في جعل الحصة أكثر تنوعًا. فقد ساعدت العارضة على تنظيم الأفكار، وساعدت الأمثلة العملية على توضيح كيفية التعامل مع المصفوفات، بينما أضاف الفيديو عنصرًا بصريًا مهمًا لفهم Bubble Sort.
لاحظت أن الطلاب استفادوا من شرح طريقة التفكير في السؤال قبل كتابة الكود، لأن بعضهم يميل إلى البدء بالحل مباشرة دون تحليل كافٍ. لذلك كان التوقف عند خطوات التفكير مفيدًا، وساعدهم على فهم أن البرمجة ليست كتابة أوامر فقط، بل هي عملية تحليل وبناء حل منطقي.
ما الذي كنت لأغيّره لاحقًا في درس المصفوفات؟
كنت سأستخدم أداة رقمية قصيرة في نهاية الحصة لفحص الفهم، مثل سؤال تفاعلي أو اختبار سريع، حتى أستطيع معرفة مدى استيعاب الطلاب للفروق بين for و foreach، ومدى فهمهم لفكرة Bubble Sort. أعتقد أن هذا النوع من التقويم السريع يساعد المعلم على معرفة ما إذا كان الطلاب جاهزين للانتقال إلى موضوع جديد، أو يحتاجون إلى مراجعة إضافية.
استنتاج مهني من الدروس التي مررتها
من خلال الدروس التي قمت بتمريرها، أدركت أن تدريس الحاسوب يحتاج إلى توازن بين الشرح النظري والتطبيق العملي. فالطالب يحتاج إلى فهم المفهوم، لكنه يحتاج أيضًا إلى رؤيته داخل كود يعمل، وإلى تجربة الحل بنفسه. كما تعلمت أن الأمثلة القريبة، الأدوات الرقمية، والعروض البصرية يمكن أن تجعل المفاهيم البرمجية أكثر وضوحًا، خاصة عندما تكون المفاهيم مجردة أو متعددة الخطوات.