University Catalog: 2008-09

Think. Learn. Succeed.

Software Engineering (SWE)

Computer Science

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 covered will be 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.

421 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 participate in a group project on software requirements, specification, and object-oriented software design.

432 Design and Implementation of Software for the Web (3:3:0) Prerequisite: MATH 125 and CS 211. Teaches how to develop software for web applications. Covers client-server computing, theories of usable graphical user interfaces, and models for web-based information retrieval and processing. Goals are to understand how to design usable software interfaces and implement them on web, learn how to build software that accepts information from users across web and returns data to user, and understand how to interact with database engines to store and retrieve information. Specific topics are HTML, CGI programming, Java, Java applets, Javascripts, and Java servlets.

437 Software Testing and Maintenance (3:3:0) Prerequisites: 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.

443 Software Architectures (3:3:0) Prerequisite: SWE 421. 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 requirements.

510 Object-Oriented Programming in Java (3:3:0) Prerequisites: 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 a graduate degree in the Volgenau School or the BS degree in computer science.

619 Object-Oriented Software Specification and Construction (3:3:0) Prerequisites: SWE foundation courses or equivalent. In-depth study of software construction using 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 In-depth study of methods, tools, notations, and validation techniques for 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 with Unified Modeling Language (UML) notation. Students participate in group project on software requirements and specification using modern method.

621 Software Modeling and Architectural Design (3:3:0) Prerequisite: SWE 619, with 620 recommended, or permission of instructor. MSCS students may substitute CS 540 and 571 for SWE 619. Concepts and methods for architectural design of large-scale software systems. Introduces fundamental design concepts and design notations. Presents, compares several design methods. In-depth study of object-oriented analysis and design modeling using the Unified Modeling Language (UML) notation. Students participate in group project on object-oriented software design.

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.

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, 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.

630 Software Engineering Economics (3:3:0) Prerequisite: SWE 625. Covers quantitative models of 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) Prerequisite: SWE 619 or 621, or CS 540 or 571; or graduate course in object-oriented programming or equivalent. Principles of object-oriented design through design patterns. Studies selection of appropriate object-oriented structure after system requirements or requirements specification of software system have been developed. Design patterns created in logic view of software system. Studies generalized design solutions for generalized software design problems, and reuse of design patterns. Once developed, design patterns may be specified in any object-oriented language.

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, web-based user interfaces.

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; 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 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.

645 Component-Based Software Development (3:3:0) Prerequisite: SWE 619, or CS 540 and CS 571, or permission of instructor. Introduces concepts and foundations of software component and component-based software. Detailed study of engineering principles of modeling, designing, implementing, testing, and deploying component-based software. Also explores state-of-the-art component technologies.

699 Special Topics in Software Engineering (3:3:0) Prerequisite: permission of instructor. Special topics not occurring in 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. 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. Includes project investigating or applying approaches to requirements engineering.

721 Reusable Software Architectures (3:3:0) Prerequisites: SWE 620 and 621. Investigates software concepts that promote reuse of software architectures. Studies influence of object technology on software design and reuse. Investigates Domain Modeling methods, which model the application domain as a software product family from which target systems can be configured. 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. Discusses ongoing advances in modeling techniques for software design, including precision, performance, security and safety aspects; and UML, its meta-models, and proposed enhancements such as Object Security Constraint Language, Object Temporal Constraint Language, QoS Profiles and the theory behind them.

727 Quality of Service for Software Architectures (3:3:0) Prerequisites: SWE 621 or permission of instructor. This course 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.

763 Software Engineering Experimentation (3:3:0) Prerequisite: SWE 621, or permission of instructor. Detailed study of scientific process, particularly using experimental method. Examines how empirical studies are carried out in software engineering. Reviews distinction between analytical techniques and empirical techniques. Other topics include experimentation required in software engineering, 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: 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 identification of potential threats and vulnerabilities early in design cycle. Emphasizes methodologies and tools for identifying and eliminating security vulnerabilities, techniques to prove absence of vulnerabilities, ways to avoid security holes in new software, and 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 contemporary problem in software engineering. Requires prior approval by faculty member who supervises student’s work. Written report also required. Maximum 6 credits may be earned. To register, students must complete independent study form, available in department office. It must be initialed by faculty sponsor and approved by department chair.

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. To register, students must complete an independent study form, available in department office. It must be initialed by the faculty sponsor and approved by the department chair. Research project is chosen under guidance of full-time graduate faculty member, resulting in written technical report.

799 Thesis (6:0:0) Prerequisite: permission of advisor. Research project completed under supervision of faculty member, which results in technical report accepted by three-member faculty committee. Report must be defended in oral presentation. To register, students must complete independent study form, available in department office. It must be initialed by faculty sponsor and approved by department chair.

825/IT 825 Special Topics in Web-Based Software (3:3:0) Prerequisite: SWE 642. Advanced topics in specifying, designing, modeling, developing, deploying, testing, and maintaining software written as web applications and web services. May be repeated with change in topic.