الثلاثاء، 8 أبريل 2008

علموا الأطفال البرمجة

هذا المقال مبني على ملاحظتين
اولا:ان مستقبل اﻷمة مبني على العلم
ثانيا:ان افضل وقت لتعلم البرمجة هو مرحلة الطفولة من حوالي سن العاشرة

اما الملاحظة اﻷولى فهي ليست مجرد كلام او شعار بل هي الحقيقة: الطريق الوحيد لتقدم اﻷمة هو العلم. انظر الى الهند و ماليزيا و كوريا. كلهم كانوا دول عالم ثالث و الآن يتحولون الي عمالقة اقتصاديين و فيهم شركات تشتري و تبيع في الشركات اﻷمريكية. و لم يحدث هذا إلا بعد دخولهم عالم الصناعة و التكنولوجيا

واما الملاحظة الثانية فلا تعجب منها, فمن خبرتي الشخصية فأن كثير من افضل المبرمجين الذين عرفتهم بدؤا صغارا. كثير من المبرمجين المتمكنين في مصر تعلموا علي كمبيوتر صخر المنزلي و في باقي العالم تعلموا علي اجهزة مثل Commodore 64 او BBC Micro او ][ Apple

و هناك ابحات تجري في كليات عريقة مثل MIT و غيرها عن الطرق و اللغات المثلي لتعليم اﻷطفال البرمجة. احصائية سريعة لبعض هذه الأبحاث هنا : http://homepages.inf.ed.ac.uk/wadler/compthink.html

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

ﻻ تركز علي لغات البرمجة ذات الوجود الكبير في السوق مثل الJava او ال #C فليس هدفك ان تساعد احد على ايجاد وظيفة, و لكن استخدم لغة سهلة مثل Free Basic او Logo ..لغة من اللغات التي تسهل انشاء الرسومات و اﻷلعاب و تجعل من البرمجة مرحا و متعة. و يا حبذا لو جعلت اﻷطفال يقومون بإنشاء العابهم الخاصة.

ربما يكون بعض هذا الكلام مثيرا للاستغراب, لذلك سأجعل باقي المقال في صورة اسألة و اجوبة:
هل تعتقد ان تعليم بعض اﻷطفال البرمجة سيغير المجتمع حقا؟

عالِم واحد قد يقدم للأمة اكثر مما يقدمة مائة شخص عادي. انت ﻻ تدري مَن مِن هؤلاء الأطفال يمكن ان يكون مثل جون مكارثي او بيل جيتس او ستيف جوبز. بالمناسبة فأن مؤسسي مايكروسوفت و أبل هؤﻻء كانوا معروفين بشغفهم بالكمبيوتر وهم طلبة مدارس

الكبار يتعلمون البرمجة بمشقة, لماذا تصر علي تعليم اﻷطفال؟ لن يقدروا علي هذا!

كما قلت فإن الكثير من الباحثين و اولياء الأمور بالدول الأخري يشجعون اﻷطفال علي كتابة البرامج.و هناك مبرمجين عالميين يتطوعون بتعليم بعض اﻷطفال في اﻷماكن التي يسكنوا فيها. ابحث علي Google عن Teaching Children Programming و انظر بنفسك.اذن لا جدل في قدرة اﻷطفال على التعلم لأن التجربة العملية اثبتت هذه القدرة.

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

لماذا البرمجة بالذات؟ هناك العشرات من العلوم اﻷخري المفيدة

هذا حق. و أنا اشجع من يريد ان يتعلم في اي من مجالات العلم الأخري, و لكن هنا فرق بين البرمجة و غيرها:


- تعلم البرمجة اسهل نوعا ما من غيرها, فأنت لا تحتاج سوي جهاز كمبيوتر و بعض الوقت

- البرمجة تعطي نتائج فورية, ﻷن الطفل سيتشجع حين يكتب برنامجا و يري نتيجته امامه بينما لن يقدر , مثلا, ان يخترع طائرة فورا اذا تعلم كيف تعمل الطائرات.


- البرمجة تعلم التفكير المنطقي المنظم, و هذا يفيد الطفل حتي اذا تخصص في اي مجال آخر حين يكبر

انا مقتنع بكلامك! هل ترشح لغة معينة اعلم اخوتي او اقربائي اياها؟ وهل هناك مادة علمية جاهزة استخدمها؟


حاليا اجرب استخدام ال LOGO في التعليم. و لا التزم بمنهج معين و لكني استخدم الكورسات الموجودة علي الأنترنت كمصدر للمعلومات و الأفكار.

هذه بعض الموارد التي يمكن استخدامها مع لغات مختلفة. ان فكرت في تحضير مادتك العلمية الخاصة او تعريب احد الموارد المذكورة فأرجو ان تعلمني بهذا في التعليقات او بالبريد الألكتروني فربما يمكننا التعاون على ذلك.هناك ايضا مشروع اسمه g4c لتسهيل برمجة الألعاب باستخدام ال ++C و لكنني لم اضعه بعد علي الأنترنت ﻷنه مازال قيد اﻷختبار. ابعث لي برسالة اليكترونية ان اردت نسخة اولية منه لتجربها. و إن شاء الله سأواصل وضع المزيد من الموارد على هذه المدونة.

LOGO
Download FMSLogo (one of many Logo implementations)
Some lessons
Course outlines

Python
Game programming course for children in python.

Freebasic
A language like Qbasic but for Windows. Home page

MIT Scratch
Completely visual programming environment for education. Home page

هناك 16 تعليقًا:

Haytham Alaa يقول...

Alsalam alikom wa ra7mat Allah wabarakatoh

First of all, I would like to thank you for creating a blog :) ... and deciding to share your precious thoughts with all of us...

Second, I really liked this idea, I had a quick look on the links and I think it worth the trial...

Keep pushing such ideas, Prof.Samy... we really need them.

Thanks,
Haytham Alaa

Mohamed Samy يقول...

Wa 3likom el salam wa ra7mat Allah wa barakatoh

Thanks for the encouraging words,Haytham and glad you liked the links!

MS--

TeCNoYoTTa يقول...

شكرا علي البلوج يا دكتور و إن شاء الله كلنا نستفيد منه

Unknown يقول...

شكرا يا دكتور على البوست وفعلا كلام حضرتك صح انا اعرف طلبه زيي كده بس متفوقين جدا في البرمجه لأنهم بداوا يتعلموا البرمجه من اعدادي .. انا برضو ايام اعدادي كده كنت اسمع عن البرمجه والفيجوال بيسك وكده :D وكنت بقول اني نفسي اتعلمهم بس للأسف عمري ما خدت الموضوع جد ورحت مثلا قلت لوالدي اني عايز اتعلم برمجه او كده .. كنت عيل بقى :D:D
شكرا تاني يا دكتور على البوست وعلى البلوج :]

root3 يقول...

بوست رائع .. أوحالي بفكرة كويسة

شكرا جدا يا دكتور

Roaa Mohammed يقول...

Al Salamo 3alikom,

When I saw this link, I remembered your post, so I just thought you might be interested to see..
http://msdn.microsoft.com/en-us/beginner/bb308754.aspx

Mohamed Samy يقول...

@Roaa Mohammed

Thanks for the links! I don't think VB.net or CSharp is the best way to teach children programming, but the book "CSharp for sharp kids seems to be quite good at explaining concepts like classes, objects and events. It also has a nice approach to explaining concepts like language syntax and semantics, concepts which could be used even when not using #C itself as a teaching language.

Mahmoud Attia يقول...

I like the idea and the title (this was usually the case whenever you wrote something Mohammed:D)

I will be very happy if my son is interested with programming

I tried to teach some of my relatives simple programms but they were not motivated

Mohamed Samy يقول...

@Mahmoud Ateya

Thanks for dropping by on the blog, Mahmoud. And I'm really glad you tried out the ideas.

About the group of people who were non-motivated: I've seen mixed results from the small sample of people who tried to educate kids. Some kid were amazing and instantly enjoyed it while others were (unsurprisingly) non motivated. I guess it's an ongoing study on how to motivate them!

Unknown يقول...

المقال ده بقاله سنة وانا كنت بسمع عنه لكن أول مرة أشوفه

جزاك الله خيرا يا دكتور وان شاء الله نعمل بيه

Aya Ahmed Gad يقول...

جزاك الله كل خير يا دكتور
وشكرا جزيلا على المقال والفكرة التي تحمله

Sarah Monem يقول...

السلام عليكم,
الموضوع ده رائع.
هناك من يود ان يستمع الي رأي حضرتك في هذا الموضوع:

الوقت المتاح لدينا لا يزيد عن 6 ساعات علي مدار 3 اسابيع بنات في سن اعدادي.

ان شاء الله نبدأ ب small basic دلوقتي
وان شاء الله نكمل في اجازة الصيف ++c
السؤال:هل الافضل في الوقت الحالي:

1)التركيز علي المبادئ الاساسية condition and loops and arrays والتدريب عليهم
وفي هذه الحالة سيكون الخوف من عدم تقبلهم للبرمجة لانهم لا يسطيعون تنفيذ سوي برامج بسيطة.

2)ام ان الافضل ضغط الكورس واتمام الgraphics حتي يتمكنوا من برمجة العاب طول فترة الدراسة وهذا ما سيحببهم في البرمجة
لكن في هذه الحالة ستكون المشكلة عدم التدريب الكافي وقد يصيبوا بالاحباط.

3)أم تأجيل هذا الكورس للصيف.

Mohamed Moshrif يقول...
أزال المؤلف هذا التعليق.
Mohamed Moshrif يقول...

The "Some Lessons" link under Logo is broken, but in general, I always believed in this idea

Mohamed Samy يقول...

@Mohamed Meshref
Link fixed now, thanks!

إنسان جديد يقول...

Greatttt

http://p4y.lvadonline.com/

Welcome to Programming for youth official website, We provide a training course where young kids -from the age of 10 to 14 years old- learn programming and developing applications which became the most important issue in the age of technology and it is the future's most promising field