Courses in Software Engineering (pending approval)
(Note that many other courses, such as those in databases,
or those that include software development, have material
related to software engineering.)


Undergraduate Course

3773  Software Engineering
      (3-0) 3 hours credit. Prerequisites: CS 3341 and CS 3343.
      Software development (analysis, specifications, design, implementation,
      and testing).  Design methodologies and programming standards.
      Development project in small groups, including acceptance test.


Graduate Courses

5103  Software Engineering
      (3-0) 3 hours credit. Prerequisite: CS 4773 or software development experience.
      Introduction to methods and tools for the requirements analysis and
      design stages of software life cycles. Discussion of software requirements
      including elicitation, modeling notations, analysis, and documentation.
      Brief overview of process models and project management. Examination of
      major architectural styles in existing software systems, design methods,
      design patterns, and reverse engineering. Course will include design
      experience using CASE tools.

5133  Software Testing and Quality Assurance
      (3-0) 3 hours credit. Prerequisite: CS 4773 or software development experience.
      Introduction of testing techniques of software systems: unit testing,
      integration testing, system testing, acceptance testing, and regression
      testing; test plan and test case design; quality assurance; verification
      and validation.

5153  User Interfaces and Usability
      (3-0) 3 hours credit. Prerequisite: CS 4773 or software development experience.
      This course focuses on the development of high quality user interfaces.
      The course reviews the basics of user interface development, tools, and
      use-case driven design techniques; examines the elements of good design
      and usability, metrics for usability, and procedures for user testing.

5343  Developing Secure Systems and Software
      (3-0) 3 hours credit. Prerequisite:  CS 3733.
      An examination of methods for designing secure computer systems, networks,
      and software.  Topics include the security development process, security
      policies and models, threat modeling, security code reviews and testing,
      the formal verification process, validation, and assessments.

6133  Software Specification and Verification
      (3-0) 3 hours credit. Prerequisite: CS 5103.
      This course introduces the theory and practice of formal methods for the
      specification and verification of computer-based systems. It emphasizes
      various techniques for modeling behavior of sequential and concurrent
      systems and reasoning about properties of models using automated analysis
      tools.

6193  Advanced Topics in Software Engineering
      (3-0) 3 hours credit. Prerequisite: CS 5103.
      Advanced topics in an area of software engineering. Topics may include but
      are not limited to agile software development, model-driven software
      development, designing embedded and real-time software, empirical software
      engineering, reengineering and software maintenance, and client/server
      development using open source tools. May be repeated for credit when topics
      vary.