للطلاب والخريجين الأدلة التقنية

تخصص علوم الحاسب Computer Science: منهج CS2023 ومواد الجامعة

لماذا وضعت كل مادة في خطة علوم الحاسب بحسب منهج CS2023، وأين تقصر خطط الجامعات السعودية، وكيف تكمل ما ينقصك بنفسك.

تخصص علوم الحاسب Computer Science: منهج CS2023 ومواد الجامعة

في بداية الفصل يوزع القسم الخطة الدراسية لعلوم الحاسب، فتجد فيها مادة اسمها «نظرية الحوسبة Theory of Computation» ومادة «الجبر الخطي Linear Algebra» ومادة «لغات البرمجة والترجمة»، وتسأل زميلك الذي سبقك بسنة: لماذا ندرس الأوتوماتا ونحن نريد أن نبرمج تطبيقات؟ فيقول لك إنها مواد «للنجاح فقط». ثم تفتح إعلان وظيفة لمطور Backend فتجد فيه Git وDocker وكتابة الاختبارات، ولا تجد أياً منها في الخطة. وبين المادة التي لا تعرف لماذا وضعت، والمهارة التي يطلبها الإعلان ولا تجدها في الخطة، يضيع على كثير من الطلاب وقت طويل، فيدرسون الأولى بلا اهتمام، ويؤجلون الثانية إلى ما بعد التخرج.

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

وسوف نناقش في هذا المقال ما يلي:

  • من كتب منهج علوم الحاسب، وكيف تطور من Curriculum 68 إلى CS2023.
  • كيف ينظم CS2023 المعرفة: سبعة عشر مجالاً، والجوهر CS Core وجوهر المجال KA Core، ومستويات المهارة.
  • لماذا ارتفع نصيب الرياضيات، وماذا يقول التقرير عن المهنة والأخلاقيات، وما الذي لا يغطيه.
  • معايير الاعتماد ABET لبرامج علوم الحاسب بالساعات.
  • تجربة عملية Lab: برنامج Python يضع مواد ست خطط سعودية في مجالات CS2023، ومشكلات حقيقية ظهرت في التصنيف.
  • ما الذي يطلبه سوق العمل ولا تعطيه الخطة، من مصادر يمكن التحقق منها.
  • خريطة التعلم الذاتي: كل مجال معرفة ومقالات عرب رووت المنشورة فيه وما ينقصها.
  • خطة قراءة فصلاً بفصل، وأخطاء شائعة، وقائمة تحقق Checklist.

من كتب منهج علوم الحاسب، ولماذا يتجدد؟

أول منهج لعلوم الحاسب نشرته جمعية ACM قبل أكثر من خمسين سنة باسم Curriculum 68، وكان تصنيفاً للمواضيع والمواد، ثم جاء Curriculum 78 فقسم المنهج إلى مواد إجبارية واختيارية، ثم تعاونت ACM لأول مرة مع جمعية الحاسب في IEEE واختصاراً IEEE-CS في Computing Curricula 1991. وفي Computing Curricula 2001 حدث التحول الذي ما زلنا نعيشه حتى اليوم، فقد ركز المنهج على علوم الحاسب وحدها، وخرجت هندسة الحاسب وهندسة البرمجيات بمناهج مستقلة، ولهذا السبب تجد في الجامعات اليوم ثلاثة أقسام متجاورة بدلاً من قسم واحد. وبعدها صدرت مراجعة مؤقتة CS2008، ثم CS2013 الذي بقي المرجع عشر سنوات.

أما المنهج الحالي فهو Computer Science Curricula 2023، واختصاراً CS2023، وتحمل نسخته النهائية تاريخ يناير 2024 مع تحديث بتاريخ 28 أبريل 2024، وكتبته فرقة عمل مشتركة Joint Task Force من ACM وIEEE-CS، ومعهما لأول مرة جمعية تطوير الذكاء الاصطناعي AAAI. ويقول الملخص التنفيذي إن العمل استمر ثلاث سنوات بأكثر من تسعين عضواً من ست قارات، وإن الفريق جمع بيانات من خمسة استبيانات كبيرة وأكثر من سبعين استبياناً صغيراً. ومن هذه الاستبيانات ما يهمك كطالب: ففي 2021 أجاب 212 أستاذاً من الولايات المتحدة و215 من خارجها و865 من العاملين في الصناعة عن أهمية مكونات المنهج، وفي 2022 أجاب 597 أستاذاً عن متطلبات الرياضيات. أي أن ما ستقرؤه بعد قليل ليس رأي لجنة جالسة في غرفة، وإنما حصيلة نقاش بين من يدرسونك ومن سيوظفونك.

وقد يتساءل البعض: إذا كانت الجامعة تكتب خطتها بنفسها، فلماذا أقرأ المنهج الدولي؟ والإجابة أن المنهج هو المرجع الذي يعود إليه القسم عندما يراجع خطته، ويعود إليه المقيمون في هيئات الاعتماد، وفيه السبب الذي وضعت من أجله كل مادة، وهذا السبب لا تجده في الخطة نفسها، فالخطة تقول لك ماذا ستدرس، والمنهج يقول لك لماذا.

كيف ينظم CS2023 المعرفة؟

يبني التقرير المنهج من ثلاث طبقات: نموذج المعرفة Knowledge Model مجموعة من مجالات المعرفة Knowledge Areas، وكل مجال مجموعة من وحدات المعرفة Knowledge Units، وكل وحدة فيها مواضيع Topics ونواتج تعلم Learning Outcomes. والمهم هنا أن المجال ليس مادة دراسية، فالتقرير يقول بوضوح إن الخطة تبنى من مواد وليس من مجالات، وإن مادة واحدة قد تجمع مواضيع من عدة مجالات، وإن مجالاً واحداً قد يتوزع على عدة مواد، وسوف نرى أثر هذه الجملة بالأرقام في التجربة.

مجالات المعرفة Knowledge Areas السبعة عشر

يضم CS2023 سبعة عشر مجالاً، والجدول التالي يعرضها بأسمائها واختصاراتها كما في التقرير، مع ما يقابلها عادة في الخطة الدراسية:

المجال في CS2023الاختصارما يقابله عادة في الخطة
الذكاء الاصطناعي Artificial IntelligenceAIالذكاء الاصطناعي، تعلم الآلة
أسس الخوارزميات Algorithmic FoundationsALهياكل البيانات، تحليل الخوارزميات، نظرية الحوسبة
المعمارية والتنظيم Architecture and OrganizationARالتصميم المنطقي، تنظيم الحاسب
إدارة البيانات Data ManagementDMقواعد البيانات
أسس لغات البرمجة Foundations of Programming LanguagesFPLمفاهيم لغات البرمجة، المترجمات
الرسوميات والتقنيات التفاعلية Graphics and Interactive TechniquesGITرسوميات الحاسب، معالجة الصور، العرض المرئي
التفاعل بين الإنسان والحاسب Human-Computer InteractionHCIالتفاعل بين الإنسان والحاسب
الأسس الرياضية والإحصائية Mathematical and Statistical FoundationsMSFالتراكيب المحددة، الاحتمالات والإحصاء، الجبر الخطي، التفاضل
الشبكات والاتصال Networking and CommunicationNCشبكات الحاسب
أنظمة التشغيل Operating SystemsOSأنظمة التشغيل
الحوسبة المتوازية والموزعة Parallel and Distributed ComputingPDCالمعالجة المتوازية، الأنظمة الموزعة
أساسيات تطوير البرمجيات Software Development FundamentalsSDFالبرمجة 1 و2، البرمجة الكائنية
هندسة البرمجيات Software EngineeringSEهندسة البرمجيات، تحليل النظم
الأمن SecuritySECأمن المعلومات، الأمن السيبراني
المجتمع والأخلاقيات والمهنة Society, Ethics, and the ProfessionSEPأخلاقيات الحوسبة، الندوة المهنية
أساسيات الأنظمة Systems FundamentalsSFأنظمة الحاسب، برمجة الأنظمة
تطوير المنصات المتخصصة Specialized Platform DevelopmentSPDتطوير الويب والجوال والألعاب والأنظمة المدمجة

ولاحظ أن تسعة من هذه الأسماء تغيرت منذ CS2013، فالتراكيب المحددة Discrete Structures أصبحت الأسس الرياضية والإحصائية، والأنظمة الذكية Intelligent Systems أصبحت الذكاء الاصطناعي، وإدارة المعلومات أصبحت إدارة البيانات، وأمن المعلومات Information Assurance and Security أصبح الأمن. وحذف التقرير مجال العلوم الحسابية Computational Science لأنه لم يكن فيه محتوى خاص بعلوم الحاسب لا يوجد في مجالات أخرى، وكان نصيبه في CS2013 ساعة واحدة فقط. وناقش الفريق إضافة علم البيانات Data Science مجالاً مستقلاً ثم رفض ذلك، والسبب كما يقول التقرير أن كل ما يخص علوم الحاسب في علم البيانات موجود أصلاً في الذكاء الاصطناعي والرسوميات وإدارة البيانات والأسس الرياضية.

الجوهر CS Core وجوهر المجال KA Core وما بعدهما

كل موضوع في التقرير له تصنيف من ثلاثة: جوهر علوم الحاسب CS Core، وهو ما يجب أن يعرفه كل خريج علوم حاسب دون استثناء، وجوهر المجال KA Core، وهو ما يوصى به لمن يتعمق في مجال معين، ثم المواضيع غير الأساسية Non-core التي تثري المنهج. وفي CS2013 كان الجوهر طبقتين: Tier 1 يجب أن يغطى كاملاً، وTier 2 يغطى منه 80% على الأقل، أما CS2023 فاستبدل ذلك بما يسميه نموذج زهرة دوار الشمس Sunflower Model: كل البرامج تغطي القلب نفسه، ثم يمد كل برنامج بتلات أطول في المجالات التي يختارها بحسب حاجة المنطقة والأساتذة المتوفرين وتاريخ البرنامج. وهذا يفسر لك لماذا تختلف خطة جامعة عن أخرى في نفس التخصص دون أن تكون إحداهما خاطئة.

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

لوحة تعرض نموذج المعرفة في CS2023: ثلاثة أعمدة لمجالات الكفاءة، البرمجيات وفيها SDF وAL وFPL وSE، والأنظمة وفيها SF وAR وOS وPDC وNC وSEC وDM، والتطبيقات وفيها GIT وAI وSPD وHCI وSEC وDM، وتحتها شريطان يمران على الثلاثة هما الأسس الرياضية MSF والمجتمع والأخلاقيات SEP، وفي الجانب دوائر متداخلة لتصنيف المواضيع: CS Core بـ 270 ساعة في القلب ثم KA Core ثم Non-core
سبعة عشر مجالاً في ثلاث كفاءات، والرياضيات والأخلاقيات تمر على الجميع

مستويات المهارة والنزعات المهنية Professional Dispositions

لا يكفي أن يقول المنهج «الخوارزميات»، فهل المطلوب أن تشرحها أم أن تكتبها أم أن تختار بينها؟ لذلك يحدد CS2023 أربعة مستويات للمهارة مأخوذة من تصنيف بلوم المعدل: الشرح Explain، والتطبيق Apply، والتقييم Evaluate، والتطوير Develop. وكانت في CS2013 ثلاثة مستويات، فقسم التقرير مستوى الاستخدام Usage إلى اثنين، وأضاف التطبيق مستوى مستقلاً، ويذكر أن من أسباب ذلك أن التطبيق أصبح أهم مع وجود الذكاء الاصطناعي التوليدي في مهام التطوير. ومستوى المهارة هو ما يحدد عدد الساعات، لأن تعليمك كيف تطبق مفهوماً يأخذ وقتاً أطول من تعليمك كيف تشرحه.

ثم يضيف التقرير شيئاً جديداً على مستوى كل مجال اسمه النزعات المهنية Professional Dispositions، ويعرفها بأنها قيم ومواقف قابلة للتشكيل تقود إلى سلوك ثابت مرغوب في مكان العمل، ومن الأمثلة التي يذكرها في صفات الخريجين: أن تكون متكيفاً Adaptable لأن التخصص يتغير، ومتعاوناً Collaborative لأن أغلب الأنظمة الحقيقية عمل فريق، ودقيقاً Meticulous لأن صحة الحل واكتماله مسؤوليتك، ومثابراً Persistent لأن حل المسائل عملية متكررة، ومبادراً Proactive في التفكير مسبقاً في سهولة الاستخدام والأمن والأخلاقيات. ولاحظ أن هذه الصفات لا تجد لها مادة في الخطة، وسوف نعود إليها عندما نتحدث عن سوق العمل.

270 ساعة: ماذا يعني رقم الجوهر CS Core؟

يقدر التقرير أن مواضيع CS Core بمستويات المهارة المطلوبة تحتاج 270 ساعة تدريس Instructional Hours، أي ساعات داخل القاعة بغض النظر عن طريقة التدريس، ويتوقع أن يقضي الطالب بعدها وقتاً إضافياً في التمرين. ويفترض التقرير أن المادة الواحدة نحو 40 ساعة، أي أن الجوهر الإلزامي وحده يعادل نحو سبع مواد. وهذا الرقم أقل من CS2013 الذي كان 308 ساعات (165 في Tier 1 و143 في Tier 2)، ويذكر التقرير أن الجوهر كان يزيد من نسخة إلى أخرى: 280 ساعة في CC2001 ثم 290 في CS2008 ثم 308 في CS2013، وأن هذه الزيادة كانت تضغط على البرامج الصغيرة، لذلك حصر CS2023 الجوهر في الحد الأدنى ونقل الباقي إلى جوهر المجال. والجدول التالي يعرض ساعات كل مجال كما في الجدول الثاني من فصل نموذج المعرفة:

المجالCS2013 Tier 1CS2013 Tier 2CS2023 CS CoreCS2023 KA Core
MSF الأسس الرياضية والإحصائية37455145
SDF أساسيات تطوير البرمجيات43043لا يوجد
AL أسس الخوارزميات1993232
FPL أسس لغات البرمجة8202119
SEP المجتمع والأخلاقيات والمهنة1151814
SF أساسيات الأنظمة189188
AI الذكاء الاصطناعي0101218
DM إدارة البيانات191026
AR المعمارية والتنظيم016916
PDC الحوسبة المتوازية والموزعة510926
HCI التفاعل بين الإنسان والحاسب44816
OS أنظمة التشغيل411813
NC الشبكات والاتصال37724
SE هندسة البرمجيات622621
SEC الأمن36635
GIT الرسوميات والتقنيات التفاعلية21470
SPD تطوير المنصات المتخصصة004لا يوجد

في الجدول أعلاه لاحظ التالي:

  • الرياضيات وحدها 55 ساعة من 270، أي نحو خمس الجوهر، وهي أكبر مجال فيه، ثم أساسيات البرمجة بـ 43 ساعة، ثم الخوارزميات بـ 32. لذلك إذا كنت تظن أن علوم الحاسب «برمجة» فاعلم أن البرمجة الأساسية أقل من سدس الجوهر.
  • هندسة البرمجيات انخفضت في الجوهر من 28 ساعة في CS2013 (6 و22) إلى 6 ساعات، وانتقل أغلبها إلى جوهر المجال، والسبب في وصف المجال نفسه أن التقرير يريد أن يركز في الجوهر على ما لن يتعلمه الطالب في مكان آخر من الخطة.
  • الرسوميات لها 4 ساعات في الجوهر و70 في جوهر المجال، وهذا مثال واضح على نموذج دوار الشمس: قلب صغير، وبتلة طويلة لمن يختار هذا الاتجاه.
  • جوهر المجال لا يجمع بالطريقة نفسها في كل مجال، فالتقرير يقول إن جوهر المنصات المتخصصة مقسم بين الويب والجوال والأنظمة المدمجة وغيرها بتداخل قليل، وإن ساعاتها لا تجمع معاً.
رسم أشرطة أفقية لسبعة عشر مجالاً، لكل مجال شريط غامق لساعات CS Core وشريط فاتح لساعات KA Core، وأطولها الأسس الرياضية بـ 55 ساعة في الجوهر و145 في جوهر المجال، ثم الرسوميات بـ 4 و70، ثم الخوارزميات بـ 32 و32، وأساسيات البرمجة بـ 43 دون جوهر مجال، وفي الأسفل مجموع الجوهر 270 ساعة مقابل 308 في CS2013
الجوهر الإلزامي 270 ساعة، وأكبر نصيب فيه للرياضيات ثم البرمجة ثم الخوارزميات

لماذا كل هذه الرياضيات؟

هذا أكثر سؤال يطرحه طالب علوم الحاسب في سنته الأولى، والتقرير يجيب عنه بصراحة. فقد كان مجال الرياضيات في CS2013 اسمه التراكيب المحددة، أي الرياضيات المتقطعة Discrete Mathematics وحدها تقريباً، ثم وسعه CS2023 ليشمل الاحتمالات والإحصاء والجبر الخطي، والسبب أن المجالات التي نمت بسرعة مثل الذكاء الاصطناعي وتعلم الآلة وعلم البيانات والحوسبة الكمية قائمة على الرياضيات المتصلة Continuous Mathematics. وفي استبيان الأساتذة الذي أجاب عنه نحو 600 أستاذ، كانت نسبة من رأوا الاحتمالات مهمة للعمل في الصناعة أو للدراسات العليا 98%، والإحصاء 98%، والجبر الخطي 89%.

ويقسم التقرير ساعات الرياضيات كما يلي، وكل صف مجموعه 40 ساعة، أي مادة كاملة:

وحدة المعرفةCS CoreKA Coreماذا تتعلم فيها
الرياضيات المتقطعة Discrete Mathematics2911المجموعات والعلاقات، البراهين بالاستقراء والتناقض، العد، الحساب المعياري، المنطق، الرسوم البيانية
الاحتمالات Probability1129الاحتمال الشرطي وقاعدة Bayes، المتغيرات العشوائية، التوقع والتباين
الإحصاء Statistics1030العينات، فترات الثقة، الانحدار، اختبار الفرضيات
الجبر الخطي Linear Algebra535المتجهات والمصفوفات، القيم الذاتية، تطبيقات مثل PCA وSVD وPageRank والرسوميات
التفاضل والتكامل Calculus040المشتقات والتكامل، والتفاضل متعدد المتغيرات، والتحسين Optimization و Gradient Descent
المجموع55145

ولاحظ نقطتين مهمتين في هذا الجدول. الأولى أن التفاضل كله في جوهر المجال وليس في الجوهر الإلزامي، ويقول التقرير إن أغلب البرامج تشترط التفاضل 1 أصلاً، وإنه ترك التفاضل 2 لقرار كل برنامج. والثانية أن التقرير يعترف بالتوتر حول الرياضيات، فيذكر أن كثيراً من الطلاب الذين يستهدفون عمل البرمجيات غير متحمسين للاستثمار فيها، وأن بعض المؤسسات تحدد عدد المواد المسموح بها، ومع ذلك ينصح البرامج بأن تأخذ أكبر قدر ممكن من النسخة الموسعة (CS Core مع KA Core) إلا إذا كان لديها سبب مؤسسي قوي. والأهم لك كطالب أن التقرير يربط كل مجال بمتطلباته الرياضية، فقسم الذكاء الاصطناعي مثلاً يحتاج كثيراً من مواضيع الإحصاء في جوهر المجال، أي أن الإحصاء الذي تدرسه في السنة الثانية هو نفسه ما ستحتاجه عندما تدرس تعلم الآلة في السنة الرابعة، وليست «مادة للنجاح فقط» كما قال زميلك.

المهنة والمجتمع: لماذا ظهرت الأخلاقيات في كل مجال؟

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

ويحدد فصل صفات الخريجين Characteristics of Graduates ما يطلبه من الخريج في ثلاثة أبعاد: المعرفة والمهارة التقنية، والمسؤولية المهنية تجاه المجتمع، والنزعات المهنية. وفي البعد الأول يقول إن الخريج يجب أن يعرف على الأقل أساسيات تطوير البرمجيات والأنظمة والتطبيقات، والأدوات والمكتبات وأطر العمل الحالية لتطوير الحلول، والأسس الرياضية والنظرية للحوسبة. وفي البعد الثاني يطلب أن يعرف الخريج ميثاق أخلاقيات مهنياً مثل ميثاق ACM أو IEEE أو AAAI ويلتزم به، وأن يعمل على تعظيم فائدة الحوسبة للمجتمع مع منع الضرر عن الأفراد. وإذا أردت أن ترى مثالاً عملياً على هذا البعد في بيئتنا فاقرأ حماية البيانات الشخصية PDPL للخدمات التي تستضيفها، لأن ما يسميه التقرير «منع الضرر» يتحول في المملكة إلى نظام له مواد ومخالفات.

ما الذي لا يغطيه CS2023؟

من أهم ما تقرؤه في أي منهج حدوده، لأن الطالب يفترض أحياناً أن المنهج يعده لكل شيء. وفي CS2023 خمس حدود واضحة:

  • يحصر التقرير نفسه في علوم الحاسب، ويحيل القارئ في علاقتها بالتخصصات الأخرى مثل هندسة البرمجيات والأمن وعلم البيانات إلى تقرير CC2020، أي أنه لا يصف ما يدرسه طالب هندسة البرمجيات أو الأمن السيبراني.
  • لا يجعل علم البيانات مجالاً مستقلاً كما رأينا، ولا العلوم الحسابية، ويقول إن دراسة النمذجة لذاتها مكانها البرامج التي تجمع الحاسب مع تخصص آخر CS + X.
  • توصيات تقسيم المواد Course Packaging ونماذج الخطط ومستويات المهارة كلها اقتراحات وليست إلزاماً، وكذلك نواتج التعلم التي سماها «نواتج تعلم توضيحية» Illustrative Learning Outcomes لهذا السبب.
  • لا يحدد مدة الدراسة ولا عدد الساعات المعتمدة للبرنامج، وإنما يقدم نماذج بثماني مواد وعشر واثنتي عشرة وست عشرة مادة حاسب، لأن عدد المواد يختلف بين المؤسسات.
  • في فصل الذكاء الاصطناعي التوليدي Generative AI يقول التقرير إنه من المبكر أن نتوقع بثقة كيف سيغير تعليم علوم الحاسب، ويكتفي بملاحظات، منها أن المهارات المتوقعة من الطالب تتغير ولكن المعرفة الأساسية لا تتغير.

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

ماذا تطلب ABET من برنامج علوم الحاسب؟

شرحنا في مقال أي تخصص تقني تختار؟ الفرق بين لجنة اعتماد الحوسبة CAC ولجنة اعتماد الهندسة EAC في ABET، وأن علوم الحاسب برنامج حوسبة وليس برنامجاً هندسياً، وأن 31 برنامج علوم حاسب سعودياً كانت معتمدة من CAC عندما قرأنا قاعدة ABET العامة. أما هنا فنقرأ ما تطلبه معايير اعتماد برامج الحوسبة لدورة 2026-2027 من برنامج علوم الحاسب تحديداً، لأن هذه المعايير هي التي تفسر جزءاً كبيراً من شكل خطتك:

  • المعايير العامة لكل برامج الحوسبة: 30 ساعة معتمدة على الأقل من مواضيع الحوسبة، تشمل التقنيات والمهارات والأدوات اللازمة لممارسة المهنة، ومبادئ الأمن والخصوصية، وأثر الحوسبة على الأفراد والمؤسسات والمجتمع، ومشروعاً شاملاً.
  • معايير علوم الحاسب فوقها: 40 ساعة معتمدة على الأقل من علوم الحاسب، فيها تغطية واسعة Substantial للخوارزميات والتعقيد ونظرية علوم الحاسب ومفاهيم لغات البرمجة وتطوير البرمجيات، ولغة برمجة عامة واحدة على الأقل، واطلاع Exposure على المعمارية وإدارة المعلومات والشبكات وأنظمة التشغيل والحوسبة المتوازية والموزعة، ومشروع كبير.
  • الرياضيات والإحصاء: 15 ساعة معتمدة على الأقل تشمل الرياضيات المتقطعة والاحتمالات والإحصاء، بصرامة رياضية لا تقل عن مقدمة التفاضل.
  • العلوم: مواد تطبق المنهج العلمي في مجال غير الحوسبة، وهذا سبب وجود الفيزياء أو الكيمياء في خطتك.
  • الأساتذة: بعض الأساتذة المتفرغين يجب أن يحملوا الدكتوراه في علوم الحاسب.
  • ناتج تعلم خاص بعلوم الحاسب يضاف إلى النواتج الخمسة العامة: أن يطبق الخريج نظرية علوم الحاسب وأساسيات تطوير البرمجيات لإنتاج حلول حاسوبية.

ولاحظ الفرق بين كلمتي «تغطية واسعة» و«اطلاع» في المعايير، فالخوارزميات والنظرية ولغات البرمجة يجب أن تدرس بعمق، أما الشبكات وأنظمة التشغيل والحوسبة الموزعة فيكفي الاطلاع عليها، وهذا يفسر لماذا تجد في كثير من الخطط مادة واحدة للشبكات وثلاث مواد للخوارزميات والنظرية. وفي نفس الصفحة نشرت ABET معايير مقترحة لبرامج الذكاء الاصطناعي، اعتمدتها هيئة الحوسبة فيها للتعليق العام في 24 أكتوبر 2025 حتى 15 يونيو 2026، على أن تطبق إذا اعتمدت في دورة المراجعات 2027-2028، وهذا يهمك إذا كنت في مسار ذكاء اصطناعي داخل علوم الحاسب.

تجربة عملية Lab: نضع خطط ست جامعات بجانب CS2023

قراءة المنهج تعطيك الصورة كما يجب أن تكون، ولكن السؤال العملي هو: ماذا في خطتك أنت؟ لذلك كتبنا برنامجاً بلغة Python يقرأ ملف الخطط الدراسية الذي جمعناه في مقال المقارنة من المصادر الرسمية للجامعات، ويأخذ منه خطط علوم الحاسب الست: جامعة الملك سعود KSU، وجامعة الملك فهد للبترول والمعادن KFUPM، وجامعة الإمام محمد بن سعود الإسلامية IMSIU، وجامعة الملك عبدالعزيز KAU، وجامعة الأمير سلطان PSU، والجامعة السعودية الإلكترونية SEU. ثم يضع كل مادة إجبارية في أحد مجالات CS2023 السبعة عشر بخريطة كلمات مكتوبة داخل البرنامج، ويجمع الساعات، ويقارنها بساعات الجوهر، ويفحص معايير ABET، ثم يقرأ مسارات عرب رووت ليعد المقالات في كل مجال. والبرنامج يستخدم مكتبة Python الأساسية فقط، فلا يحتاج إلى أي تثبيت.

البرنامج cs2023_plans.py

الملف كاملاً كما شغلناه، وتجده في مجلد lab بجانب المقال:

# Saudi computer science study plans against the CS2023 knowledge areas, and what ArabRoot covers of each area.
# Standard library only (Python 3.13). Usage, from this folder:
#   python cs2023_plans.py ../../tech-majors/lab/plans.json ../../../roadmap.json ../../schedule.json
# plans.json : official study plans collected for the article "tech-majors" (one object per programme)
# roadmap.json + schedule.json : the ArabRoot tracks and the publishing schedule
import collections, json, re, sys

plans_file, roadmap_file, schedule_file = sys.argv[1:4]
FAMILY = "CS"

# ---------------------------------------------------------------- CS2023 numbers (Introduction to Knowledge Model, Table 2)
# instructional hours; KA Core of SDF and SPD is empty in the table
CS2023 = {  # area: (CS Core, KA Core)
    "AI": (12, 18), "AL": (32, 32), "AR": (9, 16), "DM": (10, 26), "FPL": (21, 19), "GIT": (4, 70),
    "HCI": (8, 16), "MSF": (55, 145), "NC": (7, 24), "OS": (8, 13), "PDC": (9, 26), "SDF": (43, 0),
    "SE": (6, 21), "SEC": (6, 35), "SEP": (18, 14), "SF": (18, 8), "SPD": (4, 0),
}
KAS = list(CS2023)
HOURS_PER_CREDIT = 40 / 3   # CS2023 packages a course as ~40 instructional hours; a Saudi course is usually 3 credits

# ---------------------------------------------------------------- keyword map: course title -> knowledge area
# English and Arabic words, because some plans print Arabic titles only. The FIRST match wins, so order matters:
# security before networks ("Network Security" is SEC), maths before algorithms ("Computational Linear Algebra" is MSF),
# software engineering before architecture ("Software Architecture" is SE).
RULES = [
    ("PROJECT", r"graduation|senior project|capstone|co-?op|cooperative|internship|field experience|practical training|summer training|مشروع التخرج|التدريب التعاوني"),
    ("SEP", r"ethic|professional development|social aspects|الأخلاقيات|التطوير المهني"),
    ("SEC", r"secur|cyber|cryptograph|forensic|privacy|أمن|التحليل الجنائي"),
    ("AI", r"artificial intelligen|machine learning|deep learning|neural|natural language|computer vision|robot|الذكاء الاصطناعي|تعلم الآلة|العصبية|الروبوتات|اللغات الطبيعية"),
    ("MSF", r"calculus|linear algebra|discrete|probability|statistic|prob\. and stat|mathemat|numerical|differential|التفاضل|الجبر|الاحتمالات|الإحصاء|تراكيب محددة|تراكيب متقطعة|رياضيات"),
    ("HCI", r"human.{0,3}computer|interaction design|usability|user experience|التفاعل بين الإنسان"),
    ("GIT", r"graphics|visuali[sz]ation|image processing|animation|رسومات|معالجة الصور"),
    ("DM", r"database|data management|big.data|nosql|data science|data mining|information retrieval|قواعد البيانات"),
    ("NC", r"network|data communication|شبكات"),
    ("PDC", r"parallel|distributed|concurren|cluster|cloud|المتوازية|الموزعة"),
    ("OS", r"operating system|أنظمة التشغيل|نظم تشغيل"),
    ("SE", r"software engineering|software architecture|software design|software testing|software project|project management|systems? analysis|requirement|web engineering|هندسة البرمجيات|إدارة المشاريع"),
    ("AR", r"digital logic|logic design|computer organi[sz]ation|computer architecture|architecture & organi|المنطق الرقمي|عمارة الحاسب|معمارية الحاسوب"),
    ("SF", r"computer systems|systems programming|انظمة الحاسوب"),
    ("FPL", r"programming language|compil|paradigm|المترجمات|لغات البرمجة"),
    ("AL", r"algorithm|data structure|theory of comput|computation|automata|الخوارزم|تراكيب البيانات|تراكيب بيانات|نظرية الحوسبة"),
    ("SPD", r"web|mobile|game|internet of things|\biot\b|embedded|الويب|الجوال|الألعاب|انترنت الأشياء|المدمجة"),
    ("SDF", r"programming|object.oriented|introduction to computing|برمجة|البرمجة|الحوسبة"),
    ("SCIENCE", r"physics|chemi|physical science|الفيزياء"),
    ("BUSINESS", r"business|entrepreneur|accounting|econom|innovation|ريادة"),
]
GENERAL = (r"islam|quran|arabic|english|writing|communication|university skills|computer skills|current issues|culture|"
           r"history|fitness|health|physical education|psychology|belief|academic|discourse|language|career|financial transactions|القرآن|اللغوية|الإنجليزية")

def area(c):
    t = f"{c.get('title_en') or ''} {c.get('title_ar') or ''}".lower()
    if re.search(GENERAL, t) and not re.search(r"programm|software|network|data|secur|برمج|حاسب|الحوسبة", t):
        return "GENERAL"
    for name, rx in RULES:
        if re.search(rx, t):
            return name
    return "OTHER"

def is_slot(c):   # "Elective", "Free Course 2", "KSU Requirement Course (elective)": an empty slot, not a course yet
    return bool(re.search(r"elective|free course", c.get("title_en") or "", re.I))

UNI = {"King Fahd": "KFUPM", "King Saud": "KSU", "Imam Mohammad": "IMSIU", "King Abdulaziz": "KAU",
       "Prince Sultan": "PSU", "Saudi Electronic": "SEU", "Imam Abdulrahman": "IAU"}
uni = lambda p: next(v for k, v in UNI.items() if p["university"].startswith(k))
title = lambda c: c.get("title_en") or c.get("title_ar")

plans = [p for p in json.load(open(plans_file, encoding="utf-8")) if p["major_family"] == FAMILY]
plans.sort(key=lambda p: uni(p))
print(f"== 1) required credit hours per CS2023 knowledge area, {len(plans)} {FAMILY} plans ==")
print("   (required = not an elective option or empty slot; GENERAL = university requirements, left out)")
cols = KAS + ["SCIENCE", "BUSINESS", "PROJECT", "OTHER"]
print(f"{'area':<9}" + "".join(f"{uni(p):>7}" for p in plans))
table, odd, other = {}, [], collections.Counter()
for p in plans:
    h = collections.Counter()
    for c in p["courses"]:
        if not c["required"] or is_slot(c):
            continue
        a, cr = area(c), float(c["credits"] or 0)
        if a == "GENERAL":
            continue
        if cr > (12 if a == "PROJECT" else 6):        # a typing error in the source page: shown, flagged, kept out of the averages
            odd.append(f"{uni(p)}: {c['code']} {title(c)} = {c['credits']} credits")
        if a == "OTHER":
            other[f"{uni(p)}: {title(c)}"] += cr
        h[a] += cr
    table[uni(p)] = h
for a in cols:
    print(f"{a:<9}" + "".join(f"{table[uni(p)][a]:>7.0f}" for p in plans))
print(f"{'total':<9}" + "".join(f"{sum(table[uni(p)].values()):>7.0f}" for p in plans))
print("suspect credits in the source:", *odd or ["none"], sep="\n   ")
print("left as OTHER:", "; ".join(f"{k} ({v:.0f})" for k, v in other.items()) or "none")

# ---------------------------------------------------------------- 2) against CS2023 core hours
clean = [u for u in table if not any(o.startswith(u + ":") for o in odd)]
print(f"\n== 2) approximate instructional hours (credits x {HOURS_PER_CREDIT:.1f}) against CS2023 core hours ==")
print(f"   averages over {len(clean)} plans without suspect credits: {', '.join(clean)}")
print(f"{'area':<6}{'CScore':>7}{'KAcore':>7}{'avg_h':>7}{'plans_with_0':>14}  zero in")
zero_count = collections.Counter()
for a in KAS:
    hrs = [table[u][a] * HOURS_PER_CREDIT for u in clean]
    zeros = [u for u in table if table[u][a] == 0]
    zero_count[a] = len(zeros)
    print(f"{a:<6}{CS2023[a][0]:>7}{CS2023[a][1]:>7}{sum(hrs) / len(hrs):>7.0f}{len(zeros):>14}  {' '.join(zeros)}")
cs_core = sum(v[0] for v in CS2023.values())
for u in clean:
    tech = sum(table[u][a] for a in KAS)
    print(f"{u:<6} technical KA credits {tech:.0f} = about {tech * HOURS_PER_CREDIT:.0f} h, {tech * HOURS_PER_CREDIT / cs_core:.1f} x the {cs_core} h CS Core")

# ---------------------------------------------------------------- 3) ABET CS program criteria (2026-2027)
print("\n== 3) ABET CS program criteria: >=40 credits of computing, >=15 of maths and statistics incl. discrete, probability, statistics ==")
for p in plans:
    u, h = uni(p), table[uni(p)]
    computing = sum(h[a] for a in KAS if a != "MSF") + h["PROJECT"]
    req = [c for c in p["courses"] if c["required"] and not is_slot(c)]
    t = " ".join(f"{c.get('title_en') or ''} {c.get('title_ar') or ''}".lower() for c in req if area(c) == "MSF")
    has = {k: bool(re.search(rx, t)) for k, rx in
           [("discrete", r"discrete|تراكيب محددة|تراكيب متقطعة|mathematics for computing"), ("probability", r"probab|prob\.|الاحتمالات"), ("statistics", r"statist|stat\.|الإحصاء|احصاء")]}
    print(f"{u:<6} computing {computing:>4.0f}  maths {h['MSF']:>3.0f}  " + "  ".join(f"{k}={'yes' if v else 'NO'}" for k, v in has.items()))

# ---------------------------------------------------------------- 4) what if: can the elective lists close the zero areas?
print("\n== 4) what if: knowledge areas with 0 required credits, and the electives in the same plan that would cover them ==")
for p in plans:
    u = uni(p)
    gaps = [a for a in KAS if table[u][a] == 0]
    if not gaps:
        print(f"{u:<6} no zero areas"); continue
    for a in gaps:
        opts = [f"{c['code']} {title(c)}" for c in p["courses"] if not c["required"] and not is_slot(c) and area(c) == a]
        print(f"{u:<6} {a:<4} -> " + ("; ".join(opts[:4]) + (f" (+{len(opts) - 4})" if len(opts) > 4 else "") if opts else "nothing in the plan's lists"))

# ---------------------------------------------------------------- 5) ArabRoot coverage per knowledge area
# Each area maps to roadmap stages (all their items) and/or single item ids that sit in other stages.
COVER = {
    "AI": ["stage:ai-foundations", "stage:ai-build"],
    "AL": ["stage:dsa"],
    "AR": ["computer-components", "logic-gates", "cpu-internals", "ram-internals", "display-internals"],
    "DM": ["stage:sql", "stage:databases", "stage:db-scale"],
    "FPL": ["stage:programming", "stage:build-deps"],
    "GIT": ["image-formats", "display-internals"],
    "HCI": ["accessibility-basics", "accessibility-testing"],
    "MSF": ["math-for-ml", "number-systems", "floating-point"],
    "NC": ["stage:network", "stage:network-advanced"],
    "OS": ["os-basics", "hello-world", "memory-basics", "stage:linux"],
    "PDC": ["cpu-concurrency", "threading", "stage:distributed"],
    "SDF": ["stage:programming-basics", "katas-programming"],
    "SE": ["stage:architecture", "stage:qa", "stage:team-process"],
    "SEC": ["stage:sec-start", "stage:appsec"],
    "SEP": ["pdpl-hosting", "research-ethics", "breadth-hacker"],
    "SF": ["stage:data-representation", "hello-world", "compression-basics"],
    "SPD": ["interview-frontend", "interview-mobile", "mobile-crash-basics", "mobile-testing"],
}
rm = json.load(open(roadmap_file, encoding="utf-8"))
published = {i["id"] for i in json.load(open(schedule_file, encoding="utf-8"))["items"] if i.get("published_at")}
stages = {s["id"]: s["items"] for s in rm["stages"]}
known = {it["id"] for s in rm["stages"] for it in s["items"] if it.get("id")}
print("\n== 5) ArabRoot posts per knowledge area (published / not yet), from roadmap.json and schedule.json ==")
print(f"{'area':<6}{'pub':>5}{'later':>7}  zero-credit plans  published ids (first 6)")
for a in KAS:
    pub, later = set(), 0
    for ref in COVER[a]:
        if ref.startswith("stage:"):
            for it in stages[ref[6:]]:
                if it.get("id") in published: pub.add(it["id"])
                elif not str(it.get("id", "")).startswith("major-"): later += 1
        elif ref in published: pub.add(ref)
        elif ref in known: later += 1
        else: raise SystemExit(f"unknown roadmap id {ref}")
    print(f"{a:<6}{len(pub):>5}{later:>7}  {zero_count[a]:>17}  {', '.join(sorted(pub)[:6])}")

# ---------------------------------------------------------------- 6) what if "Web Engineering" is web platform work (SPD), not SE?
print("\n== 6) what if: 'Web Engineering' courses move from SE to SPD ==")
for p in plans:
    u = uni(p)
    moved = sum(float(c["credits"] or 0) for c in p["courses"] if c["required"] and not is_slot(c)
                and area(c) == "SE" and re.search(r"web engineering", c.get("title_en") or "", re.I))
    print(f"{u:<6} SE {table[u]['SE']:>3.0f} -> {table[u]['SE'] - moved:>3.0f}   SPD {table[u]['SPD']:>3.0f} -> {table[u]['SPD'] + moved:>3.0f}")

في البرنامج أعلاه لاحظ التالي:

  • القاموس CS2023 ينقل الجدول الثاني من التقرير كما هو، ولا يحسب شيئاً من عنده، والثابت HOURS_PER_CREDIT يحول الساعة المعتمدة إلى ساعات تدريس تقريبية على أساس أن المادة في التقرير نحو 40 ساعة وأن المادة في الجامعات السعودية غالباً 3 ساعات معتمدة، وهذا تقريب نذكره صراحة لأن المادة الواحدة تغطي أكثر من مجال كما قال التقرير نفسه.
  • القائمة RULES هي قلب البرنامج، ولكل مجال تعبير نمطي Regular Expression بكلمات إنجليزية وعربية، والمادة تأخذ أول مجال يطابق عنوانها، لذلك الأمن قبل الشبكات حتى تذهب «Network Security» إلى الأمن، والرياضيات قبل الخوارزميات حتى يذهب «Computational Linear Algebra» إلى الرياضيات وليس إلى الخوارزميات بسبب كلمة computation.
  • الدالة area تعيد GENERAL لمتطلبات الجامعة العامة مثل اللغة والثقافة الإسلامية، وهذه لا تدخل المقارنة، والدالة is_slot تستبعد الخانات الفارغة مثل «Elective» و«Free Course» لأنها ليست مادة بعد.
  • أي مادة عادية بأكثر من 6 ساعات، أو تدريب بأكثر من 12، تطبع في قائمة suspect ولا تحذف، ولكن الخطة التي فيها مادة كهذه تخرج من المتوسطات.
  • القاموس COVER يربط كل مجال بمراحل أو مقالات في خريطة عرب رووت، والبرنامج يتوقف برسالة خطأ إذا ذكرنا معرفاً غير موجود، حتى لا نعد مقالاً وهمياً.

وللتشغيل ادخل مجلد lab واكتب الأمر التالي، والمسارات الثلاثة هي ملف الخطط وخريطة المسارات وجدول النشر:

python cs2023_plans.py ../../tech-majors/lab/plans.json ../../../roadmap.json ../../schedule.json > cs2023_plans.out

المخرج الأول: الساعات الإجبارية في كل مجال

الجزء الأول من المخرج يضع الجامعات أعمدة والمجالات صفوفاً، وكل رقم هو مجموع الساعات المعتمدة للمواد الإجبارية التي وقعت في هذا المجال:

== 1) required credit hours per CS2023 knowledge area, 6 CS plans ==
   (required = not an elective option or empty slot; GENERAL = university requirements, left out)
area       IMSIU    KAU  KFUPM    KSU    PSU    SEU
AI             7      6      6      3      0      6
AL             7     10      7      9      6      9
AR             6      3      8      3      3      6
DM             3      3      6      6      3      3
FPL            3      3      3      3      3      3
GIT            0      3      0      0      0      0
HCI            3      3      0      0      0      3
MSF           21     16     20     18     15     15
NC             4     13      4      3      3      3
OS             4      3      3      3      3      3
PDC            0      3      0      3      3      0
SDF            8     14      7     11      7      3
SE             6      6      6      3      6      6
SEC            3      3      3      3      3      3
SEP            5      3      2      6      3      3
SF             0      4      0      0      0      0
SPD            0      6      0      0      0      3
SCIENCE        6      4     12      4     11      6
BUSINESS       0      0      3      1      0      3
PROJECT       11      6      3      7     13      9
OTHER          0      7      0      0      0      0
total         97    119     93     86     82     87
suspect credits in the source:
   KAU: CS 371 Computer Networks. = 13 credits
left as OTHER: KAU: Emerging Technologies (4); KAU: Workplace Skills for Technology Specialists (3)

في المخرج أعلاه لاحظ التالي:

  • صف MSF هو الأكبر في كل الجامعات، من 15 ساعة في PSU وSEU إلى 21 في IMSIU، وهذا يتفق مع التقرير الذي يجعل الرياضيات أكبر مجال في الجوهر، ومع معايير ABET التي تشترط 15 ساعة على الأقل.
  • كل الخطط الست فيها 3 ساعات بالضبط لأسس لغات البرمجة وللأمن، و3 أو 4 لأنظمة التشغيل، أي مادة واحدة لكل منها، بينما الخوارزميات بين 6 و10 ساعات، أي مادتين أو ثلاث، وهذا هو الفرق بين «التغطية الواسعة» و«الاطلاع» في معايير ABET.
  • خمسة صفوف فيها أصفار متكررة: SF وGIT وSPD وPDC وHCI. وقبل أن تستنتج أن جامعتك لا تدرس أساسيات الأنظمة، اقرأ الفقرة التالية عن المشكلات.
  • عمود KAU فيه NC بـ 13 ساعة، وهو الرقم الذي ظهر في قائمة suspect، فصفحة البرنامج في موقع الجامعة تذكر مادة شبكات الحاسب CS 371 بـ 13 ساعة معتمدة، وهذا لا يمكن أن يكون صحيحاً لمادة واحدة.
  • سطر OTHER لم يبق فيه إلا مادتان من KAU: «التقنيات الناشئة Emerging Technologies» و«مهارات مكان العمل لمتخصصي التقنية»، وتركناهما ظاهرتين لأن أياً منهما لا يقابل مجالاً واحداً في CS2023.
خريطة حرارية من سبعة عشر صفاً لمجالات CS2023 وستة أعمدة للجامعات IMSIU وKAU وKFUPM وKSU وPSU وSEU، وكل خانة فيها الساعات الإجبارية بلون أغمق كلما زادت، وأغمق صف الأسس الرياضية بين 15 و21 ساعة، وتظهر خانات بيضاء متكررة في أساسيات الأنظمة والرسوميات والمنصات المتخصصة والحوسبة المتوازية والتفاعل بين الإنسان والحاسب، وخانة الشبكات في KAU معلمة بأنها 13 ساعة في المصدر
الرياضيات أعمق صف في كل الخطط، والفراغات تتكرر في خمسة مجالات

مشكلات حقيقية ظهرت في التصنيف

لم يخرج هذا الجدول من التشغيل الأول، وما يلي ما ظهر لنا فعلاً وكيف قررنا فيه، لأن نفس الأسئلة سوف تظهر لك إذا صنفت خطتك:

  • عنوان مختصر يخدع البرنامج: في التشغيل الأول خرجت KFUPM بـ «probability=NO statistics=NO» في فحص ABET، أي أن الخطة بلا احتمالات ولا إحصاء، وهذا غير صحيح، فالمادة موجودة واسمها في الدليل «Prob. and Stat. for Eng. & Scientists»، والكلمتان مختصرتان فلم يطابقهما النمط. وأضفنا الصيغة المختصرة إلى النمط، فانتقلت المادة من OTHER إلى الرياضيات وأصبح صف MSF في KFUPM 20 ساعة بدل 17. والدرس أن البرنامج يقرأ العناوين ولا يقرأ المحتوى، فإذا ظهرت نتيجة غريبة فافتح الخطة قبل أن تصدقها.
  • مادة في مجالين: خطة IMSIU فيها مادة عنوانها «أساسيات الحوسبة والأخلاقيات»، فهل هي برمجة SDF أم أخلاقيات SEP؟ والخريطة تأخذ أول تطابق، والأخلاقيات قبل البرمجة في القائمة، فذهبت إلى SEP. وقررنا أن نبقيها كذلك لأن الخطة نفسها لا تحتوي مادة أخلاقيات أخرى، بينما فيها مادتان للبرمجة، وهذا أقرب إلى ما يقصده التقرير عندما يقول إن الأخلاقيات يمكن أن تدرس داخل مواد أخرى. وبنفس المنطق تجد «Web Engineering» في KFUPM وPSU، وقد وضعناها في هندسة البرمجيات لأن اسمها هندسة، وسوف نرى بعد قليل ماذا يحدث لو وضعناها في المنصات المتخصصة.
  • مادة جامعية باسم تقني: في SEU مادة إلزامية لكل الجامعة اسمها «Introduction to Artificial Intelligent and Computing»، فدخلت صف الذكاء الاصطناعي بثلاث ساعات، وهي في الحقيقة مقدمة عامة. وتركناها لأنها إجبارية ويدرسها الطالب فعلاً، ولكن انتبه إلى أن ساعات الذكاء الاصطناعي في SEU ليست كلها مواد تخصص.
  • الأصفار ليست غياباً دائماً: صف SF صفر في خمس جامعات، وهذا لا يعني أن الطلاب لا يدرسون أساسيات الأنظمة، لأن مواضيعها مثل نظرة النظام الكلية وتقييم الأداء والموثوقية موزعة في الغالب داخل مواد المعمارية وأنظمة التشغيل، والتقرير نفسه يقول إنه فكر في حذف هذا المجال ثم أبقاه لأنه يعطي نظرة لا يعطيها غيره. أما الجامعة الوحيدة التي فيها مادة باسم «أنظمة الحاسوب» فهي KAU. لذلك اقرأ الصفر على أنه «لا توجد مادة إجبارية بهذا الاسم»، وارجع إلى توصيف المواد لتعرف أين ذهبت المواضيع.
  • خطأ في المصدر: مادة الشبكات في KAU بـ 13 ساعة، ولم نصحح الرقم بأيدينا لأننا لا نعرف الرقم الصحيح من مصدر رسمي، وإنما تركنا البرنامج يطبعها ويستبعد KAU من المتوسطات.

المخرج الثاني: الخطط مقابل ساعات الجوهر CS Core

الجزء الثاني يحول الساعات المعتمدة إلى ساعات تدريس تقريبية، ويضعها بجانب أرقام CS2023، ويعد الخطط التي فيها صفر في كل مجال:

== 2) approximate instructional hours (credits x 13.3) against CS2023 core hours ==
   averages over 5 plans without suspect credits: IMSIU, KFUPM, KSU, PSU, SEU
area   CScore KAcore  avg_h  plans_with_0  zero in
AI         12     18     59             1  PSU
AL         32     32    101             0  
AR          9     16     69             0  
DM         10     26     56             0  
FPL        21     19     40             0  
GIT         4     70      0             5  IMSIU KFUPM KSU PSU SEU
HCI         8     16     16             3  KFUPM KSU PSU
MSF        55    145    237             0  
NC          7     24     45             0  
OS          8     13     43             0  
PDC         9     26     16             3  IMSIU KFUPM SEU
SDF        43      0     96             0  
SE          6     21     72             0  
SEC         6     35     40             0  
SEP        18     14     51             0  
SF         18      8      0             5  IMSIU KFUPM KSU PSU SEU
SPD         4      0      8             4  IMSIU KFUPM KSU PSU
IMSIU  technical KA credits 80 = about 1067 h, 4.0 x the 270 h CS Core
KFUPM  technical KA credits 75 = about 1000 h, 3.7 x the 270 h CS Core
KSU    technical KA credits 74 = about 987 h, 3.7 x the 270 h CS Core
PSU    technical KA credits 58 = about 773 h, 2.9 x the 270 h CS Core
SEU    technical KA credits 69 = about 920 h, 3.4 x the 270 h CS Core

في المخرج أعلاه لاحظ التالي:

  • الخطط الخمس تعطي المجالات التقنية بين 773 و1067 ساعة تقريباً، أي بين 2.9 و4.0 أضعاف الجوهر الإلزامي، وهذا طبيعي لأن الجوهر حد أدنى، والتقرير يتوقع أن تضيف البرامج جوهر المجال وما بعده.
  • متوسط الرياضيات 237 ساعة تقريباً، وهو أكثر من الجوهر والجوهر الموسع معاً (55 و145)، والسبب أن الخطط السعودية تشترط التفاضل 1 و2 وأحياناً 3، بينما يضع التقرير التفاضل 1 فقط في الجوهر الموسع ويترك التفاضل 2 لقرار البرنامج.
  • هندسة البرمجيات 72 ساعة في المتوسط مقابل 6 في الجوهر، والخوارزميات 101 مقابل 32، فالخطط هنا أعمق بكثير من الحد الأدنى.
  • الرسوميات صفر في الخمس، والتفاعل بين الإنسان والحاسب صفر في ثلاث، والحوسبة المتوازية والموزعة صفر في ثلاث، والمنصات المتخصصة صفر في أربع. وهذه هي المجالات التي يحتاج فيها طالب هذه الخطط إلى قرار منه، سواءً بالمواد الاختيارية أو بالتعلم الذاتي، لأن الجوهر الإلزامي فيها صغير (4 و8 و9 و4 ساعات) ولكنه موجود.
رسم مقارنة لكل مجال من السبعة عشر: نقطة لساعات CS Core في التقرير ونقطة لمتوسط الساعات التقريبية في الخطط الخمس، مع عداد لعدد الخطط التي فيها صفر، وتظهر الرياضيات بـ 237 ساعة مقابل 55، والخوارزميات بـ 101 مقابل 32، بينما الرسوميات صفر في خمس خطط وأساسيات الأنظمة صفر في خمس والمنصات المتخصصة صفر في أربع والحوسبة المتوازية والتفاعل صفر في ثلاث
الخطط أعمق من الجوهر في الرياضيات والخوارزميات، والفراغ في خمسة مجالات صغيرة الجوهر

المخرج الثالث: فحص معايير ABET بالعناوين

== 3) ABET CS program criteria: >=40 credits of computing, >=15 of maths and statistics incl. discrete, probability, statistics ==
IMSIU  computing   70  maths  21  discrete=yes  probability=yes  statistics=yes
KAU    computing   92  maths  16  discrete=yes  probability=NO  statistics=yes
KFUPM  computing   58  maths  20  discrete=yes  probability=yes  statistics=yes
KSU    computing   63  maths  18  discrete=yes  probability=yes  statistics=yes
PSU    computing   56  maths  15  discrete=yes  probability=yes  statistics=yes
SEU    computing   63  maths  15  discrete=yes  probability=NO  statistics=yes

كل الخطط تتجاوز 40 ساعة حوسبة و15 ساعة رياضيات، ولكن KAU وSEU خرجتا بـ «probability=NO»، والسبب أن مادة الإحصاء فيهما اسمها «Statistics 1» و«Statistics» دون كلمة الاحتمالات، فلا نستطيع من العنوان أن نعرف هل تغطي الاحتمالات أم لا. وهذا ليس حكماً على اعتماد البرنامج، فلجان ABET تقرأ توصيف المواد وليس عناوينها، وإنما هو سؤال تسأله لقسمك: في أي مادة أدرس الاحتمالات؟ لأن CS2023 يضع لها 11 ساعة في الجوهر، والذكاء الاصطناعي وتعلم الآلة يعتمدان عليها.

ماذا يحدث إذا اخترت المواد الاختيارية Electives لتسد الفراغ؟

الجزء الرابع هو تجربة «ماذا لو» الأولى: لكل مجال فيه صفر ساعات إجبارية، يبحث البرنامج في قوائم المواد الاختيارية لنفس الخطة عن مادة تقع في هذا المجال:

== 4) what if: knowledge areas with 0 required credits, and the electives in the same plan that would cover them ==
IMSIU  GIT  -> CS 1464 (عال1464) معالجة الصور الرقمية
IMSIU  PDC  -> CS 1433 (عال1433) النظم الموزعة
IMSIU  SF   -> nothing in the plan's lists
IMSIU  SPD  -> CS 1425 (عال1425) الأنظمة المدمجة; CS 1434 (عال1434) انترنت الأشياء; CS 1445 (عال1445) تطوير تطبيقات الويب; CS 1446 (عال1446) تطوير تطبيقات الجوال (+1)
KAU    no zero areas
KFUPM  GIT  -> ICS 415 Computer Graphics
KFUPM  HCI  -> SWE 422 Usability Engineering
KFUPM  PDC  -> ICS 437 Distributed Systems; ICS 446 Cluster Computing; SWE 455 Cloud Applications Engineering
KFUPM  SF   -> nothing in the plan's lists
KFUPM  SPD  -> SWE 302 Game Programming; SWE 463 Mobile Application Development
KSU    GIT  -> CSC 312 Data Visualization; CSC 478 Digital Image Processing and Analysis
KSU    HCI  -> CSC 440 Human Computer Interaction
KSU    SF   -> CSC 320 Systems Programming
KSU    SPD  -> CSC 350 Full-Stack Web Development 1; CSC 450 Full-Stack Web Development 2; SWE 483 Mobile Application Development; CSC 465 Game Programming
PSU    AI   -> CS460 Introduction to Robotics; CS465 Machine Learning (for AI track or by CS department Chair approval)
PSU    GIT  -> CS469 Digital Image Processing (for AI track or by CS department Chair approval)
PSU    HCI  -> nothing in the plan's lists
PSU    SF   -> CS381 Systems Programming
PSU    SPD  -> CS387 Mobile Application Development; CS415 Internet of Things (IoT)
SEU    GIT  -> CS478 Computer Graphics
SEU    PDC  -> CS476 Parallel and Distributed Computing
SEU    SF   -> nothing in the plan's lists

والنتيجة مفيدة لك عملياً: في أغلب الحالات توجد في خطتك مادة اختيارية تسد الفراغ، مثل «Usability Engineering» للتفاعل في KFUPM، و«Distributed Systems» للحوسبة الموزعة، و«Computer Graphics» للرسوميات، و«Systems Programming» لأساسيات الأنظمة في KSU وPSU. ولكن هناك فراغات لا تسدها الخطة، مثل أساسيات الأنظمة في IMSIU وKFUPM وSEU، والتفاعل في PSU، وهنا يأتي دور التعلم الذاتي. لذلك عندما تختار موادك الاختيارية في السنة الثالثة، لا تبدأ بسؤال «أي مادة أسهل؟»، وإنما ابدأ بهذا المخرج: أي مجال في الجوهر لم تغطه الخطة الإجبارية؟

أما التجربة الثانية فهي في الجزء السادس، وتختبر القرار الذي اتخذناه في «Web Engineering»: ماذا لو اعتبرناها تطوير منصات ويب بدل هندسة برمجيات؟

== 6) what if: 'Web Engineering' courses move from SE to SPD ==
IMSIU  SE   6 ->   6   SPD   0 ->   0
KAU    SE   6 ->   6   SPD   6 ->   6
KFUPM  SE   6 ->   3   SPD   0 ->   3
KSU    SE   3 ->   3   SPD   0 ->   0
PSU    SE   6 ->   3   SPD   0 ->   3
SEU    SE   6 ->   6   SPD   3 ->   3

تنخفض هندسة البرمجيات في KFUPM وPSU من 6 إلى 3، وترتفع المنصات المتخصصة من 0 إلى 3، أي أن عدد الخطط التي لا تحتوي أي مادة إجبارية في تطوير الويب أو الجوال ينخفض من أربع إلى اثنتين: IMSIU وKSU. وهذا يعلمك أن نتيجة أي تصنيف تعتمد على قرارات من صنفه، لذلك وضعنا الخريطة مكتوبة في البرنامج حتى تراها وتغيرها إذا اختلفت معنا.

ما الذي يطلبه سوق العمل ولا تعطيه الخطة؟

من السهل أن تقول «الجامعة لا تعلم ما يطلبه السوق»، ولكن هذا كلام عام لا يساعدك، لذلك سوف نعتمد هنا على مصادر محددة فقط: التقرير نفسه، ومعايير ABET، والبيانات التي جمعناها في مقال المقارنة.

أدوات العمل اليومي: Git والاختبار ومراجعة الكود Code Review

يقول CS2023 في وصف مجال هندسة البرمجيات إن اعتماد الصناعة على أدواتها تضاعف خلال جيل واحد، فأصبح التحكم بالإصدارات Version Control في كل مكان، وانتشرت أطر الاختبار والتحليل الثابت والتكامل المستمر Continuous Integration، ولذلك غير التقرير تركيز المجال منذ CS2013 نحو سير العمل نفسه: التحكم بالإصدارات والاختبار ومراجعة الكود Code Review والأدوات، وقلل التركيز على قيادة الفريق وإدارة المشاريع. والمشكلة أن عنوان المادة في الخطة لا يخبرك هل هذه الأدوات تدرس فعلاً، فمادة KSU الإجبارية الوحيدة في هذا المجال اسمها «تحليل النظم وتصميمها»، ومواد الجامعات الأخرى اسمها «هندسة البرمجيات 1» أو «Introduction to Software Engineering». لذلك لا تنتظر أن تتعلم Git في مشروع التخرج، وابدأ به من أول مادة برمجة، واقرأ إدارة النسخ وGit للمبتدئين ثم أنواع الاختبارات للمبتدئين وما هي جودة الكود وكيف تقيسها.

قراءة الكود والتحقق منه في زمن الذكاء الاصطناعي التوليدي Generative AI

يقول فصل الذكاء الاصطناعي التوليدي في التقرير إن هذه الأدوات تستطيع كتابة برامج بسيطة، ولكن مسؤولية التحقق من صحتها تبقى على المستخدم، لذلك ما زال الطالب يحتاج أن يتعلم كتابة البرامج ولو للتحقق فقط، وإن قراءة البرامج سوف تحظى بتركيز أكبر، وإن تعلم البرمجة سيتجه من حفظ الصيغة Syntax إلى الفهم والتحقق والتعديل والاختبار، وإن تقسيم المسألة Problem Decomposition سيصبح أهم. ويضيف في الخوارزميات أن الطالب يجب أن يقيم ما يقترحه الذكاء الاصطناعي من منظور الزمن والذاكرة والتعقيد. وهذه مهارات لا تجد لها مادة في الخطة، وتبنيها بالتمرين المتعمد، وقد كتبنا عن ذلك في لماذا تتمرن دون ذكاء اصطناعي؟ ومعه تمارين Kata في البرمجة.

الويب والجوال والسحابة

رأينا في المخرج أن خطتين من ست لا تحتويان أي مادة إجبارية في تطوير الويب أو الجوال حتى بعد احتساب «Web Engineering»، وأن الحوسبة الموزعة صفر في ثلاث خطط. وفي بيانات استبيان Stack Overflow 2026 التي قرأناها في مقال المقارنة كان مطور Full-stack أكبر دور في الجدول بـ 6,932 مشاركاً، يليه مطور Backend بـ 3,435، وهي أدوار تعمل يومياً بالويب وقواعد البيانات والأنظمة الموزعة. ولا يعني هذا أن الجامعة مقصرة، فالتقرير نفسه يضع الويب والجوال في جوهر مجال مقسم لا يجمع، ويترك اختياره للبرنامج، وإنما يعني أن هذا القرار أصبح قرارك أنت، والمواد الاختيارية التي رأيناها في المخرج الرابع هي أول خطوة.

النزعات المهنية Professional Dispositions والخبرة

الصفات التي جمعها التقرير من استبيان 865 من العاملين في الصناعة، مثل التعاون والمثابرة والمبادرة، لا تقيسها الاختبارات النهائية، وإنما تظهر في العمل مع فريق. وفي تقرير مستقبل الوظائف 2025 الذي قرأناه في مقال المقارنة، كانت الخبرة العملية أكثر طريقة يعتمد عليها أصحاب العمل في تقييم المرشح بنسبة 81%، ثم اختبارات المهارات 48%، ثم الشهادة 43%، و38% من الشركات العاملة في المملكة تتوقع إلغاء اشتراط الشهادة. لذلك التدريب التعاوني والمشاريع مع فريق ليست إضافة، وإنما الطريقة الوحيدة لبناء ما لا تبنيه القاعة، واقرأ لماذا تحتاج شركتك برنامج تدريب Internship؟ لتعرف ما تبحث عنه الشركة في المتدرب.

البحث والذكاء الاصطناعي العميق

في الاتجاه المعاكس، إذا كنت تريد العمل في تدريب النماذج أو البحث، فبيانات Stack Overflow 2026 في مقال المقارنة تقول إن 52% من مهندسي الذكاء الاصطناعي وتعلم الآلة و78% من العلماء التطبيقيين يحملون ماجستير أو أعلى. وهنا تظهر قيمة المواد التي سألت عنها في البداية: الجبر الخطي والاحتمالات والإحصاء ونظرية الحوسبة، فهي ما يفرق بين من يستخدم المكتبة ومن يفهم ما بداخلها، وهي ما تنظر إليه لجان القبول في الدراسات العليا.

خريطة التعلم الذاتي: كل مجال ومقالاته في عرب رووت

الجزء الخامس من المخرج يقرأ خريطة مسارات عرب رووت وجدول النشر، ويعد لكل مجال من مجالات CS2023 المقالات المنشورة والمقالات المخططة التي لم تنشر بعد:

== 5) ArabRoot posts per knowledge area (published / not yet), from roadmap.json and schedule.json ==
area    pub  later  zero-credit plans  published ids (first 6)
AI       14      3                  1  ai-confidently-wrong, ai-history, ai-in-education, ai-terms, arabic-nlp, build-recommender
AL        3      2                  0  algorithms-bigo, data-structures, regex
AR        3      2                  0  cpu-internals, display-internals, ram-internals
DM       26      3                  0  citus, clickhouse, cloudnativepg, connection-pooling, db-admin-ui, db-design
FPL       8      5                  0  build-tools, error-handling, java-licensing, language-creators, language-specs, memory-safety-rust
GIT       2      0                  5  display-internals, image-formats
HCI       2      0                  3  accessibility-basics, accessibility-testing
MSF       2      1                  0  floating-point, number-systems
NC       12     10                  0  certificates, dns-records, http-basics, hub-spoke, ingress-egress-design, internet-connection
OS        4      7                  0  hello-world, linux-cli, linux-permissions, memory-basics
PDC      16      1                  3  api-gateway-concepts, api-gateway-tools, authz-platform, cpu-concurrency, distributed-systems, distributed-tracing
SDF       4      4                  0  cpu-concurrency, git-basics, katas-programming, memory-basics
SE       29      9                  0  accessibility-basics, accessibility-testing, agile-ai, agile-scrum, ai-code-review, ai-confidently-wrong
SEC      30      1                  0  api-security, appsec-controls, asvs-review, common-attacks, crypto-for-devs, cyber-internship-plan
SEP       3      0                  0  breadth-hacker, pdpl-hosting, research-ethics
SF        8      1                  5  compression-basics, date-time, encodings, floating-point, hello-world, image-formats
SPD       4      0                  4  interview-frontend, interview-mobile, mobile-crash-basics, mobile-testing

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

المجالابدأ منما زال ناقصاً في عرب رووت
SDF أساسيات تطوير البرمجياتالذاكرة للمبرمجين: Stack وHeap، Git للمبتدئين، تمارين Kata في البرمجةبيئة البرمجة، والمتغيرات والشروط والحلقات، وتصحيح الأخطاء Debugging، والاستدعاء الذاتي Recursion (مخططة)
AL أسس الخوارزمياتهياكل البيانات، Big-O للمبتدئين، التعبيرات النمطية Regexجداول الهاش وخوارزميات الرسوم البيانية (مخططة)، ونظرية الحوسبة والأوتوماتا (لا يوجد بعد)
FPL أسس لغات البرمجةأنماط البرمجة وأنظمة الأنواع، كيف تتعامل اللغات مع الأخطاء، اللغة شيء والمترجم شيء آخر، أمان الذاكرة Memory Safetyالترجمة والتفسير وJIT، وإدارة الذاكرة (مخططة)
MSF الأسس الرياضيةالأنظمة العددية للمبرمجين، Floating Point من الداخلالرياضيات لتعلم الآلة (مخططة)، والاحتمالات والإحصاء والرياضيات المتقطعة (لا يوجد بعد)
AR المعمارية والتنظيمكيف يعمل المعالج CPU، كيف تعمل الذاكرة RAMمكونات الحاسب، ومن الترانزستور إلى البوابات المنطقية (مخططة)
SF أساسيات الأنظمةماذا يحدث عندما تشغل Hello World؟، كيف يعمل ضغط البيانات، الترميز Encoding للمطورينترميز النصوص Unicode وUTF-8 (مخطط)
OS أنظمة التشغيلسطر الأوامر في Linux، Stack وHeapما هو نظام التشغيل: العمليات والذاكرة الافتراضية ونظام الملفات (مخطط)
NC الشبكاتSubnets وCIDR، شرح DNS وسجلاته، HTTP وHTTPS ببساطةنموذج OSI وTCP/IP، والتوجيه، وTCP وUDP (مخططة)
PDC المتوازية والموزعةالتزامن Concurrency والخيوط، Threads وasync/await، الأنظمة الموزعة للمبتدئينالتواصل بين الخدمات (مخطط)
DM إدارة البياناتتعلم SQL (1)، تصميم قواعد البيانات، أنواع قواعد البياناتالمعاملات ومستويات العزل، وORM (مخططة)
SE هندسة البرمجياتالتصميم والمعمارية، مبادئ التصميم، أنواع الاختباراتالبرمجة الكائنية OOP، والاقتران والتماسك، واختبارات الوحدة عملياً (مخططة)
SEC الأمنما هو الأمن السيبراني؟، OWASP Top 10، التشفير للمطورينأمن تطبيقات الجوال (مخطط)
AI الذكاء الاصطناعيالتعلم الآلي للمبتدئين، كيف تعمل نماذج اللغة الكبيرة، قصة الذكاء الاصطناعيالبحث والتخطيط وتمثيل المعرفة كما يدرسها المنهج (لا يوجد بعد)
HCI التفاعلسهولة الوصول Accessibilityتصميم الواجهات واختبار الاستخدام (لا يوجد بعد)
GIT الرسومياتكيف تعمل الشاشة من الداخل، صيغ الصورخط الرسوميات Graphics Pipeline والتحويلات (لا يوجد بعد)
SPD المنصات المتخصصةأسئلة مقابلة مطور Frontend، تقارير الأعطال في تطبيقات الجوالمسار كامل لتطوير الويب والجوال (لا يوجد بعد)
SEP المجتمع والأخلاقياتالمهندس الشامل، حماية البيانات الشخصية PDPL، أخلاقيات البحث على البشرأخلاقيات الحوسبة ومواثيق ACM وIEEE (لا يوجد بعد)
خريطة تربط مجالات CS2023 السبعة عشر بمراحل عرب رووت، ولكل مجال شارة خضراء بعدد المقالات المنشورة وشارة رمادية بعدد المخطط، وأكبر الشارات الخضراء للأمن 30 وهندسة البرمجيات 29 وإدارة البيانات 26 والحوسبة الموزعة 16 والذكاء الاصطناعي 14، وأصغرها الرياضيات 2 والرسوميات 2 والتفاعل 2، وبجانب المجالات الخمسة التي فيها أصفار في الخطط علامة تقول إنها تحتاج تعلماً ذاتياً
أين تجد كل مجال في عرب رووت، وأين ما زلنا ناقصين

خطة قراءة فصلاً بفصل

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

الفصلمواد الخطة غالباًاقرأ معهاأضف بيدك
1 و2البرمجة 1 و2، التفاضل، الرياضيات المتقطعةHello World من الداخل، الأنظمة العدديةحساب على منصة Git، وكل واجب في مستودع
3هياكل البيانات، تراكيب محددة 2هياكل البيانات، Big-O، Stack وHeapتمرين Kata أسبوعي دون مساعد ذكي
4تنظيم الحاسب، البرمجة الكائنية، الجبر الخطيالمعالج من الداخل، الذاكرة RAM، Floating Pointبرنامج صغير بلغة C تقيس فيه أثر الذاكرة المؤقتة Cache
5أنظمة التشغيل، الخوارزميات، قواعد البياناتالتزامن والخيوط، SQL، تصميم قواعد البيانات، Linuxاستخدام Linux يومياً، وكتابة اختبارات لواجباتك
6الشبكات، لغات البرمجة، هندسة البرمجيات، الاحتمالات والإحصاءSubnets، HTTP، أنماط البرمجة، أنواع الاختباراتمشروع ويب صغير مع فريق ومراجعة كود متبادلة
7الذكاء الاصطناعي، أمن المعلومات، مشروع التخرج 1، مواد اختياريةالتعلم الآلي، الأمن السيبراني، OWASP Top 10اختيار المواد الاختيارية من المجالات التي فيها صفر في خطتك
8المتوازية والموزعة، مشروع التخرج 2، التدريب التعاونيالأنظمة الموزعة، مدخل إلى تصميم الأنظمة، المقابلة التقنيةمشروع تخرج منشور بتوثيق واختبارات، وقرار الماجستير
خط زمني من ثمانية فصول، في كل فصل بطاقة فيها مواد الخطة غالباً، وتحتها ما تقرؤه من عرب رووت باللون البرتقالي، وما تضيفه بيدك باللون الأخضر مثل Git من الفصل الأول وتمارين Kata والاختبارات ومراجعة الكود والمواد الاختيارية التي تسد فراغات الخطة
كل فصل له ما تقرؤه معه وما تبنيه بيدك

أخطاء شائعة عند طلاب علوم الحاسب

  • دراسة الرياضيات للنجاح فقط: التقرير يجعلها خمس الجوهر، ويربط الإحصاء بالذكاء الاصطناعي والجبر الخطي بالرسوميات وتعلم الآلة، فمن يدرسها للاختبار ثم ينساها يعيد تعلمها لاحقاً في وقت أصعب.
  • الظن أن علوم الحاسب برمجة: أساسيات البرمجة 43 ساعة من 270، وما يميز التخصص الخوارزميات والنظرية والرياضيات، فإذا أردت البرمجة وحدها فاقرأ ما يدرسه طالب هندسة البرمجيات في دليل هندسة البرمجيات من هذه السلسلة.
  • تأجيل Git والاختبارات إلى مشروع التخرج: التقرير نقل تركيز هندسة البرمجيات إلى هذه الأدوات تحديداً لأنها ما يحتاجه الخريج من أول يوم.
  • اختيار المواد الاختيارية بحسب السهولة: المخرج الرابع يبين أن في خطتك غالباً مادة تسد كل فراغ، فاختر منها.
  • تصديق رقم في صفحة القسم دون تحقق: رأينا مادة شبكات بـ 13 ساعة، فإذا وجدت رقماً غريباً فاطلب الخطة المعتمدة من القسم.
  • الاعتماد على الذكاء الاصطناعي التوليدي في الواجبات: التقرير يقول إن مسؤولية التحقق تبقى عليك، ومن لم يكتب برنامجاً بيده لا يستطيع أن يحكم على برنامج كتبته أداة.
  • تجاهل نظرية الحوسبة: التعبيرات النمطية التي تستخدمها كل يوم في البحث والتحقق من المدخلات هي آلات حالة محدودة Finite Automata، والمترجم الذي يبني كودك قائم على القواعد الشكلية، وهذا ما تدرسه في هذه المادة.

قائمة تحقق Checklist لطالب علوم الحاسب

  • اقرأ ملخص CS2023 التنفيذي وجدول ساعات الجوهر مرة واحدة على الأقل، حتى تعرف لماذا وضعت كل مادة.
  • صنف المواد الإجبارية في خطتك على المجالات السبعة عشر، يدوياً أو بالبرنامج في هذا المقال.
  • حدد المجالات التي فيها صفر، واختر لها مواد اختيارية أو مقالات من خريطة التعلم الذاتي.
  • اسأل القسم: في أي مادة أدرس الاحتمالات؟ وأين أساسيات الأنظمة؟ وهل البرنامج معتمد من ABET ومن المركز الوطني للتقويم والاعتماد الأكاديمي؟
  • ابدأ Git من الفصل الأول، واكتب اختبارات لواجباتك من الفصل الخامس.
  • تمرن أسبوعياً دون مساعد ذكي، واقرأ كود غيرك وراجعه.
  • خطط للتدريب التعاوني أو الصيفي قبل السنة الرابعة.
  • إذا كان اتجاهك البحث أو الذكاء الاصطناعي العميق، فاجعل الجبر الخطي والاحتمالات والإحصاء أولوية، وخطط للماجستير.

الخلاصة

وصلنا لنهاية الموضوع، وأهم ما فيه:

  • CS2023 من ACM وIEEE-CS وAAAI، نسخته النهائية بتاريخ يناير 2024، وفيه سبعة عشر مجال معرفة، وجوهر إلزامي 270 ساعة بدل 308 في CS2013، والمادة فيه نحو 40 ساعة.
  • الرياضيات أكبر مجال في الجوهر بـ 55 ساعة، وتوسعت إلى الاحتمالات والإحصاء والجبر الخطي بسبب الذكاء الاصطناعي وعلم البيانات، والتفاضل 1 في الجوهر الموسع.
  • التقرير يضيف الأخلاقيات داخل أغلب المجالات، والنزعات المهنية لكل مجال، ويقول صراحة إن تقسيم المواد ومستويات المهارة اقتراحات وليست إلزاماً.
  • ABET تطلب لعلوم الحاسب 40 ساعة حوسبة و15 ساعة رياضيات فيها المتقطعة والاحتمالات والإحصاء، وتغطية واسعة للخوارزميات والنظرية ولغات البرمجة.
  • في خطط ست جامعات سعودية: الرياضيات أعمق صف، والخوارزميات أعمق من الجوهر بكثير، والفراغات في أساسيات الأنظمة والرسوميات والمنصات المتخصصة والحوسبة الموزعة والتفاعل، وأغلبها تسده مادة اختيارية من نفس الخطة.
  • سوق العمل يطلب أدوات سير العمل والقدرة على قراءة الكود والتحقق منه والخبرة مع فريق، وهذه تبنيها بنفسك من الفصل الأول.

وإذا وجدت أن ما يشدك هو بناء الأنظمة الكبيرة في فريق أكثر من النظرية، فاقرأ دليل هندسة البرمجيات من هذه السلسلة، وإذا كان ما يشدك المعالج والدائرة فاقرأ دليل هندسة الحاسب. وأقرب المقالات إلى هذا الموضوع على الموقع:

دليلأي تخصص تقني تختار؟ ما تدرسه فعلاً وأين تعمل بعدهماذا تدرس فعلاً في كل تخصص تقني بحسب الخطط الدراسية السعودية، وأين يعمل خريجوه، ومتى يهم اسم التخصص ومتى تهم المهارة.دليلماذا يحدث عندما تشغل برنامج Hello World؟نتتبع برنامج C صغيراً من المحرر إلى الشاشة، فترى كل طبقة يمر بها في الجهاز حتى تظهر الجملة أمامك.دليلهياكل البيانات Data Structures للمبتدئينلماذا تكون نفس العملية سريعة في هيكل بيانات وبطيئة في آخر، وأين تقابل كل هيكل في السيرفرات وقواعد البيانات.دليلBig-O للمبتدئين: لماذا يبطؤ كودك عندما تكبر البياناتلماذا يعمل الكود بسرعة على مئة صف ثم يتوقف على مئة ألف، وكيف تقرأ Big-O وتكتشف الخوارزمية البطيئة في كودك.دليلالأنظمة العددية للمبرمجين: من Binary إلى Floating Pointلماذا يظهر القرص 465 بدل 500، ويصبح العداد سالباً فجأة، ولا يساوي 0.1 + 0.2 القيمة 0.3؟ الإجابة في طريقة تخزين الأرقام.دليلإدارة النسخ وGit للمبتدئين: لماذا نحتاجها وكيف تعمللماذا تضيع الملفات بأسماء final_v2 ويمسح الزملاء عمل بعضهم، وكيف يحل Git ذلك على مشروع حقيقي من أول commit.دليلتمارين Kata في البرمجة بثلاثة مستويات مع الحلولتمارين برمجة تحلها بيدك دون ذكاء اصطناعي، من FizzBuzz إلى النصوص العربية وحالة السباق، ولكل تمرين حل مجرب في لغتين.دليلالتعلم الآلي Machine Learning للمبتدئينكيف تتعلم الآلة القواعد من الأمثلة، وكيف تعرف أن النموذج تعلم فعلاً ولم يحفظ الإجابات، ومتى تختار كل خوارزمية.

سجل التحديثات

  • أكتوبر 2026: كتابة المقال، وقراءة التقرير النهائي CS2023 (يناير 2024، نسخة 2024-04-28) ومعايير ABET لبرامج الحوسبة 2026-2027، وتشغيل البرنامج cs2023_plans.py على Python 3.13 على ست خطط علوم حاسب سعودية من ملف خطط مقال المقارنة.
Could not load content
نشرة عرب رووت | ArabRoot

معرفة تستحق مكاناً في بريدك.

مقالات مختارة وأدوات مفيدة وأفكار لمشروعك القادم، في رسالة واحدة كل أسبوع.

يمكنك إلغاء الاشتراك متى شئت. الخصوصية

تم استلام طلبك. افتح بريدك واضغط رابط التأكيد لإتمام الاشتراك.