Software Engineering Graduate


SWE 6343 User Interface Design and Implementation

Prerequisite: SWE 6623

3-0-3This course covers the major frameworks, methods, and

approaches to designing, engineering, implementing, and testing

user interfaces. It covers user and usability requirements

gathering, task analysis, user-interface design, implementation of

the user interface, and evaluation with respect to requirements

and the users' tasks. Illustrative design and implementation

projects are completed throughout the term.

SWE 6673 Software Quality Engineering and Assurance

Prerequisite: SWE 6613 and CS 5013


Various definitions and metrics related to quality are introduced,

along with the concept of total quality management (TQM).

Development of quality/test plan and the cost/value trade-off

throughout the software development cycle is demonstrated. As a

crucial component of quality engineering, the notion of validation

and verification is explained in the context of different testing

techniques, which include black box testing, white box testing, and

formal verification. The emphasis of the course is on testing

techniques for both non-executable and executable software

artifacts as applied to different levels of testing, ranging from

inspection, formal verification, unit testing to regression testing.

SWE 6613 Requirements Engineering

Prerequisite: SWE 6623


Requirements engineering (RE) plays a critical role in the software

development process. This course is a thorough treatment of the

engineering and definition of software requirements processes.

Methods, tools, notations, and techniques for eliciting, analyzing,

modeling, negotiating, validating, specifying, testing, and

maintaining requirements will be examined with a focus on

software-intensive systems. The course will include a major

group project on the analysis and specification of software


SWE 6653 Software Architecture

Prerequisite: SWE 6623, CS 5003, CS 5013


This course examines the principles and methods of the

architectural design of complex, large-scale software systems.

Macro-level system architecture with an emphasis on approaches

to interconnection and distribution of both current and emerging

architectural systems (e.g., Model-View-Controller (MVC),

service-oriented, agent-oriented) as well as micro-level

architecture including patterns, frameworks, and

component-based software engineering are covered in detail.

SWE 6733 Software Engineering Processes

Prerequisite: SWE 6623


This course gives students an in-depth introduction to the

essentials of software engineering processes, methods, and tools

for the engineering and evolution of complex real-world software.

Emphasis is on the role of process in the various software

life-cycles from requirements engineering through operation and

maintenance. Topics such as personal and team software

processes, organizational maturity, theory and applications of

CMMI and ISO 9001, process management, process assessment,

and process improvement are included.

SWE 6853 Design Patterns

Prerequisite: SWE 6623 and CS 5003; SWE 6743 Recommended


This course builds upon basic object-oriented concepts to discover

principles of good object-oriented design through the application

of design patterns. The focus is on the issues and means of

designing software systems for reuse, extension, and

maintainability including how to leverage the powers of

object-orientation embodied in well-known heuristics, principles

and patterns in the design and construction of reusable systems.

This course will emphasize that designing reusable systems

requires anticipating requirements changes and the application of

design patterns will help ensure system mutability. The course

includes a major project in which the students will gain hands-on

experience with design patterns.

SWE 6623 Software Engineering

Prerequisite: CS 5123 or equivalent


Transition: This course provides an overview of software

engineering and explores both the theoretical principles and their

application in the engineering of software-intensive systems.

Topics cover the entire software development life-cycle and

include software engineering process models, project

management and planning, requirements engineering, software

architecture and design, prototyping, verification and validation,

usability and human factors, quality assurance, and

professionalism and ethics. The course includes a real-world

team project in which students are given hands-on experience

utilizing state-of-the-art tools to analyze and design a software


SWE 6633 Software Project Planning and Management

Prerequisites: SWE 6623


The main phases of project management life cycle (initiation,

planning, execution, monitoring/control and closeout) are covered.

The emphasis is on project planning phase and on project

monitoring/control phase. Various software size, cost/effort, and

schedule estimation and planning techniques, including COCOMO,

Function Point, and critical path analysis, are introduced as part of

work breakdown structure. Project risk management is included

as an integral part of project planning and project

monitoring/control. Project status monitoring/control activities

are discussed and practiced with a prototype team project, using

the Earned Value metric.

SWE 6723 Software Engineering II

Prerequisite: SWE 6623


This course covers the entire software development life-cycle.

Emphasis is placed on advanced topics including prototyping,

verification and validation, formal methods, and quality

management. A major component is a group project that utilizes a

Computer Assisted Software Engineering (CASE) tool to assist in

the analysis, design, and implementation of a system.

SWE 6743 Object-Oriented Analysis and Design

Prerequisites: SWE 6623, CS 5013 and Co-requisite CS 5003


This course focuses on object-oriented modeling techniques

necessary to solve complex, real-world software engineering

problems. Topics include the use of information hiding, object

design methods, basic design patterns, abstraction and abstract

data type formalisms. Object-oriented iterative development

methodologies such as the Unified Process will be utilized.

Techniques for transforming software requirements into

high-quality language independent object-oriented design are

presented. The course includes a major iterative project in which

the students will gain hands-on experience modeling a real-time

system using use case analysis, responsibility-driven design, UML

and RealTime UML.

SWE 6753 Computer Game Design and Development

Prerequisite: CS 5123


Topics include graphics, multimedia, visualization, animation,

virtual reality simulation concepts, methods, and tools of game

design and developments using the software engineering life cycle

are emphasized. A team project on a game prototype is required.

SWE 6763 Software Metrics and QA

Prerequisite: SWE 6623


This course covers the principles of software measurement such

as scaling, validity, and reliability. The various software metrics on

volume, effort, quality, and cost estimation are explored. The

theory and principles of software verification and validation

effectiveness, and reliability models are studied. The application of

these measurements to software customer satisfaction and total

quality management is explored.

SWE 6783 User Interaction Engineering

Prerequisites: CS 5003 and SWE 6623


This course follows a complete software-engineering cycle to

produce software objects (classes and/or components) that

support users in effective, efficient, and enjoyable interactions

with computers. Class exercises and a project incorporate

concepts and methods including ethnographic and user analysis;

cognitive ergonomics; usability metrics and criteria;

software-engineering practices, conventions, standards, and

documentation; device-user action mapping; person-system

function allocation; quality management systems; conceptual

proto-typing; embedded systems in support of ubiquitous

computing; and function-behavior analysis.

SWE 6813 Component-Based Development

Prerequisites: CS 5003


This course covers the concepts, foundations, and architectures of

component-based software development (CBSD) and its related

technologies. Component-based tools and languages, approaches

for implementation of CBSD, including designing, building,

assembling, and deploying reusable COTS and in-house software

components are discussed in depth. The current concrete

realizations of component technologies will be explored. Students

will do projects focused on the life cycle of software components.

SWE 6823 Embedded Systems Analysis and Design

Prerequisite: SWE 6623


This project-oriented course focuses on using modern methods,

techniques, and tools for specification and design of embedded

systems. Topics include analytical methods, design/development

methods, and notations. Performance evaluation based on

modeling and simulation techniques is also covered.

SWE 6843 Embedded Systems Design and Construction

Prerequisite: CS 5243/3243


This project-oriented course focuses on the use of current

software building technology, testing, reliability analysis, and

benchmarking. Topics include component-based development

(CBD), implementation technologies, and real-time operating

systems (RTOS), with emphasis on the use of measurement tools,

and domain libraries. The course also covers issues in

hardware/software co-design.

SWE 6883 Formal Methods in Software Engineering

Prerequisites: CS 5423 , SWE 6623, and SWE 6613 recommended


The course is concerned with formal representation of the

specification of software. Formal mechanisms for specifying,

validating, and verifying software systems will be introduced to

check for completeness and correctness as well as to discover

ambiguities in the specifications. Both Propositional and Predicate

Calculus will be reviewed and utilized to represent and reason

about software specifications. Proof techniques and formal

specification languages Z and the Object Constraint Language

(OCL) will be explored.

SWE 6863 Software Engineering Ethics and Legal Issues

Prerequisite: Co-requisite CS 5003 or equivalent


This course covers ethical and legal issues related to software

development. Professional ethics and responsibilities of software

engineers are discussed in detail. Topics include computing and

civil liberties, encryption, intellectual property and licensing,

software patents and copyrights, professional codes of ethics and

professional licensing, software reliability, liabilities, and hacking.

Software engineering/computing case studies will be used.

SWE 6901-6903 Special Topics

Prerequisite: As determined by the Instructor and Department

Chair 1 to 3 hours

Special topics selected by the Department Chair. Offered on a

demand basis. A student may repeat this course with special


SWE 7903 Software Engineering Capstone

Prerequisite: Satisfactory completion of the MSSWE core


This course is designed for students to give a professional focus to

their degree. The students work in designated teams under the

supervision of the course instructor (a CSE faculty member), on a

project of practical significance in software engineering. Each of

the teams will deliver a final working product, generate a

substantial final report, and give a final presentation on the


SWE 7803 Masters Thesis


The thesis is designed for students wanting a research focus to

their degree. The student works independently under the

supervision of a designated SWE graduate faculty member on a

thesis of substance in software engineering. The student will

generate a formal written thesis and give a final defense of the

thesis. This course may be repeated, but only 6 hours may be

applied toward the degree. This course will be an alternative to

SWE 7903 Software Engineering Capstone.

SWE 6901-6903 Independent Study

Prerequisites: Approval of course director


Independent study/project under the direction of a graduate SWE

faculty member.