Software Engineering

About Software Engineering

The department of software engineering aims to meet the growing need for professionals working in software development, with special attention to large and critical systems.
This department aims to develop the practical and analytical skills required by students to develop powerful and effective software manufacturing systems in the medical, industrial, service and business management applications. Students (both individually and collectively) will gain timely experience and the ability to deal effectively with programming methods and tools.

Vision of the department

To be a leader in delivering an edge cutting education, research, and educational products in the field of software engineering at the local and regional levels.

Mission of the department

Graduate students with ample knowledge and skills required to produce and deliver high-quality software systems.

Department Objectives

  • Equip graduates with sufficient knowledge and skills to become qualified software engineers.
  • Establish productive partnerships with the local community to continually improve the perception of locally produced software.
  • Make a sizable contribution to the research effort in the field of software engineering.

Program Educational Objectives

  1. Acquire student with knowledge, intellectual, practical, and professional software engineering and development skills.
  2. Acquire and empower student to master a variety of modern programming languages and methods.
  3. Acquire student with the knowledge, intellectual, practical, and professional skills to design and implement databases.
  4. Acquire student with the knowledge, intellectual, practical, and professional skills that support information technology.
  5. Acquire the student with knowledge, intellectual skills in professional ethical principles, scientific research, and lifelong learning.


At the time of graduation, it is intended that the graduate of the program will know or be able to:
  1. Use sufficient practical, professional knowledge and skills for software development, and has an adequate understanding of software development methodologies, with the ability to choose the appropriate methodology for different software projects according to the required quality standards.
  2. Can effectively contribute to software development projects using different programming languages ​​and algorithms.
  3. Design, implement, monitor, and supervise various database projects.
  4. Use practical and professional knowledge and skills in information technology.
  5. Recognize the need for lifelong learning and self-development and has the ability to communicate effectively and conduct scientific research, with an understanding and appreciation of professional and ethical responsibility.

Program Educational Objectives

  • Apply knowledge of science, mathematics, and engineering.
  • Apply software engineering practices over the entire system life cycle.
  • Describe different software engineering process models, with the ability to select appropriate process model for software projects.
  • Apply basic software quality assurance practices to assure that software specifications, designs, implementation, and maintenance meet the relevant standards.
  • Prepare the necessary documents required during the project development phases.
  • Contribute to project discussions, presentations, and reviews.
  • Recognition of the need for, and an ability to engage in life-long learning.
  • Communicate effectively with an understanding of professional and ethical responsibility.

Study Plan

Courses Description

Prerequisite: 61252
This course is important as it presents key principles and concepts of software engineering and gives a solid foundation for other courses in this area. The course covers the most important definitions and concepts in software engineering, software life cycle and processes, fundamentals, Software development from problem specification and requirements engineering through design, implementation, testing, and maintenance; introduction to rapid and extreme programming – fundamentals of modelling and design – fundamentals of project management, costing of software, change management and software quality assurance. Introduction to ethics and professional practice of software engineering, in a collective project on the software life cycle and using specialized software tools.

Prerequisites: 61252
This course will introduce the topic of Information Systems (IS) and discuss how organizations use information systems to support for a variety of tasks ranging from basic day to day activities to creating competitive advantage in the market place. Topics such as foundation of information systems, e-business, competitive advantage with information systems, IT infrastructure, communication and networks, information system development, databases and information management, improving decision making and managing knowledge, enterprise applications, securing information systems, ethical and social issues in information systems.

Prerequisites: 62152
This course introduces the main concepts of data structures. Topics covered: concepts of Abstract Data Types (ADT), specification of different data structures such as: (Lists, Stacks, Queues, Dictionaries, and Trees) as ADT, different implementations using an object oriented approach, algorithms analysis in terms of time and size for the different implementations. Recursion as problem solving technique and a brief introduction to graphs is also covered.

Prerequisite: 61254
This course provides an introduction to hardware and software aspects of computer architecture. Topics covered: Computer structures and their types, instructions’ set architecture, arithmetic logic unit, control unit, buses, control signals and statements, memory hierarchy, computer performance measurement, enhancing performance with pipelining. Connecting and interfacing I/O devices to CPU.

Prerequisite: —-
This is course in physics designed to emphasize the experimental laws of physical science. Topics to be covered include mechanics, heat, wave motion and sound, electricity and magnetism, optics, and modern physics. In the computer lab portion of the course, students will perform some programs of experiments and analyze the results based on physical law.

Prerequisite: 62137
This course introduces the various concepts of Requirements Engineering. Topics covered include: Essential topics of the variant requirements analysis phases, problem analysis, Prototyping the Requirements, Trawling for Requirements, Scenarios, Writing the Requirements, Reviewing the Specification, Requirements Reusing, Requirements Quality Gateway and risk analysis. A Requirements Specification Template as a standard and guideline in producing the Requirement Specification document. The ethical behavior of software analysis will be discussed when the requirements are combined with the stakeholders. Students participate in a collective project in software requirements engineering.

Prerequisite: 62137

This course is aimed at software analysts, designers and developers who already understand the Software development Life Cycle (SDLC). It provides knowledge and practice in the object-oriented analysis and design activities of software engineering. Topics covered: Unified process model, Requirement Engineering using scenarios and use cases, object oriented analysis models (Class diagram, activity diagram, sequence diagram), introduction to object oriented design models, changing the design to code. Practical sessions using CASE tools also provided. Through exercises and group work, students first perform Object Oriented Analysis (OOA) to produce a conceptual model of existing information using case studies to identify actors and primary use cases for documentation. Using Object Oriented Design (OOD) students learn how to identify classes and build the domain model.

Prerequisite: 61151
This course provides a discussion of legal and ethical issues faced by computing professionals. These issues will be framed in terms of what it means to be a computing professional with topics such as responsibilities, ongoing professional development, and social involvement. The course will use the students’ prior experiences in software development as a framework by demonstrating lecture concepts through coding examples and technical situations. State and national laws pertaining to computing will be presented. Students will be required to give and justify opinions about given computing situations. Students will also present an opinion to the class about one specific software development issue.

Prerequisite: 63150
This course introduces students to the topics of information technology ethics including: definitions, rules & policies of computer ethics, hacking, viruses, Internet ethics, freedom of expression on the Internet, computer professionals and social responsibilities, software copyright, intellectual property, software piracy, cyber law and privacy & security of computerized information.

Prerequisite: 63251
The program covers ethical and professional behavior that software engineers must adhere to in order to perform their duties and succeed in their mission. The in-depth ethics of IEEE-CS / ACM software engineering are covered with respect for the public interest, customers, employer, product, governance, management, profession, colleagues, and self. As well as other aspects related to the professional practice of software engineering such as group dynamics, teamwork and interaction with stakeholders, effective communication and presentation skills, the economic impact of software, professional associations and licensing, social and legal issue.

Prerequisite: 62137
This course introduces human-computer interaction field that integrates the capabilities of computer technology with human factors limitations. Topics covered: foundations, the human, the computer, the interaction, usability paradigms and principles, interaction design, understanding users, model of the user in design, affective aspects, interfaces and interactions, data gathering, design and construction of prototypes, evaluation techniques.

This course provides formal specification techniques that allow students to construct of the formal model that can perform tests on specifications and corresponding code to find errors in requirements, models, designs, and implementations. The course will focus on the role of Formal Methods, why Study Formal Methods in Software Engineering?, Specification of Programs and Myths about Formal Methods

Prerequisite: 63152
This course provides an introduction to the main concepts of programming by components. Topics covered: Object-Oriented Programming (OOP) concepts that form the base for components, software architecture for supporting components, transition from structured Object Oriented to component-based programming, designing reusable components in Visual, Software Design Patterns such as Exception handling, Reflection, Web Services and their relationship to component programming.

Prerequisite: 62137
In this course, students apply the stages of building software from requirements engineering, design coding and testing. The student should perform a project work with a group of students or individually. This project will be the basis for the graduation project. Where the student will write the code for the project.

Prerequisite: 63152
This course provides an overview of software maintenance (what, why, who), Different types of software maintenance, Software maintenance metrics and case studies, Maintenance prediction (number of changes, cost, impact analysis), Evolution process models, Legacy system reengineering and reuse, Reverse engineering and program understanding, Software and Information Visualization, Software system re-documentation, Service Oriented Architecture (SOA), and Agile software development.


Prerequisite: 62152
This course is concerned with the development of applications on mobile computing platforms. Android will be used as a basis for teaching programming techniques and design patterns related to the development of standalone applications and mobile interfaces to enterprise and cloud systems. Emphasis is placed on the processes, tools and frameworks required to develop applications for current and emerging mobile computing devices. You should work at all stages of the software development life-cycle from inception through to implementation and testing. In doing so, you will be required to consider the impact of user characteristics, device capabilities, networking and cloud infrastructure and deployment environment, in order to develop software capable of meeting the requirements of stakeholders.

Prerequisite: 62154
This course focuses on learning emerging issues related to Cloud computing technology. The objectives are:
• Understand various basic concepts related to cloud computing technologies
• Understand the architecture and concept of different cloud models: IaaS, PaaS, SaaS
• Understand big data analysis tools and techniques
• Understand the underlying principle of cloud virtualization, cloud storage, data management and data visualization.
• Understand different cloud programming platforms and tools
• Be familiar with cloud programming using Google’s ‘Go’ programming language
• Have details knowledge on reading and writing in cloud storage
• Be familiar with application development and deployment using cloud platforms
• Create application by utilizing cloud platforms such as Google app Engine and Amazon Web Services (AWS)
• Learn to develop scalable applications using AWS features.
• Learn basic concepts of MapReduce programming models for big data analysis on cloud.

Prerequisite: 62153
The course covers Big Data Fundamentals, including the characteristics of Big Data, the sources Big Data (such as social media, sensor data, and geospatial data), as well as the challenges imposed around information management, data analytics, privacy and security, as well as platforms and architectures. Emphasis will be given to non-relational databases by examining techniques for storing and processing large volumes of structured and unstructured data, streaming data as well as complex analytics on them. Data warehouses will also be presented as a solution to handling big data and business intelligence applications.

Prerequisite: 62153
Data Mining studies algorithms and computational paradigms that allow computers to find patterns and regularities in databases, perform prediction and forecasting, and generally improve their performance through interaction with data. It is currently regarded as the key element of a more general process called Knowledge Discovery that deals with extracting useful knowledge from raw data. The knowledge discovery process includes data selection, cleaning, coding, using different statistical and machine learning techniques, and visualization of the generated structures. The course will cover all these issues and will illustrate the whole process by examples. Special emphasis will be given to the Machine Learning methods as they provide the real knowledge discovery tools. Important related technologies, as data warehousing and on-line analytical processing (OLAP) will be also discussed. The students will use recent Data Mining software. Enrollment in this course is limited to 15 students.

Prerequisite: 62154

Introduces students to all of the components of Enterprise Resource Planning and its extensions while enabling them to understand how to choose, install and successfully use ERP systems.

Scroll to Top