Created by faculty from the Computer Science and
Engineering Department and by industry experts, the
MSSE curriculum delivers a powerful blend of software
engineering theory and practice. Expect program content
that is consistently cutting-edge, rigorous, and relevant.
Topics include requirements engineering, project
management, quality assurance, and database
management systems.
The curriculum is fixed for the first three semesters.
The fourth semester offers electives, including an optional
independent project. A total of 30 semester credits and
satisfactory performance on at least 3 class projects is
required for graduation. Following is a brief
semester-by-semester outline of the curriculum:
Semester 1:
SEng 5801: Software Engineering I
Topics in software engineering lifecycles, problem
specification and analysis, system design techniques,
and documentation. You will have an opportunity to
define and specify a medium-sized project.
(3 credits)
SEng 5707: Principles and Use of Database Management Systems
Hands-on course in database systems, including
modeling and querying. Fundamental concepts, data
models, data manipulation languages, extending data
types, database design, and security and integrity
policy. Application techniques for the use of database
systems. Concepts practiced in design and development
of database applications. (3 credits)
SEng 5899: Industrial Seminars
Four half-day tutorials on a variety of topics. (1 credit)
Here are a few samples of past seminar topics.
Seminars are generally scheduled on Saturdays, and are
open to the public.
- Professional ethics for software engineers
- Software re-engineering and maintenance
- ISO and SEI CMM process evaluation
- Legal and intellectual property issues
- Configuration management
- Internet commerce
- System management & computer security
- Safety-critical systems engineering
- Software engineering in a start-up environment
Semester 2:
SEng 5802: Software Engineering II
Developing fluency in object-oriented design. We study
semantics of object-oriented languages, strengths and
limitations of the object-oriented approach, processes
that can lead to good design outcomes, graphical and
textual representations for design including UML,
common problems and some of the patterns that can
solve them, and refactoring. Students develop an ability
to read and critique designs, and to clearly present and
advocate design ideas.
Students work in teams to
complete a multi-phase design project.(3 credits)
SEng 5811: Software Testing and Verification
Theoretical and practical
aspects of testing software. Students participate
in the entire range of test activities, from analyzing a requirements
document for test conditions through executing test cases and writing
a test report. In addition there will much discussion on the types of
testing that should be done, who should do it, and why it should be
done at all.
At course completion, the student should confidently be able to
organize and carry out the software testing phase for any small or
medium-size software project. (2 credits)
SEng 5852: Quality Assurance and Process Improvement
Theory and application of the capability maturity
model: process assessment, modeling, and
improvement techniques. Life cycle issues related to
development and maintenance, quality, safety, and
security assurance, project management, and automated
support environments. Students participate in group
projects and case studies. (3 credits)
Semester 3:
SEng 5851: Software Project Management
Team building and motivation, team organization.
Issues faced in the management of large software
development projects: cost estimation, scheduling,
planning, execution, monitoring, evaluation, and
refinement. Students participate in group projects and
case studies. (3 credits)
SEng 5861: Introduction to Software Architecture
Software architecture process and artifacts. Description
of architectures; evaluation of the RUP architecture
process; introduction to evaluating architectures; and a
short review of architectural description languages
(ADLs) and architecture patterns. (3 credits)
SEng 5899: Industrial Seminars
Four half-day tutorials on a variety of topics. (1 credit)
Semester 4:
SEng 5115: Graphical User Interface Design and Evaluation
Design and evaluation of interactive application
interfaces, user- and task-centered approaches to
design, guidelines for graphical design, a variety of
interface evaluation techniques, and an overview of
current interface trends including web interfaces and
information visualization. Students work in groups
on a course-long project that includes designing,
prototyping, and evaluating an application
interface. (3 credits)
Electives
Each year, second-year students vote for a set of
elective offerings, and may register for 1 or 2
electives in the fourth semester. Examples of
electives offered in recent years include:
SEng 5131: Network Programming and Distributed Object Systems
Tools, techniques, and design principles behind these
systems. Design, deployment, and maintenance
issues; multi-tier and peer-to-peer architectures;
security and transactional issues that present unique
challenges in distributed systems. Students will
design and implement a distributed system using
elements of the J2EE tool set.
SEng 5511: Artificial Intelligence and Software Agents
Problems in search, logic, and game playing, first order
predicate logic, inference, and knowledge
representation. Definitions of "intelligent" or
"autonomous" agents, agent classifications, agent
architectures, and various application areas,
such as electronic commerce and robotics.
Includes a semester project, which may be done
individually or in teams.
SEng 5708: Data Analytics
Data Analytics is the collection of technologies that
enable an enterprise to analyze its entire collection of
data to extract knowledge that can help it in its day-today
functions as well as strategic directions. Practically
every function of the enterprise, including marketing,
customer service, operations, security, purchase, etc.,
can benefit from it. This course provides a detailed
introduction of the technologies that comprise data
analytics, including data warehousing, data mining, and
reporting, with a strong emphasis on applications.
SEng 5831: Software Development for
Realtime Systems
Real-time systems are systems in which a timely
response by a computer to external stimuli is vital to
the performance of the system's objective.
We begin with basic computer architecture and hardware
elements relevant to the study of real-time
issues, including low-level input/output
devices, interrupt controllers, and CPU
cores. Next we study software
design and specification methods such as flowcharts, state
transition diagrams (finite state automata), and petri
nets. Finally, we move on to real-time kernels,
including task scheduling, interrupt latency,
and communication and synchronization of tasks.
SEng 8891: Independent Project
Students will work individually or in teams with an
advisor on an advanced software or research project.
(2 or 3 credits)