| Software Engineering |
SWE 1301 Software Development
I
Prerequisite: CS 1002
and Math 1113 or concurrently |
3-2-4 |
This course provides an
introduction to software development with a focus on structured programming.
Topics include an overview of programming, problem-solving and algorithm
development, simple data types, arithmetic and logical operators, selection
and repetition structures, text files, arrays, procedural abstraction and
software design, and modular programming including subprograms. Programming
assignments focus on the techniques of good programming style and how to
design, code, debug, and document programs. The student will be able
to solve problems using top-down design and modularize their solutions
with proper use of abstraction mechanisms. |
SWE 1302 Software Development
II
Prerequisite: SWE 1301 and
CS 1002 |
3-2-4 |
This second course in software
development provides a focus on both abstraction and advanced programming
techniques of object-oriented programming. Topics include abstract
data types, multidimensional arrays and records, recursion, pointers and
linked lists, use of parameterized types, software engineering concepts,
and introduction to the usage of dynamic data structures (stacks, queues,
and trees) to solve application problems. The student will be able
to solve problems using objects, including designing and writing their
own. Programming assignments emphasize good software development
principles such as information hiding, re-use, use of symbolic debuggers,
and separate compilation. |
SWE 2312 Introduction
to Software Engineering
Prerequisite: SWE
1302 or CS 1302 |
2-0-2 |
This course provides an
overview of the software engineering discipline, introducing the student
to the fundamental principles and methods of software engineering.
This course highlights the need for an engineering approach to software.
The course presents software development processes at the various degrees
of granularity. This ranges from organizational processes to team
and individual engineer's processes. The role of standards (i.e.,
IEEE) is illustrated. CS majors may not receive degree credit for
this course. |
SWE 2642 Professional
Practices and Ethics
Prerequisite: CS 1002 and
either CS 1302 or SWE 1302 or IT 1124 |
2-0-2 |
This course covers the historical,
social and economic consideration of the discipline. It includes
studies of professional conduct, risks, and liabilities, and intellectual
property relative to the software engineering and computing professions.
Software engineering/computing case studies will be used. |
SWE 2623 Software Systems
Requirements
Prerequisite: SWE
2312 and MATH 2345 |
3-0-3 |
The process of extracting
and validating software requirements from a customer will be explored,
including levels of user/customer involvement, the dynamics of interviewing,
etc. A large part of the course will be devoted to problem domain
modeling using current analysis methods and supporting tools, including
rapid prototyping aids. Another important part of the course covers
the role of formal specifications in the validation process of requirements
specifications, and the use formal reasoning during software design, and
the ability to perform proofs of correctness. Working knowledge of
a formal specification language (i.e., the Z language) will be demonstrated
by a project. |
SWE 3103 Discrete Time
Signals & Systems
Prerequisite: SWE
3633 and MATH 2254 |
3-0-3 |
This course covers discrete
time signals, operations, linearity, sampling of continuous time-signals,
and discrete-time fourier transform. Frequency domain representation
and analysis as well as the design and the operators of filters will be
covered. |
SWE 3633 Software Systems
Architecture
Prerequisites: SWE
2623 and CS 3424 |
3-0-3 |
The size and complexity
of today's software systems require designers to go beyond algorithms and
data structures, and to focus on overall system structures. The course
examines complex systems from software architecture point of view.
Historical development of abstraction techniques in computer science in
terms of language, data types, and software architectures will be covered.
Other topics include static and dynamic structural issues, gross organization
and global control, protocols of communication, synchronization and data
access, partitioning and composition of design elements, assignment of
functionality and their physical distribution. |
SWE 3643 Software Testing
and Quality Assurance
Prerequisite: SWE
2623 |
3-0-3 |
This course will show how
software quality assurance and configuration management is performed and
how software process improvement is maintained in order to assure the highest
possible quality. Topics include software process metrics and their
use in QA, testing approaches, methods and techniques. Development
of QA plans, reviews, inspections and audits will be done. Configuration
control boards and methods for software process improvement is discussed. |
SWE 3683 Embedded Systems
Analysis & Design
Prerequisite: CS 3243 |
3-0-3 |
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 4324 User-Centered
Design
Prerequisite: CS 3423 for
CS majors; permission of CS Department Chair for others |
4-0-4 |
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 4624 Software Engineering
Prerequisite: CS 3424 |
4-0-4 |
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 4633 Component-Based
Development
Prerequisite: SWE
3643 |
3-0-3 |
The study of prefabricated
artifacts to be reused in software engineering will be covered. Concepts
include components and objects, black box vs. open-box composition, interfaces
and explicit context dependencies, horizontal vs. vertical domains, polymorphism,
type checking and substitutability. Product line patterns, frameworks
and architectures will be discussed. Connection-oriented programming
with event channels, CORBA event service and very late binding will also
be covered. JAVA beans and other connectivity such as OLE, DCOM,
and Active X will be covered. |
SWE 4643 Developing Reusable
Software
Prerequisite: SWE
3643 |
3-0-3 |
This course addresses both
technical aspects and engineering tradeoffs involved in creating reusable
software and in reengineering existing software to enhance its reusability.
Reuse-driven development process are described. Alternative methods
for domain analysis, domain design, and component implementation are presented,
comparisons drawn, and examples shown. Language design elements,
assignment of functionality and physical distribution will be covered. |
SWE 4653 Software Engineering
Economics
Prerequisite: SWE
3643 |
3-0-3 |
This course covers quality
assessment, cost estimation, configuration management, software performance
measures and management of the total quality environment for software development.
The course presents methods, tools, and techniques for estimating effort,
scheduling, resource requirements, and risk factors as determined by required
product features and quality attributes. |
SWE 4663 Software Project
Management
Prerequisite: SWE
3643 |
3-0-3 |
This course focuses on organizational
and technical roles in software engineering. Models of software engineering
life cycle, software maturity framework, strategies of implementing software,
software process assessment, project planning principles and tools, software
configuration management, managing software quality and usability, leadership
principles and legal issues will be covered. A required team project
combines technical and managerial techniques of software design and development. |
SWE 4724 Software Engineering
Project
Prerequisite: SWE 4624,
ENGL 2010 and SPCH 2400 |
4-0-4 |
This major project course
is a follow-up to CS 4624. Emphasis is placed on completing the entire
software engineering life cycle in team projects. Topics include software
development, testing, implementation, and user manuals. Software engineering
methodologies and some formal methods are covered. Software CASE tools
are utilized in the projects from planning and analysis through implementation. |
SWE 4743 Object-Oriented
Development
Prerequisite: CS 3123 and
CS 3424 |
3-0-3 |
This course covers the concepts
of object-oriented analysis, design, and programming. Topics include objects,
classes, messages, methods, encapsulation, and inheritance. Projects emphasize
object-oriented problem-solving and are implemented in languages such as
C++ or Smalltalk or Java. |
| |
|
|
| Software
Engineering Graduate |
SWE 6343 User Interface
Design and Implementation
Prerequisite: SWE 6623 |
3-0-3 |
This 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 6623 Software Engineering
I
Prerequisite: CS 5123/3424 |
3-0-3 |
This course covers the initial
phases of the software-development life cycle. Topics include planning,
requirements analysis, requirements specification, and design. A
number of techniques for performing analysis and design are explored and
applied in a major project. |
SWE 6633 Software Project
Management
Prerequisites: SWE 6623 |
3-0-3 |
Focus on organizational
and technical roles in software engineering. Emphasis on: models
of software life cycle, software maturity framework, strategies of implementing
software, software process assessment, project planning tools, software
configuration management, managing software quality and usability, leadership
principles, and professional and ethical issues. A required project
combines technical and managerial techniques for assessing software design
and development. |
SWE 6723 Software Engineering
II
Prerequisite: SWE 6623 |
3-0-3 |
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 in
the analysis, design, and implementation of a system. |
SWE 6743 Object-Oriented
Analysis and Design
Prerequisites: CS 5183/3663
and SWE 6623 |
3-0-3 |
This course explores the
object-oriented software development process including analysis, design,
and programming. Emphasis is on the object-oriented paradigm. |
SWE 6763 Software Metrics
and Quality Management
Prerequisite: SWE 6623 |
3-0-3 |
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 5183/3663
and SWE 6623 |
3-0-3 |
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 prototyping;
embedded systems in support of ubiquitous computing; and function-behavior
analysis. |
SWE 6813 Component Based
Software Development
Prerequisites: CS 5123 and
CS 5183 |
3-0-3 |
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 |
3-0-3 |
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
Construction and Testing
Prerequisite: CS 5243/3243 |
3-0-3 |
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 and
SWE 6623 |
3-0-3 |
This course involves a study
of formal methods applicable to software development with an emphasis on
methods that support formal specification and verification. Such
methods may include transformational techniques, logic-based formalisms,
algebraic and model-based specifications, tools, etc. |
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 permission. |
SWE 7903 Software Engineering
Capstone
Prerequisite: Satisfactory
completion of the MSSWE core (SWE 6623, SWE 6633, SWE 6723, SWE 6743, SWE
6763, and SWE 6883) |
3-0-3 |
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
project. |