Sign In
Tuesday 19 March 2019  |   | 

Master of Science in Software Engineering

Course Descriptions

TitleSoftware Development Processes
CodeSE501Credits3
PrerequisitesNone
Course Description
This course will study software development lifecycle models starting from the classic waterfall through evolutionary, to recent agile and lean methods. The definition of process models, their design issues, as well as process improvement methods will be addressed. A special emphasis is put on advanced models such as cleanroom and component-based process models and on process quality improvement models such as PSP, TSP, and CMM.



TitleSoftware Requirements Engineering
CodeSE502Credits3
PrerequisitesNone
Course Description
The course will introduce the tasks of eliciting, modeling, analyzing, specifying, documenting, validating, and managing a set of software requirements. This includes such issues as scenario/use case approaches, documentation standards, structured analysis, detection of conflicts and inconsistencies, requirements management, and application of requirement engineering to various types of systems.



TitleSoftware Project Management
CodeSE503Credits3
PrerequisitesNone
Course Description
This course describes the key aspects of a software project. It begins with the job description of a software manager and then addresses those topics germane to successful software development management including organizing the software development team; interfacing with other engineering organizations (systems engineering, quality assurance, configuration management, and test engineering); assessing development standards; selecting the best approach and tailoring the process model; estimating software cost and schedule; planning and documenting the plan; staffing the effort; managing software cost and schedule during development; risk engineering; and continuous process improvement. Personnel management topics, including performance evaluations, merit planning, skills building, and team building, are also covered.



TitleSoftware Testing & Quality Assurance
CodeSE504Credits3
PrerequisitesNone
Course Description
This course is designed to give a greater understanding of the key ingredients in creating and/or managing a successful testing program to meet project needs. Topics covered include software quality assurance , test lifecycle planning, test design & coverage analysis, complexity, levels of testing such as unit, integration, system, performance and stress testing. Best practice strategies in software testing such as verification & validation, object-oriented software testing, early lifecycle testing, risk based testing and automation will also be examined including exposure to test automation methods and tools.



TitleSoftware Design and Architecture
CodeSE505Credits3
PrerequisitesNone
Course Description
This course covers both architectural design and module design. In-depth study of object-oriented analysis and design modeling using the Unified Modeling Language (UML) notation. Study of design concepts and notations, design patterns, software architecture, quality attributes, architectural styles, frameworks and components. Designing for qualities such as performance, security, reusability, reliability, metrics and measurement. Basics of software evolution, re-engineering, and reverse engineering.



The Electives


TitleFormal Methods in Software Engineering
CodeSE511Credits3
PrerequisitesNone
Course Description
In software engineering, the term “formal methods” refers to a class of mathematically rigorous methods used to analyze, design and implement complex software systems. The main purpose is to build, with high confidence systems that behave according to their specifications. These methods are usually associated with some formal specification languages and some tools to realize the theoretical specifications. The main purpose of this course is to introduce some of the well known formal methods used in the areas of software specifications, model checking and verifications.



TitleSoftware System Modeling
CodeSE513Credits3
PrerequisitesThis course examines the underlying concepts and latest topics in software models. This course considers many of the standard models for representing sequential and concurrent systems, such as state machines, algebras, and traces. It shows how different logics can be used to specify properties of software systems, such as functional correctness, deadlock freedom, and internal consistency. Concepts such as composition mechanisms, abstraction relations, invariants, non-determinism, inductive definitions and de-notational descriptions are recurrent themes throughout the course. This course provides the formal foundations for the other core courses. Notations are not emphasized, although some are introduced for concreteness. Examples are drawn from software applications.
Course Description
This course gives an overview of security challenges in all types of databases and covers some of the major topics like access control, database integrity, digital watermarking and security of distributed database systems.



TitleReal-Time Software Systems
CodeSE517Credits3
PrerequisitesSE501
Course Description
This course focuses on practical development and engineering approach issues of real-time software. It assumes a reasonable proficiency in at least one programming language (C, C++, Java, or others) and a basic understanding of the fundamental concept of object orientation. The course emphasizes architectural analysis rather than programming. Topics include: architectural aspects, scheduling and synchronization, design patterns for real-time software, and aspects of software verification and model checking.



TitleBusiness Process Management
CodeSE519Credits3
PrerequisitesSE501
Course Description
The course explores a wide range of technical and conceptual practices to improve business processes. It discusses recent developments in the transformation management programs such as TQM, re-engineering, benchmarking, strategic alliances, business process improvement, balanced scorecard, and strategic plan deployment. It also describes the mechanisms to undertake process improvements in line with strategic imperatives, and measure the results of improvement efforts against targets; how to best organize people, and work in an organization with management according to process principles, and how to think horizontally as well as vertically concerning ways to manage a business, and examine where these approaches are in conflict and where they are in concert with one another.



TitleAnalysis of Software Artifacts
CodeSE521Credits3
PrerequisitesSE505
Course Description
Analysis is the systematic examination of an artifact to determine its properties. This course will focus on analysis of software artifacts--primarily code, but also including analysis of designs, architectures, and test suites. We will focus on functional properties, but also cover quality attributes like performance and security.



TitleService Oriented Architectures and Web Services
CodeSE523Credits3
PrerequisitesSE505
Course Description
Service Oriented Architectures represent a new rising approach for building interoperable, loosely coupled distributed systems. The main attraction of service orientation is that it makes it easy to separate concerns and integrate heterogeneous system components irrespective of the vendor or platform. System components interoperate while maintaining their independence from other components. The main purpose of this course is to introduce the major concepts and technologies relating to service oriented architectures. This includes the core architecture, main principles of service orientation, service oriented analysis, service oriented design, and business process design.



TitleWebsite Engineering
CodeSE526Credits3
PrerequisitesNone
Course Description
This course introduces concepts, techniques, technologies and APIs for web application development. The main focus of the course is on the Model-View-Controller design pattern employed by modern full-stack web frameworks. Concepts and techniques covered include client/server programming, database abstraction APIs, and asynchronous JavaScript.



TitleDistributed Software Systems
CodeSE527Credits3
PrerequisitesNone
Course Description
This course addresses key concepts for designing and building distributed software systems. Topics that will be covered include: definition and scope of distribution, principles of communication, software architectures of distributed systems, middleware systems, service discovery, quality of service, adaptive systems, mobility, security, and fault tolerance.



TitleEnterprise Architecture Frameworks
CodeSE529Credits3
PrerequisitesSE505
Course Description
This course focuses on the analysis and design of an enterprise in its current and future states from a strategy, business and technology perspective. This course provides an exposure to the foundational concepts of enterprise architecture. The course will provide students with the foundational knowledge needed to understand how EA serves to integrate strategic, business, and technology planning methods, which support enterprise-wide information technology resource development and governance in the context of business requirements.



TitleSoftware Measurements
CodeSE531Credits3
PrerequisitesNone
Course Description
This course will provide a basic understanding of measurement methods and problems, discuss the practical aspects of metric collection, give examples of metrics and management indicators, discuss measurement initiatives underway throughout the world, develop an understanding of measurement techniques that are utilized in practice, discuss new paradigms for measurement. Attendees will acquire solid knowledge of what measurement is, how to implement it, and how to use it in software engineering practice.



TitleSoftware Risk Management
CodeSE533Credits3
PrerequisitesSE503
Course Description
Software Risk Management is a software engineering practice with processes, methods, and tools for managing risks in a project. It provides a disciplined environment for proactive decision making to assess continuously what could go wrong (risks), determine which risks are important to deal with, and implement strategies to deal with those risks. The purpose of this course is to explain what Software Risk Management is; to help you understand the principles, functions, methods, and tools; to show what it could look like when implemented within a project; and to show you how a project could implement its own adaptation.



TitleSoftware Evolution and Maintenance
CodeSE535Credits3
PrerequisitesNone
Course Description
Phenomena and approaches involved in the evolution and reuse of large-scale software, including design for modifiability and tool support. Strengths and weaknesses of industrially-current techniques as well as recent research results.



TitleBuilding Secure Dependable Software Systems
CodeSE537Credits
PrerequisitesSE501
Course Description
This course addresses key concepts for designing and building highly dependable software systems. The course emphasizes methods and techniques that improve software reliability and security. Topics that will be covered include: software dependability, principles of software reliability, software reliability models, software testing, quality assurance, model checking, software verification, software security, security engineering.



TitleMobile Application Development
CodeSE539Credits3
PrerequisitesNone
Course Description
This course covers how to develop applications for mobile platforms. Differences between mobile and desktop computing will be investigated, sample mobile apps will be dissected, and tool suites for the development of mobile software will be covered, including programming languages, frameworks, libraries and integrated development environments.



TitleSoftware Quality Assurance & Engineering
CodeSE541Credits
PrerequisitesSE504
Course Description
This course prepares students to take leading roles in software development, management, and maintenance processes in particular, to plan software quality assurance activities in software development, to lead and execute the activities, and to improve software processes used. It discusses theoretical issues such as software products and product quality (in accordance with current ISO and IEEE software engineering standards), project management activities providing planning and monitoring software product quality during a project, and application of software quality techniques and tools in numerous software life cycle activities and to different software products.



TitleBusiness Analysis
CodeSE543Credits3
PrerequisitesSE502
Course Description
Business analysis is a new emerging discipline based on work previously done in the context of project management and requirements engineering. Business analysis builds on the techniques used in systems analysis, but focuses more on business goals and less on technology. In Business analysis, business requirements are elicited and analyzed at a much lower detail than in system analysis with emphasis on solving business problems, understanding the environments, and identifying opportunities for improvement and success. The main of focus of business analysis is to understand the business and derive solutions that may involve software components. The main purpose of this course is to introduce the new emerging business analysis discipline, clearly define the role, attributes and skills of a business analyst, how to communicate and interact with stakeholders, understanding the business and enterprise, understanding the technical environment, business analysis techniques.



TitleUser Interface Analysis and Design
CodeSE547Credits3
PrerequisitesSE502
Course Description
Current theory and design techniques concerning how user interfaces for computer systems should be designed to be easy to learn and use. Focus will be on cognitive factors such as the amount of learning required and the information-processing load imposed on the user. The user-interface development process. Introduction to methods for practicing user-centered design including user and task analysis, user interface design principles and testing using low-fidelity prototypes. Multimedia software design will also be covered.



TitleSeminar In Software Engineering
CodeSE693Credits3
PrerequisitesNone
Course Description
This course examines the underlying concepts and latest topics in software engineering. Potential topics include effective software development techniques such as agile and extreme programming; use of UML to define testing strategies; useful development tools and environments; patterns; metrics issues in system generation; teamwork in successful developments. Each student will select and report on a software engineering topic, perform independent reading, and prepare a paper describing a major software engineering issue. The course is taught using a seminar format in which significant portions of the class period are set aside for students to lead and actively participate in discussions.​