Software Engineering Courses

SWE 2313 Introduction to Software Engineering

Prerequisite: CSE 1302C or CSE 1302J or CSE 1302E


This course provides an overview of the software engineering

discipline, introducing the student to the fundamental principles

and processes of software engineering. This course highlights the

need for an engineering approach (both personal and team) to

software with understanding of the activities performed at each

stage in the development cycle. In this course, students will

perform requirements analysis, design, implementation and

testing. The course presents software development processes at

the various degrees of granularity. Students will become aware of

libraries of standards (IEEE, ACM, SWEBOK, etc.).

SWE 2642 Professional Practices and Ethics (has been replaced

with CSE 2642)

SWE 3613 Software System Engineering

Prerequisite: CS 3424 and junior standing


Students practice and complete all the significant activities of

software engineering development through various case studies

and system projects. Cross-cutting aspects (e.g., security,

reliability, performance) are considered while performing major

software phases. A major component of the course includes

planning and developing a team-based system project. Various

structured analysis and design tools are used by students.

SWE 3623 Software Systems Requirements

Prerequisite: (SWE 2313 or IT 3223) and MATH 2345


This course covers engineering activities related to the definition

and representation of software system requirements. Topics

include the elicitation, analysis, specification and validation of

software system requirements. Emphasis is on the application of

processes and techniques of requirements engineering. Projects

focus on current analysis methods and supporting tools for

specification, organization, change management, traceability,

prototyping, and validating requirements.

SWE 3624 Software Engineering

Prerequisite: CS 3424 or CS 3153


The entire software engineering life cycle is explored, with

emphasis on the initial phases. Topics include problem definition,

systems analysis, requirements gathering, cost and benefit

analysis, proposal preparation, prototyping, design techniques and

usability testing. Software engineering principles, practices, and

design standards are examined through case studies. Various

tools are used by students in conjunction with real-world projects.

A major component is a team project which goes through

prototyping and usability testing. SWE majors may not receive

degree credit for this course.

SWE 3633 Software Architecture & Design

Prerequisites: SWE 2313


This course covers the fundamental design principles and strategy

for software architecture and design. Architectural styles,

quality attributes, notations and documents, reference

architecture, domain-specific architecture in architecture process

and pattern-oriented design, component-oriented design, and

interface design in detail design process are discussed.

SWE 3643 Software Testing and Quality Assurance

Prerequisite: SWE 2313


This course shows how to define software quality and how it is

assessed through various testing techniques. Topics include

review/inspection technique for non‐executable software,

black‐box and white box testing techniques for executable

software and test result analysis. Specific test case development

techniques such as boundary value, equivalence class, control

paths, and data flow paths test are introduced. Different levels of

testing such as functional, component and system/regression

tests are discussed with the concept of configuration


SWE 3683 Embedded Systems Analysis & Design

Prerequisite: CS 3243


The analysis and design course focuses on using modern

methods, techniques, and tools for specification and design of

embedded systems. Topics include analytical methods such as

RMA, development methods such as HOOD, and notations like

UML, Petri-nets, etc. are covered. Performance evaluation based

on modeling and simulation techniques is also covered. This is a

project based course.

SWE 3843 Embedded Systems Construction and Testing

Prerequisite: CS 3243


This course covers fundamental principles and techniques for

embedded software engineering. It focuses on a

component-based development approach to designing,

implementing, and testing embedded programs. Topics include

building standard-along and networked embedded systems,

validation and verification of trustworthy embedded software,

testing tools and environment, quality assurance and metrics for

embedded systems, and hardware/software co-design and


SWE 4324 User-Centered Design

Prerequisite: (CSE 1302C or CSE1302J or CSE 1302E) or IT 1324


A course that presents the fundamental knowledge, processes,

skills, and practices leading to the user-centered design of

computer systems and applications. The course addresses the

effectiveness of human interactions with computers by examining

issues of physical ergonomics, cognition and perception, human

memory and information processing, and evaluation of prototype

software in a Usability Lab. Usability engineering techniques are

covered leading to improved system effectiveness in supporting

use of computers, user learning, diversity in interaction styles, and

individual versus group work. Class exercises provide practice of

needed skills. A major project that integrates all aspects of

user-centered task-oriented design is included.

SWE 4633 Component-Based Software Development

Prerequisite: CS 3424


This course covers a wide range of component-based software

development skills, from analyzing and modeling a problem with

component-based notations and architectures, to implementing a

solution using a particular component technology. The principles

and methodologies in component based software development will

be discussed in depth focusing on component-oriented

programming and its related technologies. Component-based

tools and languages, approaches for implementation of

component-based software, including designing, building,

assembling, and deploying reusable and COTS and in-house

software components are discussed. Students will do projects

focused on the life cycle of software components in various

component technologies.

SWE 4663 Software Project Management

Prerequisite: SWE 2313 and either Math 2260 or IET 2227


This course studies how to plan and manage projects at each

stage of the software development life cycle. It covers specific

techniques of Planning, Organizing, Monitoring, and Adjusting

(POMA) phases of software projects. Topics include technical

and managerial skills needed to achieve project goals. A

required team project combines technical and managerial

techniques of software design and development.

SWE 4713 SWE Application Domain

Prerequisite: three of these four: SWE 3623, SWE 3633, SWE 3643,

SWE 4324, SWE 4663


Students work as part of a team to develop solutions to problems

posed by either internal or external customers in a specific SWE

Application Domain. The purpose of the course is for the student

to gain an understanding of the selected application domain, and

its use of software to support functions/operations within that

domain. Application domain selection is done every term from a

variety of industrial domains including:

Problems may require considerable software development or

evolution and maintenance of existing software products. The

course culminates with the completion and presentation of an

increment of the project solution.

SWE 4724 Software Engineering Project

Prerequisite: TCOM 2010 & COMM 2400 & (SWE 3624 or three of

these four: SWE 3623, SWE 3633, SWE 3643, SWE 4663)


This is the capstone project course and constitutes a major design

experience. The course focus is on a team project comprising

the development of a realistic software system during all phases

of the software development life cycle. Topics include software

project management, design, verification and validation,

development, evolution and quality assurance. Current methods,

techniques, and software tools are utilized in the development of

the project.

SWE 4743 Object-Oriented Development

Prerequisite: CS 3424


This course involves engineering activities related to the analysis,

design, and implementation of object-oriented software systems.

Topics included modeling foundations, requirements specification

and documentation, design concepts and strategies, and OOAD

methodologies with an emphasis on UML. The course includes a

major project utilizing current analysis and design methods and

tools implemented in a contemporary IDE.

SWE 4783 User Interaction Engineering

Prerequisite: SWE 2313 or SWE 4324


This course follows a complete software engineering cycle to

produce software objects 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 prototyping; embedded systems in support of

ubiquitous computing; and function-behavior analysis.

SWE 4901 - 4904 Special Topics

Prerequisite: As determined by the instructor and Department


1 to 4 hours

Special Topics selected by the Department Chair. Offered on a

demand basis. A student may repeat this course with special

permission. Special topics may cover the state of the art of

Software Engineering.