|
Masters of Software Engineering Course Descriptions
About the Program
Accelerated BS-MSSWE
Graduate Certificates
|
SWE course descriptions are also listed in the University Catalog
|
SWE 205 - Software Usability Analysis and Design (3:3:0).
Prerequisite: None.
Principles of user interface design. Concepts for objectively
and quantitatively assessing the usability of software user
interfaces. Outcomes include knowledge of quantitative engineering
principles for designing usable software interfaces and an
understanding that usability is more important than efficiency for
almost all modern software projects, and often the primary factor
that leads to product success. Major topics include cognitive models
for human perceptions and needs, which are used as a basis for
analytical and critical thinking about user interfaces; specific
engineering principles for designing usable menus, forms, command
languages, web sites, graphical user interfaces and web-based user
interfaces. Assessments will include written analytical evaluations
of existing user interfaces, exams, and HTML-based design projects.
|
|
SWE 301 - Internship Preparation (0:0:0).
Prerequisite: Limited to ACS or CS majors with junior standing or permission of instructor.
Preparation for Internship Educational Experience. Intended for,
but not limited to, students planning internships in the Applied
Computer Science Software Engineering Program. Internship employment
opportunities. Basic interview skills. Techniques for applying
academic knowledge to practical software development. Techniques for
extracting knowledge from practical experience. Peer presentation
from students who have completed internships.
|
|
SWE 321 Software Requirements and Design Modeling (3:3:0).
Prerequisite: CS 211.
An introduction to concepts, methods, and tools for the creation of large-scale software systems.
Methods, tools, notations, and validation techniques to analyze, specify, prototype, and
maintain software requirements. Introduction to object-oriented requirements modeling,
including use case modeling, static modeling, and dynamic modeling using the Unified Modeling Language (UML)
notation. Concepts and methods for the design of large-scale software systems. Fundamental design concepts
and design modeling using UML notation. Students participage in a group project on
software requirements, specification, and object-oriented software design.
|
|
SWE 332 Object-Oriented Software Design and Implementation (3:3:0).
Prerequisite: CS 211.
In-depth study of software design and implementation using a modern, object-oriented
language with support for graphical user interfaces and complex data structures.
Topics cover specifications, design patterns, and abstraction techniques, including
typing, access control, inheritance, and polymorphism.
Students will learn the proper engineering use of techniques such as information hiding,
classes, objects, inheritance, exception handling, event-based systems, and concurrency.
|
|
SWE 401 - Internship Reflection (1:1:0).
Prerequisite: SWE 301 and completion of internship.
Reflection on Internship Educational Experience. Intended for,
but not limited to, students completing internships in the
Applied Computer Science Software Engineering Program. Analysis of
techniques for applying academic knowledge to practical software
development. Analysis of techniques for extracting knowledge from
practical experience. Student presentations summarizing internships
relating them to academic program goals.
|
|
SWE 432 Design and Implementation of Software for the Web (3:3:0).
Prerequisite: Math 125 and CS 321.
This course teaches students how to develop software for web applications.
The concepts of client-server computing, theories of usable graphical user interfaces,
and models for web-based information retrieval and processing are covered.
Goals are to understand how to design usable software interfaces and implement
them on the web, learn how to build software that accepts information
from users across the web and returns data to the user, and
understand how to interact with database engines to store and
retrieve information. Specific topics that are included are HTML, CGI
programming, Java, Java applets, Javascripts, and Java servlets.
|
|
SWE 437 Software Testing and Maintenance (3:3:0).
Prerequisite: CS 211 and Math 125.
Concepts and techniques for testing and modifying software in evolving environments.
Topics include software testing at the unit, module, subsystem, and system levels;
developer testing; automatic and manual techniques for generating test data;
testing concurrent and distributed software; designing and implementing software
to increase maintainability and reuse; evaluating software for change;
and validating software changes.
|
|
SWE 443 Software Architectures (3:3:0).
Prerequisite: SWE 321.
This course teaches how to design, understand, and evaluate software systems at
an architectural level of abstraction. By the end of the course, students will be
able to recognize major architectural styles in existing software systems, describe
a system's architecture accurately, generate architectural alternatives to address
a problem and choose from among them, design a medium-sized software system that
satisfies a specification of requirements, use existing tools to expedite software
design, and evaluate the suitability of a given architecture in meeting a set of
system requirments.
|
Foundation Courses
|
SWE 510 Object-Oriented Programming in Java (3:3:0).
Prerequisite: Undergraduate courses or equivalent knowledge in programming in a high-level language.
This course introduces students to programming in the Java language.
Topics include problem-solving methods and algorithm development,
program structures, abstract data types, simple data and file
structures, and program development in a modular, object-oriented
manner. Introductory use of OO language features, including data
hiding, inheritance, polymorphism, and exception handling. Goals
include design and development of Java classes and class type
hierarchies. An introduction to Java servlets and applets is
included. Emphasis on program development is reinforced through
several programming projects. Credit cannot be applied to any
graduate degree in Volgenau School or the BS degree in computer science.
|
|
SWE 521 Software Engineering Essentials (3:3:0).
Prerequisite: Graduate standing.
Provides an overview of essential topics in software engineering,
including problem solving with computers, requirements, software design,
software development, testing, verification, validation, usability, and management.
The course will also discuss concepts related to building software,
including data structures, object-oriented programming, event handling in GUIs,
and web application technologies.
The course will discuss how these concepts are handled in various languages,
but without requiring the students to program.
Credit cannot be applied to any degree in the computer science department.
|
Graduate Courses
|
SWE 619 Object-Oriented Software Specification and Construction (3:3:0).
Prerequisites: SWE foundation courses or equivalent.
An in-depth study of software construction using a modern, object-oriented language
with support for graphical user interfaces and complex data structures.
Specifications, design patterns, and abstraction techniques, including procedural, data,
iteration, type, and polymorphic. Information hiding, classes, objects, and inheritance.
Exception handling, event-based systems, and concurrency.
|
|
SWE 620 Software Requirements Analysis and Specification (3:3:0).
Prerequisites: SWE foundation courses or equivalent.
An in-depth study of methods, tools, notations, and validation techniques for the analysis,
specification, prototyping, and maintenance of software requirements.
In-depth study of object-oriented requirements modeling, including use case modeling,
static modeling and dynamic modeling using the Unified Modeling Language (UML) notation.
Students participate in a group project on software requirements and specification
using a modern method.
|
|
SWE 621 Software Modeling and Architectural Design (3:3:0).
Prerequisites: SWE 619, with 620 recommended, or permission of instructor.
(MSCS students may substitute CS 540 and CS 571 for SWE 619).
Concepts and methods for the architectural design of large-scale software systems.
Fundamental design concepts and design notations are introduced.
Several design methods are presented and compared. In-depth study of object-oriented
analysis and design modeling using the Unified Modeling Language (UML) notation.
Students participate in a group project on object-oriented software design.
|
|
SWE 622 Distributed Software Engineering (3:3:0).
Prerequisites: SWE foundation courses or equivalent.
Hands-on introduction to techniques and programming interfaces for
distributed software engineering. Networking protocols at several layers.
Construction of distributed and concurrent software using network protocol services.
Applications of Internet and Web-based software.
|
|
SWE 623 Formal Methods and Models in Software Engineering (3:3:0).
Prerequisites: SWE 619 or permission of instructor.
Formal mechanisms for specifying, validating, and verifying software systems.
Program verification through Hoare's method and Dijkstra's weakest preconditions.
Formal specification via algebraic specifications and abstract model specifications,
including initial specification and refinement towards implementation.
Integration of formal methods with existing programming languages, and the application of
formal methods to requirements analysis, testing, safety analysis, and object-oriented approaches.
Formal methods using the Object Constraint Language (OCL).
|
|
SWE 625 Software Project Management (3:3:0).
Prerequisites: SWE foundation courses or equivalent.
Lifecycle and process models; process metrics; planning for a software project;
mechanisms for monitoring and controlling schedule, budget, quality, and productivity;
and leadership, motivation, and team building.
|
|
SWE 626 Software Project Laboratory (3:3:6).
Prerequisites: SWE 619, 620, and 621; or permission of instructor.
Covers requirements analysis, design, implementation, and management of
software development project. Students work in teams to develop or modify software product,
applying sound principles of software engineering. Uses both industrial, academic standards
to assess quality of work products.
|
|
SWE 630 Software Engineering Economics (3:3:0).
Prerequisite: SWE 625.
Covers quantitative models of the software lifecycle, cost-effectiveness analysis in
software engineering, multiple-goal decision analysis, uncertainty and risk analysis,
software cost estimation, software engineering metrics; and quantitative lifecycle
management techniques.
|
|
SWE 631/CS 631 Object-Oriented Design Patterns (3:3:0).
Prerequisite: SWE 619 or 620 or CS 540 or 571 or a graduate course in
object-oriented programming or equivalent.
Principles of object-oriented design through design patterns.
A study of the selection of appropriate object-oriented structure after the system requirements
or requirements specification of the software system have been developed.
Design patterns are created in the logic view of the software system.
A study of generalized design solutions for generalized software design problems.
A study of the reuse of design patterns. Once developed, design patterns may be
specified in any object-oriented language.
|
|
SWE 632 User Interface Design and Development (3:3:0).
Prerequisite: SWE 619, or CS 540 and 571, or permission of instructor.
Principles of user interface design, development, and programming.
Includes user psychology and cognitive science, menu system design,
command language design, icon and window design, graphical user
interfaces and web-based user interfaces.
|
|
SWE 637 Software Testing (3:3:0).
Prerequisite: SWE 619 or permission of instructor.
Concepts and techniques for testing software and assuring its
quality. Topics cover software testing at the unit, module,
subsystem, and system levels; automatic and manual techniques for
generating and validating test data; the testing process; static vs.
dynamic analysis; functional testing; inspections; and reliability
assessment.
|
|
SWE 641/SYST 621 Systems Architecture for Large-Scale Systems (3:3:0).
Prerequisite: SYST 510 or equivalent.
Introduction to system architecture for the technical description of large-scale systems.
An intensive study of the relationships between the different types of architecture
representations and the methodologies used to obtain them.
Systems engineering approaches for transitioning from functional descriptions to
structure and architectural descriptions. Analysis of existing architectures and
design of new architectures. The role of modeling, prototyping, and simulation
in architecture development. Executable models of system architectures and performance evaluation.
The role of the systems architect, the systems architecting process, and systems management
of architecture and design activities. System interoperability, integration, and interfaces.
A case study of a large-scale system conceptual architecture will be used to
demonstrate application of systems architecture principles.
|
|
SWE 642 Software Engineering for the World Wide Web (3:3:0).
Prerequisites: SWE 619, or CS 540 and 571, or permission of instructor.
Detailed study of engineering methods and technologies for building highly interactive web sites
for e-commerce and other web-based applications. Presents engineering principles for building
web sites that exhibit high reliability, usability, security, availability, scalability,
and maintainability. Teaches methods such as client-server programming,
component-based software development, middleware, and reusable components.
|
|
SWE 645 Component-Based Software Development (3:3:0).
Prerequisite: SWE 619, or CS 540 and CS 571 or permission of instructor.
Introduction to the concepts and foundations of software component and component-based software.
Detailed study of the engineering principles of modeling, designing, implementing, testing,
and deploying component-based software. State-of-the-art component technologies will also be explored.
|
|
SWE 699 Special Topics in Software Engineering (3:3:0).
Prerequisite: Permission of instructor.
Special topics not occurring in the regular SWE sequence.
May be repeated for credit when semester topic is different.
|
|
SWE 720 Advanced Software Requirements (3:3:0).
Prerequisites: SWE 620 and 621.
The course gives state-of-the-art and state-of-the-practice in software requirements engineering.
In-depth coverage of selected methods, tools, notations, or validation techniques for
the analysis and specification of software requirements.
The course work includes a project investigating or applying approaches to requirements engineering.
|
|
SWE 721 Reusable Software Architectures (3:3:0).
Prerequisites: SWE 620 and 621.
This course investigates the software concepts that promote reuse of software architectures.
The influence of object technology on software design and reuse is studied.
Domain Modeling methods, which model the application domain as a software product family
from which target systems can be configured, are investigated.
The course also covers reusable software patterns including architecture patterns and
design patterns, software components, and object-oriented frameworks.
|
|
SWE 722 Service Oriented Architecture (3:3:0).
Prerequisites: SWE 622 or PoI.
This course covers the state-of-the-art approaches to building dependable
Service-Oriented Architecture (SOA) software systems.
A variety of relevant topics are covered,
including SOA design principles,
implementation platforms and standards,
quality of service contracts,
runtime management of service providers,
and coordination and composition of services.
The course includes a final project to exercise the concepts covered in class.
|
|
SWE 723 Precise Modeling (3:3:0).
Prerequisite: SWE 621.
This course discusses ongoing advances in modeling techniques for software design,
including but not limited to introducing precision, performance, security and safety aspects.
UML, its meta-models and proposed enhancements such as Object Security Constraint Language,
Object Temporal Constraint Language, QoS Profiles and the theory behind them and
their implementations will be discussed.
|
|
SWE 727 - Quality of Service for Software Architectures (3:3:0).
Prerequisite: SWE 621 or permission of instructor.
Builds on acquired skills for modeling architectures, and focuses
on the relationship between architectural patterns and qualities
of service (QoS). By the end of the course, students will be able
to elicit the QoS preferences of stakeholder; recognize major
architectural styles and the QoS tradeoffs that each presents;
design for and reconcile competing QoS requirements; and evaluate
a given architecture with respect to a set of QoS requirements.
|
|
SWE 763 Software Engineering Experimentation (3:3:0).
Prerequisite: SWE 621 or permission of instructor.
A detailed study of the scientific process, particularly using the experimental method.
The course examines how empirical studies are carried out in software engineering.
The distinction between analytical techniques and empirical techniques is reviewed.
Other topics include experimentation required in software engineering,
kinds of problems that can be solved using experimentation, methods used to control
variables and eliminate bias in experimentation, and analysis and presentation of
empirical data for decision making.
|
|
SWE 781 Secure Software Design and Programming (3:3:0).
Prerequisites: SWE 619 or permission of instructor.
Theory and practice of software security, focusing in particular on some common
software security risks, including buffer overflows, race conditions and
random number generation, and on the identification of potential threats
and vulnerabilities early in the design cycle. The emphasis is on methodologies
and tools for identifying and eliminating security vulnerabilities,
techniques to prove the absence of vulnerabilities, and ways to avoid security holes
in new software and on essential guidelines for building secure software:
how to design software with security in mind from the ground up and to
integrate analysis and risk management throughout the software life cycle.
|
SWE 795 - Advanced Topics in Software Engineering (3:3:0).
Prerequisite: 12 credits applicable toward MS program.
Advanced topics not occurring in existing courses. Topics normally
assume knowledge in one or more existing MS SWE courses.
Note: Repeatable within degree for credit when subject differs.
|
|
SWE 796 Directed Readings in Software Engineering (3:3:0).
Prerequisite: Permission of instructor.
Analysis and investigation of a contemporary problem in software engineering.
Prior approval by a faculty member who supervises the student's work is required.
A written report is also required. A maximum of 6 hours may be earned.
(In order to register, the student must complete an independent study form,
which is available in the department office. The form must be initialed by
the faculty sponsor and approved by the department chairman.)
|
|
SWE 798 Research Project (3:3:0).
Prerequisite: 18 credits applicable toward MS.
Master's degree candidates undertake a project using knowledge gained in MS program.
Topics chosen in consultation with a faculty sponsor.
Prior approval required by faculty sponsor who supervises student's work.
Research projectg is chosen under guidance of full-time graduate faculty member,
resulting in written technical report.
(In order to register, the student must complete an independent study form,
which is available in the department office. The form must be initialed by
the faculty sponsor and approved by the department chairman.)
|
|
SWE 799 Thesis (6:0:0).
Prerequisite: Permission of advisor.
A research project completed under the supervision of a faculty member,
which results in a technical report accepted by a three-member faculty committee.
The report must be defended in an oral presentation. (In order to register,
the student must complete an independent study form, which is available in
the department office. The form must be initialed by the faculty sponsor
and approved by the department chairman.)
|
|
SWE 821 Software Engineering Seminar (3:3:0).
Prerequisite: SWE 621.
Study of application of software engineering principles,
design methods, and support tools through real-life problems extracted
from faculty and industry projects.
|
|
SWE 823 Software for Critical Systems (3:3:0).
Prerequisite: SWE 620 and STAT 554.
Study of software for systems in which failure can be catastrophic.
Presents techniques to construct and analyze software for critical applications
and examination of inherent limitations of such techniques,
and interaction between techniques used during development and behavior of software
during operation. Topics include tolerance of software faults, design redundancy,
data redundancy, software safety, formal methods, statistical testing,
design for analyzability, and design for testability.
|
|
SWE 824 Program Analysis for Software Testing (3:3:0).
Prerequisite: CS 540 or SWE 637.
Different methods for analyzing software, primarily for purpose of testing.
Analysis techniques, specific algorithms, tools, and applications.
Goals are to explore current research issues, learn how to build software analysis tools,
and understand how these techniques can be applied to software development activities.
Focuses on applications for testing software, including automatic test data generation,
object oriented testing, and testing client-server applications.
Also considers analysis techniques for other software-related activities such as maintenance,
reuse, object-oriented development metrics and optimization.
|
|
SWE 825 Special Topics in Web-Based Software (3:3:0).
Prerequisite: SWE 642.
Advanced topics in specifying, designing, modeling, developing, deplyoing, testing,
and maintaining software written as web applications and web services.
May be repeated with change in topic.
|
|
SWE 860 Software Analysis and Design of Real-Time Systems (3:3:0).
Prerequisite: SWE 623.
Background for students who want to conduct research in software engineering
of real-time systems.
Provides understanding of key real-time software system analysis,
design concepts and methods, and how they are used in developing large-scale,
real-time software systems.
Also explores potential impact of emerging technologies.
Includes term project in design and analysis of complex, real-time software system.
|
|