Course Descriptions

NSEN 6001 Software Engineering (3 sem. cr.)
This is a graduate-level introductory survey of the concepts and principles that underlie current and emerging methods, tools, and techniques for software development, validation, and maintenance. The class is not project-oriented, but instead concentrates on reading and individual practice of the techniques presented. Topics include life-cycle process models, system requirements capture, prototyping, formal and informal specification, program validation, object-oriented and functional design, testing, and software project management.

NSEN 6011 Formal Methods in Software Engineering (3 sem. cr.)
In this course, students consider the use of logic as an aid to program design. They discuss the formal semantics of programming languages, theorems about programs concerning transformations and state theorems, partial and total correctness, and formal models and model checking.

NSEN 6061 Software Measurement (3 sem. cr.)
This course includes topics such as measurement theory; development, validation, and use of software measures; software measures in the life cycle, including cost estimation; design measures; software complexity; programmer productivity; test coverage; software reuse; and software reliability.

NSEN 6111 Software Architectures (3 sem. cr.)
This course examines the top-level design or architecture of software systems. Students learn about various architectural styles and the types of applications for which they are most suited. They also consider different formalisms or architectural description languages for specifying software architectures and study frameworks and patterns. Also examined is the role of architecture in the overall software development life cycle.

NSEN 6251 Software Specification (3 sem. cr.)
This is a graduate-level survey of concepts, principles, and techniques related to software and systems specification. Topics include system modeling, requirements elicitation, analysis and documentation techniques, validation and prototyping, and formal methods. Students practice the techniques presented in class via individual and/or group exercises and a term project.

NSEN 6301 Object-Oriented Analysis and Design (3 sem. cr.)
This course is a study of object-oriented analysis and design. Students compare the different object-oriented software engineering methodologies and explore the object-model-to-database mapping process.

NSEN 6331 Embedded Systems Software Development (3 sem. cr.)
Embedded systems are involved in almost every facet of modern life, including cell phones, pagers, answering machines, microwave ovens, televisions, VCRs, CD and DVD players, video game consoles, remote controls, fax machines, and digital cameras. Modern automobiles may contain as many as 65 embedded microprocessors, controlling such tasks as antilock braking, climate control, engine control, audio system control, and airbag deployment. Embedded processor sales far outweigh any other type of microprocessor. This tremendous growth in embedded computing has given rise to demand for engineers with experience in designing and implementing embedded systems. This course is aimed at practicing embedded software engineers as well as those engineers planning to enter the embedded field. The course presents practical lessons and techniques for use in designing, implementing, integrating, and testing software for modern embedded systems. It describes what an embedded system is, what makes these systems different, and what embedded systems designers need to know to develop embedded systems. The course provides students with a life-cycle view for designing multi-objective, multi-discipline embedded systems.

NSEN 6411 Software Unit and Integration Testing (3 sem. cr.)
This is a graduate-level survey of concepts, principles, and techniques related to software testing and verification. Topics include inspections and reviews, black-box and white-box testing strategies, axiomatic verification techniques, predicate transforms, and function-based verification. Students practice the techniques presented in class via individual and/or group exercises.

NSEN 6414 Object-Oriented Testing (3 sem. cr.)
The focus of this course is on object-oriented and component-based software testing techniques, but many of the techniques discussed in this course can be used regardless of the development paradigm. The course describes what to test in object-oriented development efforts and techniques for how to test object-oriented software. It discusses real-world issues that arise in planning and implementing effective testing for object-oriented and component-based software development. The course explores how testing object-oriented software differs from testing procedural software and highlights the challenges and opportunities inherent in object-oriented software testing. The course also covers integration testing in each stage of development and describes what to test at each stage. This process, as well as specific testing techniques, is supported by comprehensive examples.

NSEN 6421 Software System-Level Testing (3 sem. cr.)
In this second graduate course on topics related to software testing and verification, topics include design-of-experiment approaches to test construction, statistical analysis of test results, proof of correctness, fault injection, and automated software testing. Students acquaint themselves with current papers in testing literature and practice the techniques presented in class via individual and/or group exercises.

NSEN 6471 Software Quality Management (3 sem. cr.)
In this course, students explore the plans and actions necessary to provide confidence that a software product conforms to established technical requirements. Topics include strategies for quality engineering, product review, development of test plans and procedures, testing, audits, and configuration management. Also covered are the concept of software quality, software metrics, Total Quality Management, and implementation of a software quality assurance process.

NSEN 6511 Software Project Management (3 sem. cr.)
This course covers techniques for planning, organizing, scheduling, and controlling complex software system development and support projects.

Print    Email this Page
l