أولا: هندسة الحاسب (Computer Engineering)
تتعامل مع تصميم و تطوير و تشغيل أنظمة التشغيل للأجهزة الرقمية عامة. و الأجهزة الرقمية هي أي جهاز مكون معالج (processor) و ذاكرة (memory) و دائرة كهربائية (electric circuit) ، مثل الكمبيوتر المنزلي أو الجوال ، أو حتى أجهزة ثانوية مثل كرت الشاشة و الشبكة المرتبط بجهاز الكمبيوتر المنزلي.
الفرق الأساسي بين هندسة الحاسب وبين هندسة البرمجيات و علوم الحاسب أنها تركز على حل المشكلات ببرمجة الهاردوير (digital hardware).
ثانيا: علوم الحاسب (Computer Science)
تركز على فهم و تصميم و تطوير البرامج. كما تهتم بالبيانات (data) و بنيتها (data structures)وطرق تخزينها و نقلها و على طرق الحساب (algorithms) و طرق البرمجة و مفاهيم الشبكات و الاتصال و نقل المعلومات.
مجال علوم الحاسب غير متخصص و مركّز كهندسة البرمجيات أو هندسة الحاسب فهي مجموعة من العلوم المتخصصة بالحاسب في مجالاتٍ عدة. لذلك هي تتيح مجال أوسع للطالب لبناء تطبيقات في مجالات مختلفة.
ثالثا: هندسة البرمجيات (Software Engineering)
تتعامل مع بناء و صيانة البرامج و أنظمتها. والبرامج هنا هي البرامج الكبيرة أو الضخمة كبرامج إدارة الشركات و المصانع أو أنظمة التشغيل. هندسة البرمجيات أكثر طبيقية و تخصصاً من علوم الحاسب فهي “هندسة” أي تتضمن جمع المعلومات و تحليلها و إيجاد الحلول و تصميمها بطرق علمية ثم البرمجة و إنتاج البرنامج ثم صيانته و تطويره أكثر و أكثر. مع الأخذ في الاعتبار في جميع المراحل السابقة بالتكلفة الإجمالية للبرنامج و ما يلحقه من تطويرات و تغييرات. كما تركز في أمن البرنامج (security) و قوة الاعتماد عليه (reliability). فهي تركز على عميلة بناء برامج ذات جودة عالية جدا (high quality programs) ، من بداية الفكرة إلى المنتج نهائي.
بالإضافة إلى الفرق السابق بين علوم الحاسب و هندسة البرمجيات:
قيل أن”العالِم يبني لكي يتعلم، أما المهندس فإنه يتعلم لكي يبني”.