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.)