
Description of the course:
This course introduces the major programming paradigms that have shaped modern software development. Students will study imperative, object-oriented, functional, logic, descriptive, concurrent, reactive, and emerging paradigms, understand their theoretical foundations, compare their strengths and limitations, and learn to select the most appropriate paradigm for solving different classes of software engineering problems. Practical programming exercises will expose students to several programming languages representing different paradigms
Target Audience
First-year Master’s students (M1), Software Engineering specialization
Objectives
By the end of this course, students will be able to:
- Explain the theoretical foundations of the main programming paradigms.
- Identify and describe the key concepts specific to each paradigm, including imperative, object-oriented, functional, and logic programming.
- Analyze a given problem and compare the suitability of different programming paradigms for solving it.
- Justify and select the most appropriate programming paradigm according to the context, constraints, and requirements of a given problem.
- Apply and implement programming solutions using different languages and programming styles associated with each paradigm.
وصف المقياس
يقدّم هذا المقياس مقدمة حول أهم نماذج البرمجة (Programming Paradigms) التي أسهمت في تشكيل وتطوير هندسة البرمجيات الحديثة. يتعرّف الطلبة على نماذج البرمجة الإجرائية/الضرورية (Imperative)، الموجّهة للكائنات (Object-Oriented)، الوظيفية (Functional)، المنطقية (Logic)، الوصفية (Descriptive)، المتزامنة (Concurrent)، التفاعلية (Reactive)، بالإضافة إلى بعض النماذج البرمجية الناشئة.
كما يدرس الطلبة الأسس النظرية لهذه النماذج، ويقارنون بين مزاياها وحدودها، ويتعلمون كيفية اختيار نموذج البرمجة الأنسب لحل أصناف مختلفة من مشكلات هندسة البرمجيات. وتتيح التمارين التطبيقية للطلبة التعامل مع عدة لغات برمجة تمثل نماذج وأساليب برمجية مختلفة.
الفئة المستهدفة
طلبة السنة الأولى ماستر (M1)، تخصص هندسة البرمجيات (Software Engineering).
الأهداف
في نهاية هذا المقياس، سيكون الطالب قادرًا على:
-
شرح الأسس النظرية لأهم نماذج البرمجة.
-
تحديد ووصف المفاهيم الأساسية الخاصة بكل نموذج، بما في ذلك البرمجة الضرورية، والموجّهة للكائنات، والوظيفية، والمنطقية.
-
تحليل مشكلة معينة ومقارنة مدى ملاءمة نماذج البرمجة المختلفة لحلها.
-
تبرير واختيار نموذج البرمجة الأنسب وفقًا للسياق والقيود والمتطلبات الخاصة بالمشكلة المطروحة.
-
تطبيق وتنفيذ حلول برمجية باستخدام لغات برمجة وأساليب مختلفة مرتبطة بكل نموذج برمجي.
- معلم: Nawel Boukhari