أفكر في خطة للصيف وفيها إنشاء دورة قصيرة عبارة عن فيدوهات على يوتيوب عن أحد موضوعين:

الموضوع الأول في تحليل وتصميم الخوارزميات تتحدث عن أساسيات تحليل خوارزمية ما من ناحية كفاءة الآداء واستخدام الذاكرة. ثم تتطرق إلى بعض المواضيع في هيكلة البيانات (Datat structure) ثم بعض المواضيع في تصميم الخوارزميات مثل الاستقراء (induction)، خوارزمية فرق تسد [1] (divide and conquer)، البرمجة الديناميكية [2] (dynamic progrmming) ... إلخ.

الموضوع الثاني عن أنماط التصميم في البرمجة بالكائنات [3] (Object-oriented design patterns). تتحدث عن كيفية استخدام أنماط جاهزة في التصميم _ربما مع التعديل عليها_ لجعل الكود منظم أكثر، وأسهل من ناحية الصيانة، أسهل من ناحية إضافة وظائف أكثر فيما بعد، وأسهل من ناحية المقروئية.

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

الموضوع الثاني جيد لكنه يتطلب ممن سيتابعه معرفة مسبقة بالبرمجة الكائنية، ولا أظن أنها مستخدمة بكثرة بين المبرمجين.

[1] خوارزمية فرق تسد

http://ar.wikipedia.org/wiki/%D8%AE%D9%88%D8%A7%D8%B1%D8%B2%D9%85%D9%8A%D8%A9_%D9%81%D8%B1%D9%82_%D8%AA%D8%B3%D8%AF

[2] برمجة ديناميكية

http://ar.wikipedia.org/wiki/%D8%A8%D8%B1%D9%85%D8%AC%D8%A9_%D8%AF%D9%8A%D9%86%D8%A7%D9%85%D9%8A%D9%83%D9%8A%D8%A9

[3] نماذج التصميم (هندسة البرمجيات)

http://ar.wikipedia.org/wiki/%D9%86%D9%85%D8%A7%D8%B0%D8%AC_%D8%A7%D9%84%D8%AA%D8%B5%D9%85%D9%8A%D9%85_(%D9%87%D9%86%D8%AF%D8%B3%D8%A9_%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D9%8A%D8%A7%D8%AA)