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

هندسة الحاسب Computer Engineering: منهج CE2016 ومواد الجامعة

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

هندسة الحاسب Computer Engineering: منهج CE2016 ومواد الجامعة

طالب هندسة الحاسب يعيش موقفاً غريباً في سنته الثانية: أصدقاؤه في علوم الحاسب يكتبون تطبيقات ويبنون مواقع، وهو يقضي أسبوعه بين الدوائر الكهربائية والمعادلات التفاضلية والإشارات والأنظمة Signals and Systems، ويحمل في حقيبته لوحة تجارب Breadboard ومقاومات، ويسأل نفسه: هل اخترت تخصص الحاسب أم الكهرباء؟ ثم يفتح إعلانات الوظائف فيجد أغلبها لمطوري البرمجيات، فيزداد السؤال: لماذا أدرس كل هذا العتاد إذا كانت الوظائف برمجية؟

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

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

  • من كتب منهج هندسة الحاسب، وكيف تطور التخصص من الهندسة الكهربائية وعلوم الحاسب.
  • جسم المعرفة في CE2016: اثنا عشر مجالاً و420 ساعة، والفرق بين الجوهر والمكمل.
  • لماذا 120 ساعة رياضيات، ولماذا الفيزياء والمختبرات ومشروع التصميم.
  • الممارسة المهنية، وما الذي لا يغطيه المنهج.
  • معايير ABET لبرامج الهندسة الكهربائية والحاسب، ولقب مهندس.
  • تجربة عملية Lab: خطتا جامعة الملك سعود وجامعة الملك عبدالعزيز بجانب CE2016، ومشكلات حقيقية في البيانات.
  • ما يطلبه العمل مما لا تعطيه الخطة، وخريطة التعلم الذاتي، وخطة قراءة فصلاً بفصل، وأخطاء شائعة.

من كتب منهج هندسة الحاسب؟

في الثمانينات شكلت ACM وجمعية الحاسب في IEEE لجنة مشتركة للمناهج أنتجت Computing Curricula 1991، ثم انقسم العمل إلى تقارير منفصلة لكل تخصص، وكان أول تقرير لهندسة الحاسب CE2004. وبعد عقد كامل صدر التحديث Computer Engineering Curricula 2016، واختصاراً CE2016، بتاريخ 15 ديسمبر 2016، من لجنة توجيه برئاسة John Impagliazzo فيها أعضاء من الولايات المتحدة والصين واسكتلندا، واعتمدته ACM وIEEE-CS. ويقول التقرير إن هدفه أن يحدث CE2004 بتطورات العقد الماضي وحاجات العقد القادم، وأن يكون دولياً، ولذلك يعرض في ملحقه نماذج خطط من الولايات المتحدة والصين وأوروبا. ولم نجد حتى أكتوبر 2026 نسخة أحدث منه، لذلك هو المرجع الحالي للتخصص.

ويعرف التقرير هندسة الحاسب بأنها تخصص يجمع علم وتقنية تصميم المكونات البرمجية والعتادية لأنظمة الحوسبة الحديثة والأجهزة التي يتحكم فيها الحاسب، وبناءها وتنفيذها وصيانتها، ويضرب أمثلة: نظام حقن الوقود في السيارة، وجهاز الأشعة السينية، والهاتف الذكي، وجهاز الإنذار، والغسالة، وأجهزة إنترنت الأشياء IoT. ويحكي كيف نشأ التخصص: بدأ تخصصاً فرعياً داخل الهندسة الكهربائية يمد التصميم المنطقي الرقمي إلى تصميم المعالجات والأنظمة، ثم أخذ من علوم الحاسب مجالات كثيرة، ثم أصبح له اليوم مجالاته الخاصة. ويذكر أن أول برنامج هندسة حاسب اعتمدته لجنة الهندسة في ABET كان في جامعة Case Western Reserve عام 1971، وأن عدد البرامج المعتمدة حتى أكتوبر 2016 بلغ 301 برنامج، منها 49 خارج الولايات المتحدة.

ما الذي يميز مهندس الحاسب عن غيره؟

يحدد CE2016 ثلاث صفات يجب أن يملكها مهندس الحاسب، والأولى منها هي جوهر التخصص كله: القدرة على تصميم الحاسبات والأنظمة المبنية عليها والشبكات، بعتادها وبرمجياتها وتكاملهما، لحل مشكلات هندسية جديدة ضمن مقايضات بين أهداف وقيود متعارضة. ويؤكد التقرير أن «التصميم» هنا مستوى أعلى من «التركيب» Assembling و«الإعداد» Configuring. والصفة الثانية سعة المعرفة في الرياضيات والعلوم الهندسية أكثر مما يحتاجه التخصص بالحد الأدنى، والثالثة الاستعداد للممارسة المهنية الهندسية.

ثم يفرق التقرير بين التخصصات المجاورة بجملة لكل منها: مهندس الكهرباء يهتم أساساً بالجانب الفيزيائي للإلكترونيات من دوائر وتحليل إشارات وأجهزة إلكترونية دقيقة، وعالم الحاسب بالجوانب النظرية والخوارزمية، ومهندس البرمجيات ببناء برمجيات صحيحة وكبيرة غالباً على طول دورة حياتها، وأخصائي تقنية المعلومات بتلبية حاجة المستخدمين في المؤسسة باختيار التقنيات ودمجها وإدارتها، أما تقني هندسة الحاسب Technologist فيدعم المهندسين بتركيب المنتجات وتشغيلها وصيانتها. ويضيف ست صفات يتوقعها من كل خريج: منظور النظام الكامل System Level Perspective، والعمق والسعة، وسلسلة من تجارب التصميم تنتهي بمشروع كبير، واستخدام أدوات المختبر والحاسب في التحليل والتصميم، والممارسة المهنية، ومهارات التواصل. وإذا قارنت هذا بما يقوله منهج علوم الحاسب عن نفسه في دليل علوم الحاسب، وما يقوله منهج هندسة البرمجيات في دليل هندسة البرمجيات، فسوف ترى أن الكلمة المفتاحية هنا هي «التكامل»: الحد الذي يلتقي فيه العتاد بالبرمجيات.

لوحة Arduino Uno R3 زرقاء عليها متحكم دقيق ومنافذ دبابيس على الحافتين ومنفذ USB ومقبس طاقة
لوحة Arduino Uno R3، وعليها متحكم دقيق Microcontroller ومداخل ومخارج رقمية وتماثلية، وهي من أشهر أدوات المختبرات التي يبدأ بها طالب الأنظمة المدمجة. الصورة: SparkFun Electronics، رخصة CC BY 2.0، المصدر: Wikimedia Commons (تم تحويلها إلى WebP).

هل يهم أين يقع القسم؟

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

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

جسم المعرفة Body of Knowledge: اثنا عشر مجالاً و420 ساعة

يبني CE2016 جسم المعرفة Body of Knowledge في ثلاثة مستويات: مجال المعرفة Knowledge Area مثل CE-NWK للشبكات، ثم وحدات المعرفة Knowledge Units مثل CE-NWK-2، ثم نواتج تعلم Learning Outcomes لكل وحدة. ولاحظ أن التقرير قرر صراحة ألا يضع «مواضيع» Topics، ويقول إن نواتج التعلم تعبر عن المعرفة نفسها فتكون المواضيع تكراراً. وكل وحدة إما جوهر Core لها ساعات، يجب أن يحققه كل طالب في كل برنامج هندسة حاسب، أو مكملة Supplementary بلا ساعات جوهر يضيفها البرنامج بحسب أهدافه. وأول وحدتين في كل مجال ثابتتان: التاريخ والنظرة العامة، ثم الأدوات والمعايير والقيود الهندسية ذات العلاقة، والسبب أن ممارسة الهندسة تحتاج أدوات حديثة ومعايير معاصرة تتغير مع الوقت.

ويقيس التقرير الوقت بساعة الجوهر Core Hour، وهي محاضرة من 50 دقيقة، ويقول إن ثلاث ساعات مختبر تعادل عادة ساعة محاضرة واحدة، وإن الطالب يقضي خارج القاعة نحو ثلاثة أضعاف وقت القاعة. ثم يحسب: الساعة المعتمدة محاضرة أسبوعياً لمدة 14 أسبوعاً، والسنة 30 ساعة معتمدة، أي 420 ساعة محاضرة، ولذلك جعل جوهر هندسة الحاسب 420 ساعة، أي ما يعادل سنة دراسية كاملة، ويقول إن المجالات تمثل نحو نصف المحتوى الخاص بالتخصص في برنامج من أربع سنوات، وإن البرنامج يجب أن يحتوي سنة ونصفاً على الأقل من المواضيع الهندسية. والجدول التالي يعرض المجالات الاثني عشر بساعاتها، ومقابلها في CE2004:

المجال في CE2016ساعات الجوهرمقابله في CE2004
المعمارية والتنظيم Computer Architecture and Organization (CAO)6063
الدوائر والإلكترونيات Circuits and Electronics (CAE)50الدوائر والإشارات 43، والإلكترونيات 40
التصميم الرقمي Digital Design (DIG)50المنطق الرقمي 57
تصميم البرمجيات Software Design (SWD)45أساسيات البرمجة 39، وهندسة البرمجيات 13، وقواعد البيانات 5
الأنظمة المدمجة Embedded Systems (ESY)4020
هندسة الأنظمة والمشاريع Systems and Project Engineering (SPE)35هندسة أنظمة الحاسب 18، والتفاعل HCI 8
خوارزميات الحوسبة Computing Algorithms (CAL)3030
معالجة الإشارات Signal Processing (SGP)3017
شبكات الحاسب Computer Networks (NWK)2021
الإعداد للممارسة المهنية Preparation for Professional Practice (PPP)2016
أمن المعلومات Information Security (SEC)20جديد
إدارة موارد النظام Systems Resource Management (SRM)20أنظمة التشغيل 20

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

  • عدد المجالات انخفض من 16 إلى 12، ولكن الساعات بقيت 420، ويقول التقرير إن هذا ليس تقليلاً للمحتوى، وإنما دمج لخمسة مجالات، وتقليل لتصميم الدوائر المتكاملة VLSI لصالح الأنظمة على شريحة واحدة SoC والأنظمة المدمجة، لأن التخصص اتجه إليها.
  • الأنظمة المدمجة تضاعفت من 20 إلى 40 ساعة، ومعالجة الإشارات من 17 إلى 30، وظهر أمن المعلومات مجالاً جديداً بـ 20 ساعة.
  • أنظمة التشغيل أصبح اسمها إدارة موارد النظام، وفيها أنظمة التشغيل الفورية Real-Time وأنظمة الأجهزة المتنقلة، وهذا يعكس أن مهندس الحاسب يهتم بنظام التشغيل من زاوية الجهاز والزمن الحقيقي.
  • التفاعل بين الإنسان والحاسب انتقل إلى وحدة اسمها تجربة المستخدم User Experience بـ 6 ساعات داخل هندسة الأنظمة والمشاريع.

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

لوحة لجسم المعرفة في CE2016: اثنا عشر مجالاً مرتبة على محور من العتاد إلى البرمجيات، الدوائر والإلكترونيات 50 ساعة والتصميم الرقمي 50 والمعمارية 60 والأنظمة المدمجة 40 ومعالجة الإشارات 30 في جهة العتاد، ثم إدارة موارد النظام 20 والشبكات 20 والأمن 20 والخوارزميات 30 وتصميم البرمجيات 45 في جهة البرمجيات، وفوقها هندسة الأنظمة والمشاريع 35 والممارسة المهنية 20، وتحتها شريط الرياضيات 120 ساعة بأربعة مجالات
420 ساعة على الحد بين العتاد والبرمجيات، و120 ساعة رياضيات تحتها

ماذا تتعلم فعلاً في المعمارية Computer Architecture والأنظمة المدمجة Embedded Systems؟

الأرقام وحدها لا تقول لك ماذا ستفعل في القاعة، لذلك لننظر داخل أكبر مجالين يميزان هندسة الحاسب. ففي المعمارية والتنظيم 60 ساعة موزعة على وحدات واضحة: مجموعة التعليمات Instruction Set Architecture بعشر ساعات، وتنظيم المعالج بعشر، وتنظيم الذاكرة ومعمارياتها بتسع، والإدخال والإخراج والاتصال بسبع، والأنظمة الفرعية الطرفية بسبع، ثم قياس الأداء وحساب الحاسب Computer Arithmetic بثلاث لكل منهما، والمعماريات متعددة الأنوية بخمس، ومعماريات الأنظمة الموزعة بأربع. أي أن المجال يأخذك من التعليمة التي يفهمها المعالج إلى خط الأنابيب Pipeline والذاكرة المؤقتة Cache والمعالجات متعددة الأنوية، وهو ما شرحناه بلغة المبرمج في كيف يعمل المعالج من الداخل.

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

لماذا 120 ساعة رياضيات، ولماذا الفيزياء؟

إذا كان SE2014 لهندسة البرمجيات يستبعد التفاضل من جسم المعرفة كما رأينا في دليل هندسة البرمجيات، فإن CE2016 يفعل العكس تماماً. فقد كان في CE2004 مجالان للرياضيات فقط هما التراكيب المتقطعة والاحتمالات والإحصاء بـ 66 ساعة، ثم أضاف CE2016 مجالين هما تحليل الدوال المتصلة Analysis of Continuous Functions والجبر الخطي Linear Algebra، ورفع الرياضيات إلى 120 ساعة، فأصبح جسم المعرفة كله 540 ساعة. ويوصي بأربعة مجالات بثلاثين ساعة لكل منها، ويشرح سبب كل واحد:

مجال الرياضياتالساعاتلماذا يحتاجه مهندس الحاسب بحسب التقرير
تحليل الدوال المتصلة (التفاضل والمعادلات التفاضلية) CE-ACF30نظرية الاتصالات والإشارات والأنظمة والإلكترونيات التماثلية، وهو أساس كل البرامج الهندسية
التراكيب المتقطعة CE-DSC30الجبر البولياني والمنطق والبراهين والرسوم البيانية، ويعتبرها التقرير مكوناً أساسياً لكل طالب
الجبر الخطي CE-LAL30حل شبكات المعادلات التي تصف الجهد والتيار في الدوائر، والرسوميات والروبوتات
الاحتمالات والإحصاء CE-PRS30الموثوقية والأمان والأداء، ومنها العمليات العشوائية Stochastic Processes واختبار الفرضيات والانحدار

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

المختبرات والتصميم: ما لا يوجد في أي جدول ساعات

من المبادئ الأربعة عشر التي وضعتها لجنة CE2016 أن البرنامج يجب أن يحتوي تجارب تصميم ومختبرات «باليد» لتصميم العتاد والبرمجيات وبنائها واختبارها، وأن يركز على بناء «حاسب كامل» في المختبر يجمع العتاد ونظام التشغيل والبرمجيات في تطبيق حقيقي، وأن يكون التصميم موضوعاً يتكرر في التقرير كله. ويقول إن مشروع التصميم الختامي Culminating Design Experience ليس في جسم المعرفة الأساسي، ولكنه جزء لا غنى عنه من البكالوريوس، ويطلب فيه أن يدمج الطالب مفاهيم من عدة مواد في نظام كامل، وأن يستخدم أدوات التخصص، وأن يكتب توثيقاً جيداً للتصميم وتجربته، وأن يظهر الإبداع وإدارة الوقت. ويخصص ملحقاً كاملاً لمختبرات هندسة الحاسب، من الدوائر والإلكترونيات إلى تصميم المعمارية والتصميم المنطقي.

الممارسة المهنية Professional Practice

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

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

  • الجوهر ليس منهجاً كاملاً، والمجالات ليست مواد، ويقول التقرير إن غياب ناتج تعلم عن الجوهر لا يعني أنه غير مهم، وإنما أنه ليس مطلوباً من كل طالب في كل برنامج.
  • لا يحدد ساعات للعلوم، ولا لغة برمجة ولا نظام تشغيل.
  • لا يحدد ترتيب المواد، ويقول إن بعض وحدات الجوهر لا تدرس إلا بعد خلفية كبيرة.
  • يقول إن 120 ساعة رياضيات حد أدنى لا يكفي، ويترك الباقي للبرنامج.
  • كتب في 2016، فلا تجد فيه الذكاء الاصطناعي على الأجهزة الطرفية Edge AI ولا المعالجات المتخصصة للذكاء الاصطناعي بأسمائها، وإن كان يتحدث عن المعالجات متعددة الأنوية والأنظمة على شريحة واحدة وإنترنت الأشياء والأجهزة المتنقلة.

ABET ولقب مهندس

هندسة الحاسب برنامج هندسي تعتمده لجنة الهندسة EAC في ABET، وقد كان في المملكة 18 برنامج هندسة حاسب معتمداً منها عندما قرأنا قاعدة ABET في مقال المقارنة، وهي مع هندسة البرمجيات البوابة الهندسية بين تخصصات الحوسبة إلى التسجيل في الهيئة السعودية للمهندسين، التي تطلب في التعليم الهندسي 32 ساعة رياضيات وعلوم أساسية و48 ساعة علوماً هندسية وتصميماً. وتطلب معايير ABET لبرامج الهندسة 2026-2027 في كل برنامج هندسي 30 ساعة على الأقل من الرياضيات والعلوم الأساسية مع خبرة تجريبية، و45 ساعة من المواضيع الهندسية، وتجربة تصميم كبرى في النهاية. ثم تضيف معايير البرامج الكهربائية والحاسوبية Electrical, Computer, Communications, Telecommunication(s), and Similarly Named Engineering Programs، والجمعية المسؤولة عنها IEEE مع CSAB لبرامج الحاسب:

  • الخطة يجب أن تعطي سعة وعمقاً في المواضيع الهندسية التي يدل عليها اسم البرنامج.
  • يجب أن تتضمن الاحتمالات والإحصاء بتطبيقات مناسبة، والرياضيات حتى التفاضل والتكامل، والعلوم الطبيعية، والمواضيع الهندسية ومنها علوم الحاسب اللازمة لتحليل الأجهزة الكهربائية والإلكترونية المعقدة وتصميمها، والبرمجيات، والأنظمة التي تجمع العتاد والبرمجيات.
  • البرامج التي في اسمها كلمة «computer» يجب أن تتضمن الرياضيات المتقطعة، أما التي في اسمها «electrical» فيجب أن تضيف رياضيات متقدمة مثل المعادلات التفاضلية والجبر الخطي والمتغيرات المركبة.

ولاحظ أن برنامج جامعة الملك عبدالعزيز اسمه «الهندسة الكهربائية (حاسبات)»، أي أن كلمة «electrical» في اسمه، فيطبق عليه شرط الرياضيات المتقدمة، وهذا يفسر لماذا خطته أثقل في الرياضيات من خطة جامعة الملك سعود كما سنرى بعد قليل.

تجربة عملية Lab: خطتا KSU وKAU بجانب CE2016

في ملف الخطط الذي جمعناه في مقال المقارنة خطتان لهندسة الحاسب: بكالوريوس هندسة الحاسب في جامعة الملك سعود KSU من صفحة البرنامج الجديد، وبكالوريوس الهندسة الكهربائية (حاسبات) في جامعة الملك عبدالعزيز KAU من صفحة البرنامج. وكتبنا برنامجاً بلغة Python يضع كل مادة إجبارية في أحد مجالات CE2016 الاثني عشر أو مجالات الرياضيات الأربعة، ويحول الساعات المعتمدة إلى ساعات محاضرة بطريقة التقرير نفسه، ويفحص معايير ABET، ثم يعد مقالات عرب رووت في كل مجال. والبرنامج يستخدم مكتبة Python الأساسية فقط.

البرنامج ce2016_plans.py

# Saudi computer engineering study plans against the CE2016 body of knowledge, and what ArabRoot covers of each area.
# Standard library only (Python 3.13). Usage, from this folder:
#   python ce2016_plans.py ../../tech-majors/lab/plans.json ../../../roadmap.json ../../schedule.json
import collections, json, re, sys

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

# ---------------------------------------------------------------- CE2016 numbers (Table 3.2 and Table 3.3, core lecture hours)
CE2016 = {"CAE": 50, "CAL": 30, "CAO": 60, "DIG": 50, "ESY": 40, "NWK": 20, "PPP": 20, "SEC": 20,
          "SGP": 30, "SPE": 35, "SRM": 20, "SWD": 45}                       # 420 hours
MATH = {"ACF": 30, "DSC": 30, "LAL": 30, "PRS": 30}                          # 120 hours
KAS, MKAS = list(CE2016), list(MATH)
HOURS_PER_CREDIT = 14   # CE2016 3.5: one credit = one 50-minute lecture a week for 14 weeks

# ---------------------------------------------------------------- keyword map: course title -> CE2016 area. FIRST match wins.
RULES = [
    ("PROJECT", r"graduation|senior project|co-?op|cooperative|internship|practical training|summer training|مشروع التخرج|التدريب"),
    ("PPP", r"ethic|seminar|engineering economy|engineering management|الأخلاقيات"),
    ("SEC", r"secur|cyber|cryptograph|أمن"),
    ("SPE", r"project management|engineering design|software engineering|requirement"),
    ("ESY", r"embedded|microprocessor|microcontroller|interfacing|robotics|المدمجة|المعالجات الدقيقة"),
    ("SGP", r"signal|control|introduction to communications|الإشارات|التحكم"),
    ("DIG", r"digital (logic|design)|logic design|المنطق الرقمي|التصميم الرقمي"),
    ("CAO", r"computer architecture|computer organi[sz]ation|عمارة الحاسب|تنظيم الحاسبات"),
    ("CAE", r"circuit|electronic|vlsi|electrical engineering technolog|الدوائر|الإلكترونيات"),
    ("NWK", r"network|data communication|الشبكات"),
    ("SRM", r"operating system|أنظمة التشغيل"),
    ("CAL", r"algorithm|الخوارزميات"),
    ("SWD", r"programming|data structure|database|object.oriented|البرمجة|هياكل البيانات"),
    ("ACF", r"calculus|differential|analytical methods|general mathematics|التفاضل|المعادلات"),
    ("DSC", r"discrete|المتقطعة"),
    ("LAL", r"linear algebra|numerical|الجبر الخطي|العددية"),
    ("PRS", r"probability|statistic|الاحتمالات|الإحصاء"),
    ("SCIENCE", r"physics|chemi|biology|الفيزياء|الكيمياء|الأحياء"),
]
GENERAL = (r"islam|quran|arabic|english|writing|communication skills|language & communication|university skills|it skills|fitness|health|culture|"
           r"entrepreneur|workforce|language|engineering graphics|اللغة|الثقافة")

def title(c): return f"{c.get('title_en') or ''} {c.get('title_ar') or ''}".strip()
def area(c):
    t = title(c).lower()
    if re.search(GENERAL, t) and not re.search(r"programm|network|data|secur|circuit|برمج", t):
        return "GENERAL"
    for name, rx in RULES:
        if re.search(rx, t):
            return name
    return "OTHER"
def is_slot(c): return bool(re.search(r"elective|اختياري", title(c), re.I))

UNI = {"King Saud": "KSU", "King Abdulaziz": "KAU"}
uni = lambda p: next(v for k, v in UNI.items() if p["university"].startswith(k))
plans = sorted([p for p in json.load(open(plans_file, encoding="utf-8")) if p["major_family"] == FAMILY], key=uni)

def count(courses):
    h, other = collections.Counter(), []
    for c in courses:
        a = area(c)
        if a == "GENERAL": continue
        h[a] += float(c["credits"] or 0)
        if a == "OTHER": other.append(title(c))
    return h, other

req = {uni(p): [c for c in p["courses"] if c["required"] and not is_slot(c)] for p in plans}
table = {}
print(f"== 1) required credit hours per CE2016 area, {len(plans)} {FAMILY} plans ==")
print("   (required = not an elective option or empty slot; GENERAL = university requirements, left out)")
for u, cs in req.items():
    table[u], other = count(cs)
    print(f"   {u}: {len(cs)} required courses; left as OTHER: {'; '.join(other) or 'none'}")
print(f"{'area':<9}" + "".join(f"{u:>7}" for u in req))
for a in KAS + MKAS + ["SCIENCE", "PROJECT", "OTHER"]:
    print(f"{a:<9}" + "".join(f"{table[u][a]:>7.0f}" for u in req))

print(f"\n== 2) approximate lecture hours (credits x {HOURS_PER_CREDIT}) against CE2016 core hours ==")
print(f"{'area':<6}{'core':>6}" + "".join(f"{u:>7}" for u in req) + "  below core in")
for a in KAS + MKAS:
    core = CE2016.get(a) or MATH[a]
    low = [u for u in req if table[u][a] * HOURS_PER_CREDIT < core]
    print(f"{a:<6}{core:>6}" + "".join(f"{table[u][a] * HOURS_PER_CREDIT:>7.0f}" for u in req) + "  " + " ".join(low))
for name, group, core in [("CE areas", KAS, 420), ("maths", MKAS, 120)]:
    print(f"{name:<9} core {core}: " + "  ".join(f"{u} {sum(table[u][a] for a in group) * HOURS_PER_CREDIT:.0f} h" for u in req))

# ---------------------------------------------------------------- 3) ABET (EAC) and the Saudi Council of Engineers minimums, by title
print("\n== 3) ABET electrical/computer program criteria and engineering minimums, checked on course titles ==")
CHECK = [("probability+statistics", r"probab|الاحتمالات"), ("differential+integral calculus", r"calculus|التفاضل"),
         ("discrete maths", r"discrete|المتقطعة"), ("physics", r"physics|الفيزياء")]
for u, cs in req.items():
    t = " ".join(title(c).lower() for c in cs)
    miss = [k for k, rx in CHECK if not re.search(rx, t)]
    h = table[u]
    ms = sum(h[a] for a in MKAS) + h["SCIENCE"]
    eng = sum(h[a] for a in KAS) + h["PROJECT"]
    print(f"{u:<5} missing: {', '.join(miss) or 'none':<5}  maths+science {ms:>3.0f} (ABET >=30, SCE >=32)  engineering+computing {eng:>3.0f} (ABET >=45, SCE >=48)")

# ---------------------------------------------------------------- 4) what if: count the courses the source page does not mark as required
print("\n== 4) what if: add courses that sit in the level plan but carry no category in the source ==")
for p in plans:
    u = uni(p)
    extra = [c for c in p["courses"] if not c["required"] and "not categorised" in (c.get("category") or "")]
    if not extra:
        print(f"{u:<5} none"); continue
    h, _ = count(req[u] + extra)
    print(f"{u:<5} + " + "; ".join(f"{c['code']} {c['title_en']} ({c['credits']} cr) -> {area(c)}" for c in extra))
    print("      " + "  ".join(f"{a}: {table[u][a]:.0f} -> {h[a]:.0f}" for a in KAS + MKAS if h[a] != table[u][a]))

# ---------------------------------------------------------------- 5) ArabRoot coverage per CE2016 area
COVER = {
    "CAE": ["stage:elec-start"],
    "CAL": ["algorithms-bigo", "graph-algorithms", "hash-tables"],
    "CAO": ["computer-components", "cpu-internals", "ram-internals"],
    "DIG": ["logic-gates", "number-systems", "floating-point"],
    "ESY": ["stage:elec-mcu", "stage:elec-firmware", "stage:elec-iot", "drone-basics"],
    "NWK": ["stage:network"],
    "PPP": ["breadth-hacker", "pdpl-hosting", "device-certification"],
    "SEC": ["stage:sec-start", "iot-security", "ot-security"],
    "SGP": ["compression-basics", "image-formats", "video-basics"],
    "SPE": ["requirements-engineering", "testing-types", "stage:elec-pcb"],
    "SRM": ["os-basics", "memory-basics", "cpu-concurrency", "threading"],
    "SWD": ["stage:programming-basics", "data-structures", "db-design", "design-principles"],
}
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 CE2016 area (published / not yet), from roadmap.json and schedule.json ==")
print(f"{'area':<6}{'pub':>5}{'later':>7}  published ids")
for a in KAS:
    pub, later = set(), set()
    for ref in COVER[a]:
        for it in (stages[ref[6:]] if ref.startswith("stage:") else [{"id": ref}]):
            i = it.get("id")
            if i is None: later.add(it.get("title")); continue
            if i not in known: raise SystemExit(f"unknown roadmap id {i}")
            if i in published: pub.add(i)
            elif not i.startswith("major-"): later.add(i)
    print(f"{a:<6}{len(pub):>5}{len(later):>7}  {', '.join(sorted(pub)) or '-'}")
elec = [it for s in json.load(open("../../../tracks.json", encoding="utf-8"))["tracks"] if s["id"] == "electronics" for st in s["stages"] for it in stages[st]]
print(f"electronics track: {sum(1 for it in elec if it.get('id') in published)} published of {len(elec)} items")

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

  • القاموسان CE2016 وMATH ينقلان الجدولين 3.2 و3.3 من التقرير، والثابت HOURS_PER_CREDIT قيمته 14 لأن التقرير يعرف الساعة المعتمدة بمحاضرة أسبوعياً لمدة 14 أسبوعاً.
  • القائمة RULES فيها كلمات عربية وإنجليزية معاً، لأن صفحة KAU تعرض العنوانين، والترتيب مقصود: الأنظمة المدمجة قبل معالجة الإشارات حتى لا تذهب مادة مثل «Digital Control & Robotics» إلى التحكم فقط، والتصميم الرقمي قبل الدوائر حتى لا تذهب «Digital Logic Design» إلى الدوائر.
  • الدالة count تجمع الساعات لأي قائمة مواد، ونستخدمها مرتين: مرة للمواد الإجبارية، ومرة في تجربة «ماذا لو» بعد إضافة مواد لا تصنفها صفحة الجامعة.
  • الجزء الخامس يعد مقالات كل مجال، ثم يطبع عدد المقالات المنشورة في مسار الإلكترونيات والأنظمة المدمجة كله.

وللتشغيل من مجلد lab:

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

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

== 1) required credit hours per CE2016 area, 2 CE plans ==
   (required = not an elective option or empty slot; GENERAL = university requirements, left out)
   KAU: 47 required courses; left as OTHER: none
   KSU: 45 required courses; left as OTHER: none
area         KAU    KSU
CAE           10     10
CAL            3      3
CAO            3      3
DIG            8      8
ESY            3      8
NWK            3      8
PPP            5      3
SEC            0      3
SGP            8      7
SPE            3      6
SRM            4      3
SWD           11     11
ACF           17     12
DSC            3      3
LAL            3      3
PRS            6      3
SCIENCE       15     12
PROJECT        6      7
OTHER          0      0

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

  • الجامعتان متطابقتان تقريباً في قلب التخصص: 10 ساعات للدوائر والإلكترونيات، و8 للتصميم الرقمي، و3 للمعمارية، و3 للخوارزميات، و11 لتصميم البرمجيات.
  • الفرق في الأطراف: KSU أقوى في الأنظمة المدمجة (8 مقابل 3) والشبكات (8 مقابل 3) وهندسة الأنظمة والمشاريع (6 مقابل 3)، وKAU أقوى في الرياضيات المتصلة (17 مقابل 12) والعلوم (15 مقابل 12) والممارسة المهنية (5 مقابل 3) لأن فيها الاقتصاد الهندسي وإدارة الهندسة.
  • أمن المعلومات صفر في KAU، أي لا توجد مادة أمن إجبارية رغم أن CE2016 يضعه في الجوهر بعشرين ساعة.
  • لم تبق أي مادة في OTHER، أي أن كل مادة وجدت لها مجالاً، وهذا لا يعني أن التصنيف بلا قرارات كما سنرى.
خريطة حرارية لاثني عشر مجالاً من CE2016 وأربعة مجالات رياضيات في عمودين لجامعة الملك عبدالعزيز وجامعة الملك سعود، وتظهر الدوائر 10 والتصميم الرقمي 8 وتصميم البرمجيات 11 متطابقة في الجامعتين، والأنظمة المدمجة 3 مقابل 8، والشبكات 3 مقابل 8، والأمن صفر في KAU، والتفاضل والمعادلات 17 مقابل 12
قلب التخصص متطابق في الجامعتين، والفرق في الأطراف

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

  • مادة أساسية خارج المواد الإجبارية: صفحة KAU تضع «Basic Electrical Circuits» و«Introduction to Engineering Design (2)» في الخطة الفصلية دون تصنيف، فسجلناهما في ملف الخطط كمواد غير مصنفة، وبالتالي لم يحسبهما الجدول الأول. ومادة الدوائر الأساسية لا يمكن أن تكون اختيارية في برنامج هندسة كهربائية، لذلك أضفنا تجربة «ماذا لو» تحسبهما.
  • مادة في مجالين: «Digital Control & Robotics» في KSU تجمع التحكم، وهو وحدة مكملة في معالجة الإشارات CE-SGP-11، والروبوتات وهي أقرب إلى الأنظمة المدمجة، ووضعناها في الأنظمة المدمجة لأن الروبوت نظام مدمج كامل. وكذلك «Data Structures and Algorithms» في KAU دخلت الخوارزميات، مع أن هياكل البيانات وحدة في تصميم البرمجيات CE-SWD-5.
  • كلمة عامة تبتلع مادة تقنية: في التشغيل الأول ذهبت مادة «Introduction to Communications» في KAU إلى المتطلبات العامة، لأن نمط المواد العامة كان يحتوي كلمة «communication» حتى يلتقط «Communication Skills»، فجعلنا النمط أدق.
  • عنوان لا يدل على محتواه: «General Mathematics (1)» في KAU متطلب جامعي، وكانت في البداية ضمن المواد العامة، ثم أعدناها إلى الرياضيات لأنها رياضيات جامعية يبنى عليها التفاضل 2 و3، فارتفع تحليل الدوال المتصلة في KAU من 14 إلى 17.
  • VLSI أين؟ CE2016 قلل تصميم الدوائر المتكاملة ودمجه في الدوائر والإلكترونيات، فوضعنا «Introduction to VLSI Design» في KSU تحت الدوائر والإلكترونيات، حيث وحدة دوائر ترانزستور MOS والتوقيت والطاقة.

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

== 2) approximate lecture hours (credits x 14) against CE2016 core hours ==
area    core    KAU    KSU  below core in
CAE       50    140    140  
CAL       30     42     42  
CAO       60     42     42  KAU KSU
DIG       50    112    112  
ESY       40     42    112  
NWK       20     42    112  
PPP       20     70     42  
SEC       20      0     42  KAU
SGP       30    112     98  
SPE       35     42     84  
SRM       20     56     42  
SWD       45    154    154  
ACF       30    238    168  
DSC       30     42     42  
LAL       30     42     42  
PRS       30     84     42  
CE areas  core 420: KAU 854 h  KSU 1022 h
maths     core 120: KAU 406 h  KSU 294 h

الجامعتان تعطيان مجالات هندسة الحاسب 854 و1022 ساعة تقريباً مقابل 420 في الجوهر، والرياضيات 406 و294 مقابل 120، أي أكثر من ضعف الحد الأدنى، وهذا ما يتوقعه التقرير من «البرامج القوية». ولكن مجالين يقعان تحت الجوهر: المعمارية والتنظيم في الجامعتين (42 ساعة تقريباً مقابل 60)، لأن الخطتين تضعان مادة معمارية واحدة بثلاث ساعات، وCE2016 يجعل المعمارية أكبر مجال فيه، والأمن في KAU (صفر مقابل 20). وهذان بالضبط ما تحتاج أن تكمله بنفسك أو بمادة اختيارية، فخطة KSU فيها اختيارياً «Computer Architecture II» و«Introduction to Computer Arithmetic»، والمواد الاختيارية في KAU فيها «Computer Interfacing».

رسم أشرطة لكل مجال من مجالات CE2016 ومجالات الرياضيات: شريط لساعات الجوهر وشريطان لجامعة الملك عبدالعزيز وجامعة الملك سعود، والأغلب أطول من الجوهر، ما عدا المعمارية والتنظيم 42 مقابل 60 في الجامعتين والأمن صفر مقابل 20 في KAU، وفي الأسفل المجموع 854 و1022 مقابل 420 والرياضيات 406 و294 مقابل 120
الخطتان ضعف الجوهر تقريباً، وتقصران في المعمارية وفي الأمن عند KAU

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

== 3) ABET electrical/computer program criteria and engineering minimums, checked on course titles ==
KAU   missing: none   maths+science  44 (ABET >=30, SCE >=32)  engineering+computing  67 (ABET >=45, SCE >=48)
KSU   missing: none   maths+science  33 (ABET >=30, SCE >=32)  engineering+computing  80 (ABET >=45, SCE >=48)

كل ما تذكره معايير البرامج الكهربائية والحاسوبية موجود بالاسم في الخطتين: الاحتمالات والإحصاء والتفاضل والتكامل والرياضيات المتقطعة والفيزياء. والرياضيات والعلوم 44 ساعة في KAU و33 في KSU، أي فوق 30 في ABET و32 في الهيئة السعودية للمهندسين في الحالتين، والمواضيع الهندسية والحاسوبية 67 و80، فوق 45 و48. وهذا فحص للعناوين بتصنيفنا، والحكم الرسمي للجهات المعتمدة.

ماذا يحدث إذا حسبنا ما لا تصنفه صفحة الجامعة؟

== 4) what if: add courses that sit in the level plan but carry no category in the source ==
KAU   + EE 250 Basic Electrical Circuits (4 cr) -> CAE; IE 202 Introduction to Engineering Design (2) (2 cr) -> SPE
      CAE: 10 -> 14  SPE: 3 -> 5
KSU   none

مع إضافة مادة الدوائر الأساسية ترتفع الدوائر والإلكترونيات في KAU من 10 إلى 14 ساعة، وهندسة الأنظمة والمشاريع من 3 إلى 5، فتصبح KAU أثقل من KSU في الدوائر، وهذا منطقي لبرنامج اسمه الهندسة الكهربائية. والدرس العملي لك: صفحة البرنامج على موقع الجامعة قد تكون ناقصة أو غير مصنفة، فإذا وجدت مادة أساسية في الخطة الفصلية ولا تجدها في قائمة المتطلبات، فاسأل القسم عن الخطة المعتمدة قبل أن تبني جدولك.

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

في دليل المهن من مكتب إحصاءات العمل الأمريكي الذي قرأناه في مقال المقارنة، كان مهندس عتاد الحاسب Computer Hardware Engineer من الوظائف القليلة التي يحدد لها الدليل تخصصاً بعينه: بكالوريوس هندسة الحاسب أو الهندسة الكهربائية. وفي استبيان Stack Overflow 2020 كان 15% من مطوري الأنظمة المدمجة من تخصصات هندسية أخرى غير الحوسبة، وهي أعلى نسبة بين الأدوار، أي أن العتاد هو المكان الذي تهم فيه الخلفية الهندسية فعلاً. هذه هي البوابة التي يفتحها لك تخصصك ولا يفتحها علوم الحاسب. أما ما ينقص الخطة فنستخرجه من التقرير نفسه، ومن المخرج:

  • المعمارية أقل من الجوهر: CE2016 يضع فيها 60 ساعة تشمل مجموعة التعليمات ISA وتنظيم المعالج وتنظيم الذاكرة والإدخال والإخراج والمعالجات متعددة الأنوية، والخطتان تعطيانها مادة واحدة. وهذا أساس كل عمل في تصميم المعالجات وتحسين الأداء.
  • الأمن غائب في KAU: CE2016 يضع فيه نقاط الضعف التقنية والبشرية ونماذج حماية الموارد، والأجهزة المتصلة بالشبكة هي اليوم من أكثر الأهداف تعرضاً. واقرأ دليل الأمن السيبراني لترى ما يدرسه طالب الأمن.
  • الأدوات والمعايير: كل مجال في CE2016 يبدأ بوحدة «الأدوات والمعايير والقيود الهندسية»، ولكن الخطة لا تقول لك أي أدوات. وفي العمل ستحتاج لغة وصف العتاد HDL، وأدوات المحاكاة، وبيئات تطوير المتحكمات، وأنظمة التشغيل الفورية RTOS، والتحكم بالإصدارات Git لكود العتاد والبرمجيات معاً.
  • البرمجيات بمستوى المهندس: تصميم البرمجيات 11 ساعة معتمدة في الجامعتين، أي برمجة وهياكل بيانات وبرمجة كائنية، ولكن اختبار البرمجيات وجودتها وحدة جوهر في CE2016 بخمس ساعات، ولا تظهر باسمها في أي من الخطتين. وفي سوق تكثر فيه وظائف البرمجيات، هذا أوسع باب يمكن أن يدخل منه مهندس الحاسب إذا أتقنه.

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

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

== 5) ArabRoot posts per CE2016 area (published / not yet), from roadmap.json and schedule.json ==
area    pub  later  published ids
CAE       0      5  -
CAL       1      2  algorithms-bigo
CAO       2      1  cpu-internals, ram-internals
DIG       2      1  floating-point, number-systems
ESY       1     18  drone-basics
NWK       8      8  certificates, dns-records, http-basics, internet-connection, katas-network, nat-explained, sni-san-certs, subnets-cidr
PPP       2      1  breadth-hacker, pdpl-hosting
SEC      13      2  common-attacks, cyber-internship-plan, katas-security, major-cyber-guide, mitre-attack, security-basics, security-careers, security-history, security-oss-alternatives, security-prerequisites, security-terms, small-org-security, threat-modeling
SGP       3      0  compression-basics, image-formats, video-basics
SPE       2      4  requirements-engineering, testing-types
SRM       3      1  cpu-concurrency, memory-basics, threading
SWD       6      4  cpu-concurrency, data-structures, db-design, design-principles, git-basics, memory-basics
electronics track: 0 published of 31 items

هنا يجب أن نكون صادقين معك: مسار الإلكترونيات والأنظمة المدمجة في عرب رووت فيه 31 عنصراً، ولم ينشر منها شيء قبل هذا المقال، فالدوائر والإلكترونيات صفر، والأنظمة المدمجة مقال واحد عن الطائرات المسيرة يشرح مكوناتها، و18 مقالاً مخططاً من Arduino وESP32 إلى RTOS وKiCad. أما الجانب الحاسوبي من التخصص فمغطى بشكل أفضل: الشبكات 8 مقالات، والأمن 13، وتصميم البرمجيات 6، والمعالج والذاكرة مقالان. والجدول التالي يجمع ما تقرؤه الآن، وما تنتظره، وما تتعلمه من مصادر أخرى حتى ننشره:

المجالابدأ منما زال ناقصاً في عرب رووت
CAE الدوائر والإلكترونياتلا يوجد بعدالجهد والتيار وقانون أوم، والقطع الأساسية، ولوحة التجارب والمقياس المتعدد، وقراءة Datasheet، والمحاكيات (مخططة)
DIG التصميم الرقميالأنظمة العددية للمبرمجين، Floating Point من الداخلمن الترانزستور إلى البوابات المنطقية (مخطط)، ولغات وصف العتاد HDL (لا يوجد بعد)
CAO المعمارية والتنظيمكيف يعمل المعالج CPU، كيف تعمل الذاكرة RAM، Hello World من الداخلمكونات الحاسب (مخطط)
ESY الأنظمة المدمجةالطائرات المسيرة للمبتدئينArduino وGPIO وPWM وADC، وI2C وSPI وUART، وESP32، ولغة C للأنظمة المدمجة، وRTOS، وإنترنت الأشياء (مخططة)
SGP معالجة الإشاراتكيف يعمل ضغط البيانات، مفاهيم الفيديو، صيغ الصورأساسيات الإشارات والتحويلات والمرشحات (لا يوجد بعد)
SRM إدارة موارد النظامالذاكرة للمبرمجين، التزامن والخيوط، Threads وasync/awaitما هو نظام التشغيل (مخطط)، وأنظمة التشغيل الفورية (مخطط)
NWK الشبكاتكيف يصل الإنترنت إلى بيتك، Subnets وCIDR، شرح DNS، تمارين Kata في الشبكاتنموذج OSI وTCP/IP، وبروتوكول MQTT للأجهزة (مخططان)
SEC أمن المعلوماتما هو الأمن السيبراني؟، نمذجة التهديدات، دليل تخصص الأمن السيبرانيأمن إنترنت الأشياء وأمن التقنية التشغيلية OT (مخططان)
SWD تصميم البرمجياتهياكل البيانات، مبادئ التصميم، Git للمبتدئينأساسيات البرمجة للمبتدئ (مخططة)
CAL الخوارزمياتBig-O للمبتدئينجداول الهاش وخوارزميات الرسوم البيانية (مخططة)
SPE هندسة الأنظمة والمشاريعهندسة المتطلبات، أنواع الاختباراتKiCad وتصميم اللوحات وتصنيعها، ومطابقة الأجهزة قبل البيع في السعودية (مخططة)
PPP الممارسة المهنيةالمهندس الشامل، حماية البيانات الشخصية PDPLالملكية الفكرية والعتاد المفتوح (لا يوجد بعد)
خريطة لمجالات CE2016 الاثني عشر مقسومة إلى جهة العتاد وجهة البرمجيات، ولكل مجال شارة خضراء للمنشور وشارة رمادية للمخطط، وجهة العتاد شبه فارغة: الدوائر صفر، والأنظمة المدمجة واحد مقابل 18 مخططاً، والمعمارية 2، والتصميم الرقمي 2، بينما جهة البرمجيات أفضل: الأمن 13 والشبكات 8 وتصميم البرمجيات 6، وفي الأسفل مسار الإلكترونيات صفر منشور من 31 عنصراً
الجهة البرمجية من التخصص مغطاة، وجهة العتاد ما زالت تنتظر مسار الإلكترونيات

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

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

الفصلمواد الخطة غالباًاقرأ معهاأضف بيدك
1 و2التفاضل، الفيزياء، البرمجة 1 و2Hello World من الداخل، الأنظمة العدديةGit لكل واجب، ومحاكي دوائر على الإنترنت
3الدوائر الكهربائية، الرياضيات المتقطعة، هياكل البياناتهياكل البيانات، Floating Pointلوحة تجارب ومقياس متعدد، وقياس كل دائرة تحسبها
4التصميم الرقمي 1، المعادلات التفاضلية، الإلكترونياتالمعالج من الداخللغة وصف عتاد ومحاكاة دائرة رقمية صغيرة
5التصميم الرقمي 2، المعمارية، الإشارات والأنظمة، أنظمة التشغيلالذاكرة RAM، Stack وHeap، ضغط البياناتمعالج بسيط تبنيه في المحاكاة، وقراءة مجموعة تعليمات حقيقية
6الأنظمة المدمجة، الاتصالات، الشبكاتكيف يصل الإنترنت، Subnets، التزامنمشروع متحكم دقيق بحساس يرسل قراءاته عبر الشبكة
7التحكم، الأمن، معالجة الإشارات الرقمية، المشروع 1الأمن السيبراني، نمذجة التهديداتاختبارات للبرمجيات المدمجة، وتأمين جهازك على الشبكة
8المشروع 2، إدارة الهندسة، التدريبهندسة المتطلبات، أنواع الاختباراتنظام كامل عتاداً وبرمجيات بتوثيق تصميمه، كما يطلب CE2016
خط زمني من ثمانية فصول لطالب هندسة الحاسب، في كل فصل بطاقة بمواد الخطة غالباً وما يقرؤه من عرب رووت وما يضيفه بيده: محاكي دوائر، ثم لوحة تجارب ومقياس متعدد، ثم لغة وصف عتاد، ثم معالج في المحاكاة، ثم مشروع متحكم دقيق متصل بالشبكة، ثم اختبارات وتأمين، ثم نظام كامل موثق
في هندسة الحاسب نصف التعلم على طاولة المختبر

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

  • اعتبار مواد الكهرباء والإشارات «خارج التخصص»: CE2016 يعتبر الدوائر والإشارات جزءاً من الجوهر، وهي ما يجعلك تفهم الجهاز الذي يعمل عليه الكود، وهذا ما لا يفهمه خريج علوم الحاسب.
  • الهروب الكامل إلى البرمجيات دون إتقانها: إذا قررت العمل في البرمجيات فأتقن الاختبار والجودة والأدوات، لأن الخطة تعطيك البرمجة دون هذه الممارسات، واقرأ دليل هندسة البرمجيات.
  • الاكتفاء بمادة معمارية واحدة: هي أكبر مجال في CE2016 وأقل من الجوهر في الخطتين، فاختر مادة معمارية متقدمة إن وجدت.
  • المختبر للدرجة فقط: التقرير يجعل المختبر وتجارب التصميم من مبادئه الأساسية، ومن يمر على المختبر دون أن يفهم القياس لا يستطيع تشخيص جهاز معطل.
  • تجاهل الأمن في الأجهزة: الجهاز المتصل بالشبكة جهاز معرض للهجوم، وCE2016 جعل الأمن مجالاً مستقلاً.
  • مشروع تخرج برمجي بحت: التقرير يطلب نظاماً يجمع العتاد والبرمجيات، وهذا ما يميز سيرتك الذاتية عن خريج علوم الحاسب.
  • تصديق صفحة البرنامج دون الخطة المعتمدة: رأينا مادة الدوائر الأساسية بلا تصنيف في صفحة KAU.

قائمة تحقق Checklist لطالب هندسة الحاسب

  • اقرأ الجدول 3.2 في CE2016 وصنف موادك على المجالات الاثني عشر.
  • تأكد أن لديك ما يكفي في المعمارية والأمن، وإن لم يكن فاختر مادة اختيارية أو تعلم ذاتياً.
  • اسأل القسم عن اعتماد البرنامج من ABET EAC ومتطلبات التسجيل في الهيئة السعودية للمهندسين.
  • اشتر لوحة تجارب ومتحكماً دقيقاً ومقياساً متعدداً من السنة الثانية، وابن شيئاً كل فصل.
  • تعلم لغة وصف عتاد وأداة محاكاة قبل مادة التصميم الرقمي 2.
  • استخدم Git لكود العتاد والبرمجيات، واكتب اختبارات لبرمجياتك المدمجة.
  • اجعل مشروع التخرج نظاماً كاملاً عتاداً وبرمجيات، بتوثيق تصميم.
  • ابحث عن تدريب في شركة عتاد أو اتصالات أو أنظمة صناعية، لأن التدريب الصيفي في الخطة قصير.

الخلاصة

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

  • CE2016 من ACM وIEEE-CS بتاريخ 15 ديسمبر 2016، وهو تحديث CE2004، ولم نجد نسخة أحدث حتى أكتوبر 2026.
  • جسم المعرفة اثنا عشر مجالاً بـ 420 ساعة جوهر، أي سنة دراسية، ومعها 120 ساعة رياضيات في أربعة مجالات منها التفاضل والجبر الخطي.
  • ما يميز مهندس الحاسب القدرة على تصميم أنظمة تجمع العتاد والبرمجيات، وهذا مستوى أعلى من التركيب والإعداد.
  • ABET تطلب لبرامج الحاسب الهندسية الاحتمالات والإحصاء والتفاضل والعلوم والرياضيات المتقطعة، والبرامج التي اسمها «كهربائية» رياضيات متقدمة أكثر.
  • في خطتي KSU وKAU قلب التخصص متطابق، والمعمارية أقل من الجوهر في الاثنتين، والأمن غائب في KAU، وصفحة KAU لا تصنف مادة الدوائر الأساسية.
  • مسار الإلكترونيات في عرب رووت ما زال في بدايته، والجانب الحاسوبي من التخصص مغطى بمقالات الشبكات والأمن والبرمجة والمعالج.

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

دليلأي تخصص تقني تختار؟ ما تدرسه فعلاً وأين تعمل بعدهماذا تدرس فعلاً في كل تخصص تقني بحسب الخطط الدراسية السعودية، وأين يعمل خريجوه، ومتى يهم اسم التخصص ومتى تهم المهارة.دليلكيف يعمل المعالج CPU من الداخل ولماذا يهمك ذلكنتابع تعليمة واحدة داخل نواة المعالج، ونرى لماذا يصبح نفس الكود أبطأ بعشر مرات عندما تغير ترتيب المرور على البيانات.دليلكيف تعمل الذاكرة RAM من الداخل، ولماذا تحتاج التحديث Refreshنفتح وحدة الذاكرة من الشريحة إلى الخلية، لتفهم ما تعنيه الأرقام المكتوبة عليها عندما تشتري جهازاً أو تختار سيرفراً.دليلماذا يحدث عندما تشغل برنامج Hello World؟نتتبع برنامج C صغيراً من المحرر إلى الشاشة، فترى كل طبقة يمر بها في الجهاز حتى تظهر الجملة أمامك.دليلالأنظمة العددية للمبرمجين: من Binary إلى Floating Pointلماذا يظهر القرص 465 بدل 500، ويصبح العداد سالباً فجأة، ولا يساوي 0.1 + 0.2 القيمة 0.3؟ الإجابة في طريقة تخزين الأرقام.دليلالطائرات المسيرة للمبتدئين: كيف تطير ومم تتكونكيف تقف الطائرة المسيرة في الهواء وتميل وتدور بتغيير سرعة محركاتها فقط، ومم تتكون، وأي نوع يناسب أي عمل.دليلتخصص علوم الحاسب Computer Science: منهج CS2023 ومواد الجامعةلماذا وضعت كل مادة في خطة علوم الحاسب بحسب منهج CS2023، وأين تقصر خطط الجامعات السعودية، وكيف تكمل ما ينقصك بنفسك.دليلتخصص هندسة البرمجيات Software Engineering: منهج SE2014ما الذي يجعل المبرمج مهندساً بحسب منهج SE2014 ودليل SWEBOK، وماذا تعطيك خطط الجامعات السعودية منه، وكيف تكمل الباقي بنفسك.

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

  • أكتوبر 2026: كتابة المقال، وقراءة CE2016 (15 ديسمبر 2016) ومعايير ABET لبرامج الهندسة 2026-2027، وتشغيل البرنامج ce2016_plans.py على Python 3.13 على خطتي هندسة الحاسب في KSU وKAU من ملف خطط مقال المقارنة.
Could not load content
نشرة عرب رووت | ArabRoot

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

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

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

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