Software Engineering
About Software Engineering
In the age of information technology, software engineering is a discipline that encompasses all aspects of software development. Software engineering plays a significant and critical role in ensuring the production of high-quality software systems. The need for reliable software products and continuous research is increasing. Therefore, the College of Information Technology has established this program to contribute to meeting this need.
The Department of Software Engineering aims to meet the growing demand for professionals working in the field of software development, with a particular focus on large and critical systems. The department aims to develop the practical and analytical skills required by students to develop robust and efficient systems using scientific methodologies in various fields, including medical, industrial, service, and business management applications, and on various platforms and operating systems. Additionally, students will acquire (individually or in teams) timely experience and the ability to efficiently handle programming techniques and tools.
Program Vision
To be pioneers in providing advanced educational and research products in the field of software engineering at the local and regional levels.
Program Mission
Graduating students equipped with extensive knowledge and skills required to deliver high-quality software systems, including conducting scientific research and producing locally and internationally recognized software applications.
Program Educational Objectives
- To equip students with the knowledge, cognitive, practical, and professional skills required for software engineering and development.
- To enable students to master a variety of modern programming languages and techniques.
- To equip students with the knowledge, cognitive, practical, and professional skills needed for designing and implementing databases.
- To equip students with the knowledge, cognitive, practical, and professional skills supporting information technology.
- To instill in students the knowledge and cognitive skills related to professional ethics, scientific research, and lifelong learning.
Program Graduate Competencies.
- Apply sufficient practical and professional knowledge and skills to develop software, and possess a solid understanding of software development methodologies, with the ability to select the appropriate methodology for different software projects based on required quality standards.
- Contribute effectively to software development projects using various programming languages and algorithms.
- Design, implement, monitor, and oversee different database projects.
- Apply practical and professional knowledge and skills in information technology.
- Recognize the need for lifelong learning and self-development, and possess the ability to communicate effectively and conduct research, with an understanding and appreciation of professional and ethical responsibilities.
Career Opportunities
Graduates of a software engineering program can work in various organizations under different job titles, such as:
- Software Developer in various fields, including web applications, mobile applications, and desktop applications.
- Systems Analyst or Business Process Developer.
- Data Center Manager.
- Database Designer and Implementer.
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 basic.net, 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.