Friday, March 12, 2021

التفكير الحاسوبي





في هذا المقال أتحدث عن أسس التفكير الحاسوبي وطريقة تطبيق هذه الأسس لحل المشكلات من خلال مثال بسيط مستوحى من قناة (Paxton/Patterson Labs) وهي مؤسسة متخصصة في تأهيل طلبة المرحلة الثانوية للدراسة الجامعية.


Computational Thinking: What Is It? How Is It Used?


ما هو التفكير الحاسوبي؟


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


أسس التفكير الحاسوبي


يتكون التفكير الحاسوبي من خمسة أسس رئيسية:

  1. التقسيم (Decomposition)
  2. التعرف على الأنماط (Pattern Recognition)
  3. التجريد (Abstraction)
  4. التعميم (Generalization)
  5. تصميم الخوارزمية (Algorithm Design)

أولا: التقسيم (Decomposition)


نقوم بتقسيم المشكلة إلى أجزاء أصغر بحيث يسهل حلها. 


مثال: إيجاد مجموع الأعداد من ١ إلى ١٠

الحل: يمكن تقسيم المشكلة إلى جمع عددين في كل مرة كما يلي







ثانيا: التعرف على الأنماط (Pattern Recognition)


نحاول أن نبحث عن نمط يتكرر في المشكلة يساعدنا في تبسيط الحل. تقسيم المشكلة في المثال السابق لم يساعد كثيرا في حل المشكلة، لكن يمكن إعادة صياغة الحل بحيث يظهر نمط متكرر كما يلي:





عند عكس ترتيب الأرقام وجمع كل عددين نحصل على نمط ثابت يتمثل في العدد ١١. عند جمع العدد ١١ مع نفسه ١٠ مرات نحصل على ١١٠، وعند قسمة هذا المجموع على ٢ نحصل على ٥٥ وهو المجموع الصحيح. لاحظ أننا قسمنا على ٢ لأننا كررنا جمع سلسلة الأعداد من ١ إلى ١٠ مرتين.


ثالثا: التجريد (Abstraction)


نقوم بالتركيز فقط على التفاصيل المهمة مع تجاهل المعلومات غير ذات الصلة. بالرجوع إلى المثال السابق نلاحظ أن النمط المتكرر ١١ هو في الحقيقة (١٠+١)، وأن هذا النمط يتم جمعه ١٠ مرات وهو الحد الأعلى للسلسلة، ثم يتم القسمة على ٢ بسبب جمع السلسلة مرتين، وبذلك يمكن تجريد العمليات السابقة إلى معادلة رياضية تعتمد فقط على العدد ١٠ وهو الحد الأعلى للسلسلة.




رابعا: التعميم (Generalization)


تعميم الحل الذي تم التوصل إليه في المراحل السابقة لحل مشكلة عامة أو مشاكل أخرى مشابهة. بالرجوع إلى المثال السابق يمكن تعميم الحل ليشمل إيجاد مجموع سلسلة الأعداد من ١ إلى (ن) من خلال استبدال ١٠ بالمتغير (ن)




خامسا: تصميم الخوارزمية (Algorithm Design)


نقوم بتصميم خوارزمية مكونة من خطوات واضحة لحل المشكلة. في المثال السابق تطبيق الخوارزمية يكون بشكل مباشر كما يلي:


Step (1): Add (n+1)

Step (2): Multiply n*(n+1)

Step (3): Divide n*(n+1)/2

Step (4): Return Result

في حالات كثيرة يتطلب تصميم الخوارزمية استخدام أساليب تصميم أكثر كفاءة مثل:

  • أسلوب الاستنباط (Induction)
  • أسلوب فرق تسد (Divide and Conquer)
  • أسلوب البرمجة الديناميكية (Dynamic Programming)
  • الأسلوب الجشع (Greedy)
  • أسلوب التراجع (Backtracking)
  • أسلوب التفرع والتقييد (Branch and Bound)
  • الأسلوب العشوائي (Randomization)
  • أسلوب المقاربة (Approximation)
  • أسلوب التحسين المتكرر (Iterative Improvement)


Parallel Processing in Python المعالجة المتوازية في بايثون

مقدمة المعالجة المتوازية هي طريقة لتشغيل الكود على عدة معالجات في نفس الوقت، وهو يهدف إلى تقليل وقت المعالجة الإجمالي.  يجب الأخذ بعين الاعت...