في بداية الفصل يوزع القسم الخطة الدراسية لعلوم الحاسب، فتجد فيها مادة اسمها «نظرية الحوسبة 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 Intelligence | AI | الذكاء الاصطناعي، تعلم الآلة |
| أسس الخوارزميات Algorithmic Foundations | AL | هياكل البيانات، تحليل الخوارزميات، نظرية الحوسبة |
| المعمارية والتنظيم Architecture and Organization | AR | التصميم المنطقي، تنظيم الحاسب |
| إدارة البيانات Data Management | DM | قواعد البيانات |
| أسس لغات البرمجة Foundations of Programming Languages | FPL | مفاهيم لغات البرمجة، المترجمات |
| الرسوميات والتقنيات التفاعلية Graphics and Interactive Techniques | GIT | رسوميات الحاسب، معالجة الصور، العرض المرئي |
| التفاعل بين الإنسان والحاسب Human-Computer Interaction | HCI | التفاعل بين الإنسان والحاسب |
| الأسس الرياضية والإحصائية Mathematical and Statistical Foundations | MSF | التراكيب المحددة، الاحتمالات والإحصاء، الجبر الخطي، التفاضل |
| الشبكات والاتصال Networking and Communication | NC | شبكات الحاسب |
| أنظمة التشغيل Operating Systems | OS | أنظمة التشغيل |
| الحوسبة المتوازية والموزعة Parallel and Distributed Computing | PDC | المعالجة المتوازية، الأنظمة الموزعة |
| أساسيات تطوير البرمجيات Software Development Fundamentals | SDF | البرمجة 1 و2، البرمجة الكائنية |
| هندسة البرمجيات Software Engineering | SE | هندسة البرمجيات، تحليل النظم |
| الأمن Security | SEC | أمن المعلومات، الأمن السيبراني |
| المجتمع والأخلاقيات والمهنة Society, Ethics, and the Profession | SEP | أخلاقيات الحوسبة، الندوة المهنية |
| أساسيات الأنظمة Systems Fundamentals | SF | أنظمة الحاسب، برمجة الأنظمة |
| تطوير المنصات المتخصصة Specialized Platform Development | SPD | تطوير الويب والجوال والألعاب والأنظمة المدمجة |
ولاحظ أن تسعة من هذه الأسماء تغيرت منذ 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 وتجمع الرسوميات والذكاء الاصطناعي والمنصات المتخصصة والتفاعل بين الإنسان والحاسب والأمن وإدارة البيانات. ويقول التقرير إن كفاءة البرمجيات شرط سابق للاثنتين الأخريين، وإن الرياضيات والمجتمع والأخلاقيات جزء من الثلاث.

مستويات المهارة والنزعات المهنية 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 1 | CS2013 Tier 2 | CS2023 CS Core | CS2023 KA Core |
|---|---|---|---|---|
| MSF الأسس الرياضية والإحصائية | 37 | 4 | 55 | 145 |
| SDF أساسيات تطوير البرمجيات | 43 | 0 | 43 | لا يوجد |
| AL أسس الخوارزميات | 19 | 9 | 32 | 32 |
| FPL أسس لغات البرمجة | 8 | 20 | 21 | 19 |
| SEP المجتمع والأخلاقيات والمهنة | 11 | 5 | 18 | 14 |
| SF أساسيات الأنظمة | 18 | 9 | 18 | 8 |
| AI الذكاء الاصطناعي | 0 | 10 | 12 | 18 |
| DM إدارة البيانات | 1 | 9 | 10 | 26 |
| AR المعمارية والتنظيم | 0 | 16 | 9 | 16 |
| PDC الحوسبة المتوازية والموزعة | 5 | 10 | 9 | 26 |
| HCI التفاعل بين الإنسان والحاسب | 4 | 4 | 8 | 16 |
| OS أنظمة التشغيل | 4 | 11 | 8 | 13 |
| NC الشبكات والاتصال | 3 | 7 | 7 | 24 |
| SE هندسة البرمجيات | 6 | 22 | 6 | 21 |
| SEC الأمن | 3 | 6 | 6 | 35 |
| GIT الرسوميات والتقنيات التفاعلية | 2 | 1 | 4 | 70 |
| SPD تطوير المنصات المتخصصة | 0 | 0 | 4 | لا يوجد |
في الجدول أعلاه لاحظ التالي:
- الرياضيات وحدها 55 ساعة من 270، أي نحو خمس الجوهر، وهي أكبر مجال فيه، ثم أساسيات البرمجة بـ 43 ساعة، ثم الخوارزميات بـ 32. لذلك إذا كنت تظن أن علوم الحاسب «برمجة» فاعلم أن البرمجة الأساسية أقل من سدس الجوهر.
- هندسة البرمجيات انخفضت في الجوهر من 28 ساعة في CS2013 (6 و22) إلى 6 ساعات، وانتقل أغلبها إلى جوهر المجال، والسبب في وصف المجال نفسه أن التقرير يريد أن يركز في الجوهر على ما لن يتعلمه الطالب في مكان آخر من الخطة.
- الرسوميات لها 4 ساعات في الجوهر و70 في جوهر المجال، وهذا مثال واضح على نموذج دوار الشمس: قلب صغير، وبتلة طويلة لمن يختار هذا الاتجاه.
- جوهر المجال لا يجمع بالطريقة نفسها في كل مجال، فالتقرير يقول إن جوهر المنصات المتخصصة مقسم بين الويب والجوال والأنظمة المدمجة وغيرها بتداخل قليل، وإن ساعاتها لا تجمع معاً.

لماذا كل هذه الرياضيات؟
هذا أكثر سؤال يطرحه طالب علوم الحاسب في سنته الأولى، والتقرير يجيب عنه بصراحة. فقد كان مجال الرياضيات في CS2013 اسمه التراكيب المحددة، أي الرياضيات المتقطعة Discrete Mathematics وحدها تقريباً، ثم وسعه CS2023 ليشمل الاحتمالات والإحصاء والجبر الخطي، والسبب أن المجالات التي نمت بسرعة مثل الذكاء الاصطناعي وتعلم الآلة وعلم البيانات والحوسبة الكمية قائمة على الرياضيات المتصلة Continuous Mathematics. وفي استبيان الأساتذة الذي أجاب عنه نحو 600 أستاذ، كانت نسبة من رأوا الاحتمالات مهمة للعمل في الصناعة أو للدراسات العليا 98%، والإحصاء 98%، والجبر الخطي 89%.
ويقسم التقرير ساعات الرياضيات كما يلي، وكل صف مجموعه 40 ساعة، أي مادة كاملة:
| وحدة المعرفة | CS Core | KA Core | ماذا تتعلم فيها |
|---|---|---|---|
| الرياضيات المتقطعة Discrete Mathematics | 29 | 11 | المجموعات والعلاقات، البراهين بالاستقراء والتناقض، العد، الحساب المعياري، المنطق، الرسوم البيانية |
| الاحتمالات Probability | 11 | 29 | الاحتمال الشرطي وقاعدة Bayes، المتغيرات العشوائية، التوقع والتباين |
| الإحصاء Statistics | 10 | 30 | العينات، فترات الثقة، الانحدار، اختبار الفرضيات |
| الجبر الخطي Linear Algebra | 5 | 35 | المتجهات والمصفوفات، القيم الذاتية، تطبيقات مثل PCA وSVD وPageRank والرسوميات |
| التفاضل والتكامل Calculus | 0 | 40 | المشتقات والتكامل، والتفاضل متعدد المتغيرات، والتحسين Optimization و Gradient Descent |
| المجموع | 55 | 145 |
ولاحظ نقطتين مهمتين في هذا الجدول. الأولى أن التفاضل كله في جوهر المجال وليس في الجوهر الإلزامي، ويقول التقرير إن أغلب البرامج تشترط التفاضل 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.

مشكلات حقيقية ظهرت في التصنيف
لم يخرج هذا الجدول من التشغيل الأول، وما يلي ما ظهر لنا فعلاً وكيف قررنا فيه، لأن نفس الأسئلة سوف تظهر لك إذا صنفت خطتك:
- عنوان مختصر يخدع البرنامج: في التشغيل الأول خرجت 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 ساعات) ولكنه موجود.

المخرج الثالث: فحص معايير 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 (لا يوجد بعد) |

خطة قراءة فصلاً بفصل
الخطط السعودية تختلف في ترتيب المواد، ولكن الترتيب العام متقارب: البرمجة والرياضيات أولاً، ثم هياكل البيانات والمعمارية، ثم أنظمة التشغيل وقواعد البيانات والخوارزميات، ثم الشبكات ولغات البرمجة وهندسة البرمجيات، ثم الذكاء الاصطناعي والأمن والمشروع. والجدول التالي يضع بجانب كل فصل ما تقرؤه من عرب رووت، وما تضيفه بيدك مما لا تعطيه الخطة:
| الفصل | مواد الخطة غالباً | اقرأ معها | أضف بيدك |
|---|---|---|---|
| 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، التدريب التعاوني | الأنظمة الموزعة، مدخل إلى تصميم الأنظمة، المقابلة التقنية | مشروع تخرج منشور بتوثيق واختبارات، وقرار الماجستير |

أخطاء شائعة عند طلاب علوم الحاسب
- دراسة الرياضيات للنجاح فقط: التقرير يجعلها خمس الجوهر، ويربط الإحصاء بالذكاء الاصطناعي والجبر الخطي بالرسوميات وتعلم الآلة، فمن يدرسها للاختبار ثم ينساها يعيد تعلمها لاحقاً في وقت أصعب.
- الظن أن علوم الحاسب برمجة: أساسيات البرمجة 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 على ست خطط علوم حاسب سعودية من ملف خطط مقال المقارنة.