علوم الكمبيوتر مقابل هندسة البرمجيات - ما التخصص الأفضل بالنسبة لك؟

مرحبا جميعا! اسمي YK ، وأدير حاليًا قناة CS Dojo ، وهي قناة YouTube لتعليم البرمجة تضم أكثر من 200000 مشترك. كنت أيضًا مطور برامج سابقًا في Google.

اثنان من أكثر الأسئلة التي يطرحها جمهوري شيوعًا هما:

"ما الفرق بين تخصصات علوم الكمبيوتر وهندسة البرمجيات؟"

و ...

"هل يجب أن أختار علوم الكمبيوتر أو هندسة البرمجيات إذا أردت أن أصبح مهندس برمجيات؟"

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

نظرة عامة سريعة على هذين التخصصين

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

لفهم الاختلاف بين تخصصات علوم الكمبيوتر وهندسة البرمجيات ، دعنا نلقي نظرة على مناهج كل منهما في جامعة واترلو في كندا.

اخترت جامعة واترلو لهذا الغرض لأنها تمتلك أحد أفضل برامج علوم الكمبيوتر في أمريكا الشمالية.

فرص عمل

دعنا أولاً نقارن أنواع الوظائف والتدريب الداخلي التي يمكنك الحصول عليها من خلال كل برنامج.

لحسن الحظ ، يقدم موقع جامعة واترلو العديد من الأمثلة.

فيما يلي بعض العناوين التي يحملها الخريجون لكل تخصص ومكان عملهم:

علوم الكومبيوتر

  • مطور ويب / مهندس معماري ، مجموعة ستيل
  • مبرمج ، Harry Rosen Inc.
  • مطور الأجهزة المحمولة / السحابية ، Clearbridge Associates Limited
  • هندسة البرمجيات ، جنرال ديناميكس كندا
  • هندسة تطوير البرمجيات ، مايكروسوفت
  • مهندس رشيق ، مختبرات بيفوتال
  • محلل أعمال ، شركة Canadian Tire Corporation
  • محامي المطور ، جوجل
  • مدير المنتج ، Dropbox

هندسة البرمجيات

  • مطور برامج ، شركة Tagged Inc
  • مطور برامج ، IBM Canada
  • مدير البرمجيات ، Arius Software Corporation
  • مهندس برمجيات ، VistaPrint الولايات المتحدة الأمريكية
  • مهندس برمجيات ، شركة هاريس
  • مطور برامج ، شركة Accenture Inc.
  • مدير المنتج التقني - تصميم وتطوير البرمجيات ، NexJ Systems Inc
  • مستشار ، شركة PureFacts للحلول المالية
  • مستشار التنفيذ ، Desire2Learn

كما ترى ، لا يوجد فرق كبير بين أنواع الوظائف التي يمكنك الحصول عليها.

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

هناك خيارات أخرى ذات صلة أيضًا ، مثل مدير المنتج ومحلل ضمان الجودة ومستشار التكنولوجيا. ستعتمد خياراتك على مجموعة المهارات الخاصة بك.

دورات السنة الأولى:

الآن ، دعنا نلقي نظرة على الدورات التدريبية المطلوبة لكل برنامج. دعنا نقارن أولاً بعض الدورات التي تحتاج إلى الالتحاق بها في السنة الأولى.

علوم الكومبيوتر

  • CS 135 - تصميم البرامج الوظيفية
  • CS 136 - تصميم الخوارزمية واستخراج البيانات
  • رياضيات 135 - الجبر
  • رياضيات 136 - الجبر الخطي 1
  • 137 ريض - حساب التفاضل والتكامل 1
  • رياضيات 138 - حساب التفاضل والتكامل 2
  • بالإضافة إلى عدد قليل من الاختيارية

هندسة البرمجيات

  • CS 137 - مبادئ البرمجة
  • CS 138 - استخراج البيانات وتنفيذها
  • 115 ريض - الجبر الخطي للهندسة
  • 117 ريض - حساب التفاضل والتكامل 1 للهندسة
  • 119 ريض - حساب التفاضل والتكامل 2 للهندسة
  • رياضيات 135 - الجبر مع مرتبة الشرف في الرياضيات
  • ECE 105 - فيزياء الهندسة الكهربائية 1
  • ECE 106 - الكهرباء والمغناطيسية
  • ECE 124 - الدوائر والأنظمة الرقمية
  • ECE 140 - الدوائر الخطية
  • SE 101 - طرق هندسة البرمجيات

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

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

الدورات بعد السنة الأولى:

ماذا عن المقررات المطلوبة والاختيارية بعد السنة الأولى؟ دعنا نلقي نظرة على عدة أمثلة هنا:

علوم الكومبيوتر:

  • رياضيات 239 مقدمة في التوافقية
  • احتمالية STAT 230
  • إحصائيات STAT 231
  • CS 240 هياكل البيانات وإدارة البيانات
  • 241 أسس البرامج المتسلسلة
  • CS 245 المنطق والحساب
  • CS 246 Object-Oriented Software Development <- غير مطلوب لتخصصات هندسة البرمجيات
  • CS 251 تنظيم الكمبيوتر وتصميمه
  • خوارزميات CS 341
  • أنظمة تشغيل CS 350
  • بالإضافة إلى العديد من المواد الاختيارية في علوم الكمبيوتر

هندسة البرمجيات:

  • 102 هكم الكيمياء للمهندسين
  • أجهزة الكمبيوتر الرقمية ECE 222 (بما في ذلك لغة التجميع)
  • شبكات الكمبيوتر ECE 358
  • MATH 213 الرياضيات المتقدمة لمهندسي البرمجيات
  • رياضيات 239 مقدمة في التوافقية
  • إحصائيات STAT 206 لهندسة البرمجيات
  • MSCI 261 الاقتصاد الهندسي: الإدارة المالية للمهندسين
  • 241 أسس البرامج المتسلسلة
  • CS 240 هياكل البيانات وإدارة البيانات
  • 247 CS مبادئ هندسة البرمجيات <- غير مطلوب لتخصصات علوم الحاسب
  • خوارزميات CS 341
  • واجهات المستخدم CS 349 <- غير مطلوبة لتخصصات علوم الكمبيوتر
  • CS 343 البرمجة المتزامنة والمتوازية <- غير مطلوبة لتخصصات علوم الكمبيوتر
  • 348 عال - مقدمة في إدارة قواعد البيانات
  • SE 212 المنطق والحساب
  • أنظمة تشغيل SE 350
  • SE 465 اختبار البرمجيات وضمان الجودة
  • SE 464 تصميم وبرمجيات معمارية
  • مواصفات وتحليل متطلبات البرمجيات SE 463
  • SE 490 مشروع تصميم
  • بالإضافة إلى بعض المواد الاختيارية في علوم الكمبيوتر والهندسة الكهربائية

لقد قدمت لك الكثير من المعلومات لاستيعابها هنا. لكن هذا ملخصي:

عندما يتعلق الأمر بمتطلبات الرياضيات والإحصاء ، فإن علوم الكمبيوتر وهندسة البرمجيات متطابقة تقريبًا. وهي تغطي التوافقية والاحتمالات والإحصاء.

متطلبات علوم الكمبيوتر الأساسية متشابهة أيضًا ، وتتراوح بين الخوارزميات وهياكل البيانات وأنظمة التشغيل.

الفرق الرئيسي هو أن:

  • هندسة البرمجيات لديها متطلبات أكثر في أساسيات الهندسة الكهربائية وهندسة البرمجيات ، مثل اختبار البرمجيات والتصميم ومواصفات متطلبات البرامج.
  • تسمح علوم الكمبيوتر بمزيد من المواد الاختيارية في دورات علوم الكمبيوتر عالية المستوى. يمكنك الاختيار من بين مجموعة واسعة من الموضوعات مثل الأمان وأساسيات هندسة البرمجيات ورؤية الكمبيوتر والتعلم الآلي وإدارة قواعد البيانات.

إذن ، أي تخصص يجب أن تختار؟

أعتقد أنه يعتمد في الغالب على تفضيلاتك. بالمختصر:

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

لكن انتظر - ما هو إذن؟ أي تخصص أفضل إذا كنت تريد أن تصبح مهندس برمجيات؟

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

فقط من أجل البساطة ، دعنا نفترض أنك تأمل في الحصول على واحدة من الوظائف الأعلى أجراً (حوالي 100000 دولار أمريكي / سنويًا) كمهندس برمجيات في أمريكا الشمالية. عادةً ما تكون هذه الوظائف في شركات برمجيات كبيرة (مثل Microsoft و Google و Amazon وما إلى ذلك) أو في شركات متوسطة الحجم وعالية النمو (مثل Dropbox و Lyft و Snapchat و Pinterest وما إلى ذلك)

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

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

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

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

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

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

بعض الملاحظات

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

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

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

وإليك المصادر الرئيسية التي استخدمتها:

  • علوم الكمبيوتر في واترلو
  • هندسة البرمجيات في واترلو

شكرًا على القراءة ، ونتمنى لك التوفيق في اختيار الجامعة وتخصصك! ؟