Software Engineering (SWE)
Information and Software Engineering
432 Design and Implementation of Software for the
Web (3:3:0). Prerequisite: Math 125. 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.
619 Software 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.
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.
621 Software 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.
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).
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.
626 Software Project Laboratory (3:3:6).
Prerequisites: SWE 619, 620, 621 and 625, or permission of
instructor. Students are involved in requirements analysis,
design, implementation, and management of a software
development project. Students work in teams to develop or
modify a software product, applying sound principles of
software engineering. Both industrial and academic standards
are used to assess the quality of the work products.
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.
631/CS 631 Object-Oriented Design Patterns
(3:3:0). See CS 631.
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.
637 Software Testing and Quality Assurance
(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.
641/SYST 621 Systems Architecture for Large-Scale
Systems (3:3:0). See SYST 621.
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 the engineering
methods and technologies for building highly interactive web
sites for e-commerce and other web-based applications.
Engineering principles for building web sites that exhibit
high reliability, usability, security, availability, scalability,
and maintainability are presented. Methods such as
client-server programming, component-based software
development, middleware, and reusable components are taught.
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 in the course.
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.
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 specificationof
software
requirements. The course work includes a project
investigating or applying approaches to requirements engineering.
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.
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.
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.
781 Secure Software Design and Programming
(3:3:0). Prerequisites: INFS 762 and 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.
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.)
799 Thesis (6:0:0). Prerequisite: Permission of
advisor. Aresearch 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.)
|