CSSE 571 Software Requirements and Specification
Students will learn how to capture software requirements and handle difficult situations in gathering data to build systems. Special emphasis is given to working with clients and to learning about the needs of users who interact with a system. The course addresses elicitation, specification, and management of software system requirements. Additionally, the course examines iterative prototyping user interactions for a system.
CSSE 574 Software Design
Students learn about effective approaches for designing complete software systems using object-oriented techniques and design patterns. Architectural principles and alternatives, detailed design documentation, and relationships between levels of abstraction are examined in the context of an evolving system requiring tradeoff analysis and communication of the alternatives.
CSSE 575 Software Maintenance and Evolution
This course builds upon the key methods and techniques associated with constructing software to ensure the maintainability and evolution of software products. Key elements of software maintenance process, impact analysis, software reengineering/reverse engineering/design recovery, source code analysis are examined. Then topics on how to produce software systems with the measurable maintainability properties are covered from both theoretical and practical perspectives. Advanced topics in model-based engineering for evolvable products are also examined along with emerging technologies that are relevant to the sustainability of software.
CSSE 576 Software Quality Assurance
This course examines the theory and practice of assuring that a product conforms to its specification and intended use. Basic topics include software quality assurance methods, test plans and strategies, unit level and system level testing, software reliability, peer review methods, and configuration control responsibilities in quality assurance. This course stresses quality in the software process, and introduces quality programs such as the Software Engineering Institutes Capability Maturity Models, Total Quality Management, and Six Sigma as well as programs from systems engineering such as Lean Development.
CSSE 579 Software Project Management
Software Project management serves as a central element of successful software engineering and its response to ever-changing software product’s. This course examines project management from the perspective of producing and maintaining a software product. Topics include software risk management, software estimation, software process, scheduling, rework, stakeholder management, software team building, and conflict management. Additionally, program management and portfolio management are addressed with topics like project evaluation and selection, scope management, contingency planning, are examined in term of key issues and techniques to address them.
EMGT 587 Systems Engineering
Introduces system engineering and analysis techniques, including the systems life cycle, system design procedures, risk analysis, analysis methods including reliability and maintainability. Provides applications for mechanical, electrical and a wide variety of other systems. Uses Visio or CORE software to create IDEFO drawings and other documentation for system design.
Software Engineering Elective Courses
CSSE 572 Software Process Improvement
This course explores the key processes and activities necessary to produce software. Software processes exist for various forms ranging from a standard systems engineering oriented linear process to highly iterative discovery processes. The course examines how to select the effective process(es) for the types of projects that confront today's software engineers. To determine process effectiveness and performance, software metrics is also covered from a process perspective in order to understand statistically based process improvement approaches. This includes introduction to foundations of measurement, models of software engineering measurement, software products and process metrics, and metrics management.
CSSE 573 Formal Methods in Specification and Design
This course provides both an introduction to the use of mathematical models of software systems for their specification and validation as well as a deeper examination of emerging formal specification methods and models. With the advancement of model-based software engineering, formal specification and generative topics has taken center stage. This course provides the student with the fundamentals of formal methods and provides insights into practical applications using current tools like Z, B, VDM++, and Alloy. Topics include finite state machine models, axiomatic and algebraic approaches, models of concurrent systems, verification of models, and limitations of these techniques.
CSSE 577 Software Architecture
This is a course in the architecture and design issues and tradeoffs, of complete commercial systems. Topics include building on components and make/buy decisions, quality attribute optimization, architectural principles and alternative styles, high-level design documentation, and modeling practices in human interface design.
CSSE 578 Software Construction
This advanced course goes beyond programming and examines construction methods and techniques associated with producing software products. In addition to detailed design methods and notations, implementation tools/environments, coding standards and styles, peer review techniques, and the like, the student is exposed to component-based systems, reuse-based software construction, and generative systems approaches to provide an appreciation for how software systems are constructed in contemporary software engineering organizations.
Specialization Elective Courses
CSSE 513 Intelligent Systems
Theory, design, and engineered use of knowledge-based and case-based AI systems using available commercial tools as illustrations. Modeling and implementing intelligent behavior using such systems. Examples will be drawn upon from agent-based systems, swarms, and autonomous systems to give the student an appreciation for the techniques involved.
CSSE 532 Computer Networks
This course examines the fundamentals of computer network organization, design, and implementation of computer networks, especially the Internet. Network protocols, protocol layering, flow control, congestion control, error control, packet organization, routing, gateways, connection establishment and maintenance, machine and domain naming, security. Each of the top four layers of the Internet protocol stack: application (FTP, HTTP, SMTP), transport (TCP, UDP), network (IP), link (Ethernet). Advanced topics in computer networks are presented with respect to emerging computing trends and architectures.
CSSE 533 Database Systems
This course provides a brief introduction to key relational database concepts with a review of entity relationship diagrams for data modeling, properties and roles of transactions, and SQL for data definition and data manipulation. The course then provides a substantive examination of contemporary APIs for access to databases through enterprise examples from several application domains. Advanced topics are selected from object-oriented databases, object-relational databases, query processing, transactions, transaction logging, concurrency control, database recovery, parallel and distributed databases, security and integrity, data mining and data warehousing to round out the course for the software engineering professional.
CSSE 542 Computer Security
This course introduces foundational computer security topics such as access control matrices and standard system models, as well as policies for security, confidentiality, and integrity. Additional topics include malicious logic, vulnerability analysis, and auditing. Computer network attack techniques are discussed and explored in a closed environment to motivate and inform discussion and exploration of computer network defense techniques. Design and implementation issues include key management, cipher techniques, authentication, principles of secure design, representation of identity, access control mechanisms, and formal evaluation and certification techniques are presented in the context of engineering security properties into a software system from the beginning (rather than bolting them on afterwards). Throughout the course, the student will be given an appreciation of ethical, theoretical, and practical issues of information security in light of vulnerabilities that enable impersonation, viruses, worms, and other emerging threats. Key threat models will be examined with respect to the current security practice.
CSSE 590 Advanced Topics in Software Engineering Pre: Graduate standing or permission of instructor
This advanced topics course is designed to provide a mechanism for introducing emerging or specialized topics into the MSSE curriculum. Instructors will provide specifics for these courses as they pertain to the topic and teaching approach.
CSSE 591 Directed Independent Studies in Software Engineering
This course provides a mechanism for independent study on advanced software engineering subject relevant to a student’s graduate studies goals, but not included in regularly offered courses. May be repeated for credit if topic or level is different. Pre: Graduate standing and, permission of MSSE program director and instructor.
EMGT 522 Organizational Behavior
Review of fundamental activities (planning, organizing, leading, controlling) related to the management of organizations. The concepts and techniques for maximizing the effectiveness of human resources in the achievement of organizational and project goals are emphasized. Topics include communication, team process, motivation, selection, development, and appraisal. Special focus is given to the management of human resources in a technical environment.
EMGT 523 Marketing Issues in a Technical Environment
A study and overview of the components of marketing principles and how those mesh with management in a technical environment. Topics will include activities associated with product, price, promotion, and distribution and how these impact the technical manager from idea generation through delivery to and service for the customer.
EMGT 526 Technology Management and Forecasting
Elements of managing the growth and operation of the technological systems. Technology forecasting tools including expert methods, quantitative trend analysis, simulation, and gaming. Consideration of secondary forecasts, especially those of social and economic nature. Techniques for enhancing creativity, managing multi-disciplinary projects and impact assessment techniques are considered. Computer-based forecasting tools are applied.
EMGT 533 Intercultural Communication
The core of this course is the presentation of the Constructivist theory of communication and its application. Students are exposed to ethnographic interview methods and the concept of culture shock using the BAFA role-play simulation. Discussion of organizational culture includes a review of publications on this topic, the impact of culture on organizations, as well as strategies for change. May be used as a management core class.
EMGT 535 Globalization, Strategy and Organizational Change
Reviews the strategy literature and the issues surrounding strategy implementation in the context of organizational change. Includes a team project that explores the strategic implications of globalization for specific industries during the next 10 years and the construction of scenarios as a tool for understanding and communication. Individual students will develop and evaluate strategy for a specific organization within the scenarios developed in the team project.
Required Capstone Project Sequence
CSSE 597/8 Capstone Software Project I and II
Credits as assigned; however, not more than 8 credits can be applied to MS degree requirements Pre: Completion of technical component and business core or permission of instructor
The integration of software project, process, and technical considerations in new software product production and evolution. The identification of software engineering challenges faced in producing a commercially viable product. The focus is on a substantial team project involving 4-5 team members interacting with a software consuming/producing organization. This integrated project must include the identification of a new product including key business and technical issues, development of a viable software project plan, a valid requirements specification, a relevant software architecture, a verifiable software product design, and a testable software product to be delivered to the customer. A final report with oral presentations is required.