This is an old archived version of Birzeit University website. Here, it is not possible to change content or submit forms. For more updated information, please visit our current website.

Software Engineering

Master Program
2
36
120 JD

Program Mission

The mission of the Master Program in Software Engineering (MScSE) is to provide a quality education in software engineering, to prepare students, in Palestine, to become professional software engineers, entrepreneurs and leaders that are able to develop competitive solutions that are innovative yet reliable so that they may contribute to developing the software industry in the country and/or pursue a more advanced research degree by providing them with advanced concepts, knowledge, skills including global virtual teamwork skills, best practices, and the ability to continue to advance professionally in the global software engineering discipline.

Program Objectives

  1. To train students with current and advanced relevant software engineering skills and practices, that enable them to compete effectively at a global level.
  2. To instil among students the professional ability to analyze, assess and understand software engineering codes of conduct, legal and ethical values.
  3. To improve students’ ability to work and function productively and effectively in teams including interdisciplinary teams, and demonstrate effective leadership skills.
  4. To prepare students for doctoral programs in software engineering by developing the ability to carry out and evaluate theoretical and applied research in software engineering.
  5. To develop technical leadership capabilities and project management skills to enable students pursue entrepreneurship and productive careers in software engineering.
  6. To enrich students with applied technical communication skills to demonstrate the ability to effectively communicate ideas and outcomes, both orally and in writing, in a logical manner.   
  7. To develop self and independent study in students to demonstrate the ability and inclination to maintain professional currency in the rapidly changing field of software engineering.
  8. To apply appropriate software engineering fundamentals and practices in software development that demonstrate technically applied capabilities and current knowledge and practices.
  9. To train students with research skills and abilities to create new opportunities for postgraduate research in Software Engineering, addressing both local and international challenges.
  10. To collaborate with industry to develop ICT products, systems and services that address key needs.

Graduate Expected Career

  • Follow-up on academic achievement and pursue a PhD degree in software engineering or related fields.
  • Work as a researcher in academic or public institutions or research centers that address research challenges in computing in general or software engineering in particular.
  • Work as a professional ICT expert with specific expertise in software engineering
  • Work as an architect, analysts and/or software engineer.
  • Work as software/system quality auditor
  • Work as Project Manager of software projects and/or as a software development team leader

Admission Requirements

Applicants should have BSc in one of the following areas computer science, computer engineering, electrical engineering or related fields. Also BSc degrees in other areas with related working experience might be considered.
Applicants should have background in the following topics: data structure, object-oriented programming, database (first university course), statistical (first university course). Applicants that lack knowledge in any of background topics have to take undergraduate courses as pre-requisite courses.
In addition to the general requirements of the university.


Graduation Requirements

A student should successfully finish 36 credit hours (crs) to fulfil the requirements for the degree of Master in Software Engineering. The program structure is divided into three categories: 18 crs of core courses, 12 crs of elective courses, in addition to either 6 crs for thesis or two seminars 3 crs each, depending on the chosen path. Path A is the thesis path while Path B is the seminar path.

A. Compulsory Courses: 18 credit hours of courses include the following:

Course ID Course Title Pre-requisite
SWEN6301 Software Construction  
SWEN6303 Software Requirements Engineering  
SWEN6305 Software Engineering Management  
SWEN6302 Research Methods in Software Engineering  
SWEN6304 Software Design and Architecture  
SWEN7301 Software Testing and Quality Assurance SWEN6301

B. Elective Courses: 12 credit hours from the following:

Course ID Course Title Pre-requisite
SWEN6306 Global Software Engineering Team SWEN6305
SWEN6307 Service-Oriented Software Engineering  
SWEN6308 Software Engineering of Internet-based Application  
SWEN7302 Secure Software Development SWEN6301
SWEN7303  Software Engineering for Distributed Systems  
SWEN7305 Human Computer Interaction (HCI) SWEN6303
SWEN7304 Software Maintenance and Evolution SWEN6301
SWEN7306 Software Engineering in Mobile Computing  
SWEN7307 Data Mining and Knowledge Discovery  
SWEN7310 Knowledge Engineering  
SWEN7311 Advanced Research Topics in Software Engineering SWEN6302
SWEN7312 Software Engineering Team Project  
SWEN7308 Special topics Program Committee Approval
SWEN7309 Independent Study Program Committee Approval

C. Remedial courses: The student to take a maximum of 9 hours from the following courses

Course ID Course Title
STAT231 Introduction to Statistic
COMP231 Advanced Programming
COMP232 Data Structure
COMP333 Database Management Systems

D. Path A or B: 6 credit hours: either Thesis or two Seminars

  Course ID Course Title Pre-requisite
Path A SWEN860 Thesis As instructed by the academic regulations for Graduate Studies in force in the university
Path B SWEN830 Seminar 1 As instructed by the academic regulations for Graduate Studies in force in the university
SWEN831 Seminar 2 As instructed by the academic regulations for Graduate Studies in force in the university

 

Study Plan

First Year
First Semester Second Semester Summer Session
SWEN6301: Software Construction SWEN6302: Research Methods in Software Engineering  
SWEN6303: Software Requirements Engineering SWEN6304: Software Design and Architecture  
SWEN6305: Software Engineering Management SWEN6306: Global Software Engineering Team  
Second Year
First Semester Second Semester Summer Session
SWEN7301: Software Testing and Quality Assurance Elective Course  
Elective Course SWEN860: Thesis or SWEN830: Seminar 1  
Elective Course    
Third Year
First Semester Second Semester Summer Session
SWEN860: Thesis or SWEN831: Seminar 2    

 

Course Descriptions

SWEN6301: Software Construction

In-depth study of software construction, software construction fundamentals (minimizing complexity, anticipating change, constructing for verification and standards in construction), managing construction (construction models, construction planning and construction measurement) and practical considerations (construction design, construction languages, coding, construction testing, reuse, construction quality, configuration management, automation, and integration).
This course aims to provide students with comprehensive understanding of concepts and techniques in software construction, analysis of practical considerations and applied use of code verification, configuration management tools and conventions through a team project work.

SWEN6302: Research Methods in Software Engineering

Research Methods applicable to Software Engineering: definition of scientific research, scientific research approaches: inductive, conductive and deductive; bibliography and citations, ethical principles in research, qualitative and quantitative methods; action research, analytic research, define and collect appropriate software metrics, introduction to empirical research methods and techniques, and statistical analysis. The course will cover general techniques applicable to any research project, including formulating research questions, theory building, data analysis, building evidence, assessing validity, and publishing.
The course aims to provide students with comprehensive understanding and analysis of research methods and apply these methods through relevant case studies and research investigation in software engineering research questions.

SWEN6303: Software Requirements Engineering

The state-of-the-art and state-of-the-practice in software requirements engineering are explained. Topics include how to determine, specify and validate the requirement (both functional and non-functional) of a software system. In-depth coverage of requirement engineering methods, techniques, tools, notations, or validation techniques for the analysis and specification of software requirements.
The course aims to develop comprehensive understanding in requirements engineering techniques and methods, and apply them through case studies, team project work and research investigations.

SWEN6304: Software Design and Architecture

Advanced concepts about software design and software architecture. Design patterns, Architectural structures and styles, Methods for creating and analysing software architecture, interaction between quality attributes and software architecture, software architecture validation and documenting architecture, in depth study of current software architecture research topics such as Services Oriented Architecture (SOA).
The course aims to provide students with comprehensive knowledge of system design and architecture evaluate and apply architecture designs through team project work and research investigation.

SWEN6305: Software Engineering Management

Lifecycle and process models, process metrics, planning for a software project, mechanisms for monitoring and controlling schedule, budget, quality, productivity, leadership, motivation, and team building. Quantitative models of the software lifecycle, cost-effectiveness analysis in software engineering, uncertainty and risk analysis, software cost estimation, and software engineering metrics. The course also will cover professional skills: professional, ethical, legal aspects, within individual and team contexts.
The course is aims to provide students with a comprehensive understanding and analysis of the concepts and techniques for project management, risk assessment and effort estimations, and apply project management techniques and tools through case studies and team project work with emphasis on observing code of conduct, professional, ethical, and legal concerns.

SWEN6306: Global Software Engineering Team

This course covers the principles and techniques for Distributed Software Development: outsourcing phenomenon, outsourcing models, global software development models: component-based models, function-based models, implementation-based models; virtual teams factors: team building, resource allocation, human factors-distance, time and cultural differences; globally-distributed projects, Collaborative tools and environments for global software development, Requirements engineering for distributed projects, Process models especially agile methods, Software project management for distributed projects and Assessing coordination risk.
The course aims to provide students with advanced understanding of concepts and methods of distributed team work, analyze and evaluate differences in distributed project configurations, and apply and use collaborative tools through distributed team project work and research investigations, with emphasis on observing distance, time and cultural differences.

Pre-requisite: SWEN6305

SWEN6307: Service-Oriented Software Engineering

State-of-the-art coverage of service-orientation engineering principles. It includes an in-depth coverage of key concepts of service orientation, service models, and service standards. The course will also study service design methodologies, business service modelling, service development; service-based technologies (cf WSDL Services, RESTful services); The course will focus on the software engineering methods in service-orientation with applied skills on service design and modelling.
The course aims to provide students with advanced and in-depth understanding and analysis of service-oriented engineering methods and techniques, and apply these techniques through team project work and research investigations.

SWEN6308: Software Engineering of Internet-based Application

Advanced engineering techniques of internet-based applications. It includes an in-depth coverage of topic on internet applications as a domain: users, context, accessibility, business-orientation; characteristics and requirements of internet-based applications: e.g. aesthetics, spontaneity, ubiquity, compatibility, security, scalability, usability, portability, multilingualism, globalism. Also the state-of-the-art coverage of web engineering web applications development process models, web development frameworks; web architectures (cf. web platform architectures, web application architectures), web application modelling: web design models.
The course aims to provide students with advanced and in-depth understanding and analysis of the software engineering methods and techniques of internet-based applications for web design and modeling, and apply these techniques through team project work and research investigation.

SWEN7301: Software Testing and Quality Assurance

Concepts and techniques for testing software and assuring its quality: software testing types: unit, module, subsystem, and system levels tests; testing plan generation, testing plan validation: automatic and manual techniques for generating and validating test data; the testing process: static vs. dynamic analysis, functional testing, inspections; software quality testing: such as reliability, performance, security and robustness, vs quality metrics validation.
The course is aims to provide students with a comprehensive and in-depth understanding and analysis of the concepts and techniques for testing software and assuring its quality, and apply various testing methods to implement a testing plan through team project work and research investigation.

Pre-requisite: SWEN6301

SWEN7302: Secure Software Development

An advanced topics on developing secure computer systems. Security services, Security models: determining security requirements; designing secure software architecture; and verifying security requirements. Secure coding principles, practices, and methods including least privilege, threat modelling, and static analysis. Covers common vulnerabilities such as buffer overruns, integer overflows, injection attacks, cross-site scripting, and weak error handling in detail. Hacking techniques and attack types; public and private key encryption; Authentication; Digital signature; User identification and access control. Internet security: security protocols, email and web security; security technologies and tools such as: Firewalls, IDS and IPS.
The course aims to provide students with advanced understanding of the importance of security throughout the software development process, and apply various methods and techniques for vulnerabilities detection through team project work and research investigation.

Pre-requisite: SWEN6301

SWEN7303: Software Engineering for Distributed Systems

Design and engineering principles of distributed systems. It includes in-depth study on how large-scale, distributed computational systems are designed and built, and mechanisms to evaluate them and the design considerations of Distributed Systems: Scalability, Openness, Heterogeneity, Concurrency, Fault-tolerance, Transparency, Performance and Management, It covers distributed software architectures, including transaction oriented, message oriented, with focus on design mechanisms and approaches for remote invocation, naming, synchronization, consistency and replication, and fault tolerance. The course places focus on the engineering of distributed systems and their applications within the context of real world distributed systems, including cloud and grid computing.
The course aims to provide students with advanced understanding and analysis of engineering methods and techniques of distributed systems, and apply these techniques through team project work and research investigations.

SWEN7304: Software Maintenance and Evolution

Introduction to software maintenance, defect management, corrective, adaptive and perfective maintenance. Evolution of legacy software systems. Program comprehension techniques, reverse engineering, restructuring, refactoring of software systems. Software re-engineering, data reverse engineering. Software reuse. Impact analysis, regression testing.
This course aims to provide students with advanced understanding of concepts and techniques of software maintainability, and applied use of configuration management tools and reverse engineering through a team project work and research investigation.

Pre-requisite: SWEN6301

SWEN7305: Human Computer Interaction (HCI)

Human Computer Interaction & User Interface Design. The course covers human-interactive models, usability design patterns and development methods that can be applied to the design and evaluation of interactive systems, including user-centered design, participatory design, usability engineering, task analysis, cognitive models and human perception, user interface design, internationalization and localization.
The course aims to provide students with advanced understanding of the importance of human factors and design of interactive system, analysis and evaluation of usability, and apply interactive designs through team project work and empirical research investigation.

Pre-requisite: SWEN6303

SWEN7306: Software Engineering in Mobile Computing

This course covers software design and development of mobile computing. It covers advanced concepts related to engineering methods of mobile applications development including; location aware technologies; mobile web services; and integrated sensors such as touch- and gesture-based UIs. The course covers recent development integrated environments, mobile architectures, operating systems and mobile applications testing approaches.
The course aims to provide students with advanced understanding and analysis of concepts and methods mobile computing, analyze and evaluate user interface design techniques, and apply these techniques through team project work and empirical research exercise.

SWEN7307: Data Mining and Knowledge Discovery

An advanced and up-to-date knowledge in the field of Knowledge discovery process. Designing & Implementing data-warehousing. Tasks and algorithms of data mining. Classification methods including Decision trees (building, pruning, evaluation), Rule-based, Nearest Neighbor, Bayesian. Feature selection and Frequent item sets and association methods: Apriori, Compact Representation, FP trees. Clustering methods: k-means, Bisecting k-means, Agglomerative. The course also covers topics in Web-mining techniques and methods.
The course aims to provide students with advanced and in-depth understanding and analysis of the data mining methods and techniques in knowledge discovery, and apply these techniques through team project work and research investigation.

SWEN7308: Special topics

Selected topics in the field of Software Engineering or Computer Science of interest to both faculty members and students.

Pre-requisite: Program Committee Approval

SWEN7309: Independent Study

Independent study or research conducted by the student under the guidance of staff member. A written report is required.

Pre-requisite: Program Committee Approval

SWEN7310: Knowledge Engineering

The course will cover modeling and representations of the state-of-art knowledge-based systems. The course consists of three modules: (i) Conceptual analyses of applications' business logic using Object Role Modeling, business rules, contradiction and implication between rules, optimization and re-engineering. (ii) Formal specifications languages: description logic, and OWL (iv) Modern knowledge-based applications, including smart data integration and interoperability of networked systems, Digital Libraries design, Semantic-based Web Services, among others.
This course aims to enrich students with theoretical and practical skills in modeling, representation, and management of business rules and building of knowledge-based systems and research investigation in these topics.

SWEN7311: Advanced Research Topics in Software Engineering

Advanced research topics and methods in Software Engineering. It includes an in-depth coverage of Empirical research methods and techniques, advanced statistical analysis; methods for research development, conducting literature reviews and advanced skills in writing research for publishing research. The course focuses on the application of advanced research techniques in software engineering focusing on selected topics, with applied skills on research proposal development, research methods selection and research method evaluation.
The course aims to provide students with in-depth critical analytical skills in research development and advanced research methods, techniques and apply these through a substantial critical analysis and research investigation.

Pre-requisite: SWEN6302

SWEN7312: Software Engineering Team Project

The state-of-the-art in project team formulation and conduction practices using modern software engineering development tools. Unified modelling tools, agile development processes and best practices for technical report writing will be covered. The course will encompass the actual running of a substantial team software project, in which students will apply the learned software engineering methods and techniques, and practice their software development skills and tools. The students will apply and experience all the stages of developing a complex software system: feasibility analysis requirements engineering, design, implementation, testing and validation.
The course aims to provide students with advanced applied and analytical skills of software engineering methods and techniques with strong emphasis on team building, communication and leadership through team project work.

SWEN830: Seminar 1

Review, analyse and discuss a number of research published in scientific journals in the field of software engineering, presentation and discussion of the principles of scientific integrity and ethics of scientific research, writing a scientific paper in a specific topic chosen by the student include a review of a sufficient number of literature and presented for discussion with the teacher and students of the course and re-drafting of the paper on the basis of discussion and observations.

Pre-requisite: Successful finish 15 credit hours of the compulsory courses including the SWEN6302 course.

SWEN831: Seminar 2

Read, analyse and discuss a number of research published in scientific journals in the field of software engineering, presentation and discussion of the principles of scientific integrity and ethics of scientific research, writing a scientific paper in a specific topic chosen by the student include a review of a sufficient number of literature and presented for discussion with the teacher and students of the course and re-drafting of the paper on the basis of discussion and observations.

Pre-requisite: Successful finish 15 credit hours of the compulsory courses including the SWEN6302 course.

SWEN860: Thesis

Students in the Master program choosing the thesis track must submit and successfully defend a Master thesis in a field of interest in software engineering. The program council must have approved the topic of the thesis. (For students with thesis track only.)

 

    Copyright © 2017 Birzeit University