Software Engineering

Requirements for Admission:
Degree requirements:
Track Options
Courses of Instruction

IMPORTANT: Curriculum and degree program requirements are currently under revision. Students should check with the department to determine current requirements and available courses.

The Master of Software Engineering program offers a professional graduate curriculum in the software development discipline. Software Engineering requires that professional expertise, technical skill, and managerial ability be focused on the specification, design, implementation, and maintenance of reliable and cost-effective software systems.

Requirements for Admission:

1) Admission to graduate study in the College of Science and Engineering, including the GRE, and
2) Appropriate level of technical competence demonstrated by transcripts, resumé, at least two letters of reference, and at least one of the following:
(i) One or more years of experience in software systems development, knowledge of assembler language programming, programming skill using a block structured language, and an undergraduate course in data structures or its equivalent, or
(ii) An undergraduate degree in a computer related field such as Computer Science or Computer Engineering.

Students may resolve the block structured language and undergraduate data structures requirements by successfully completing SOEN 50104, if all other requirements for admission are satisfied.

Degree requirements:

A 31-semester hour program with at least 19 hours of SOEN courses and 12 hours of electives. The following core courses are required of all students to complete the degree: 50143, 60113, 60123, and 60153. Students will also take 3 courses from one elective track: Management, Technical Programming, or Technical Systems. One additional elective must be taken from any track. The capstone sequence 70113, 70123, 70131 is also required. Six hours of Thesis 70980-70990 may be substituted for the capstone sequence with departmental permission. Electives chosen from courses other than SOEN courses require approval of the Computer Science Department prior to course enrollment. Each student must pass a final comprehensive oral examination during the last semester of coursework.

Track Options

Management
*SOEN 60183:Database Systems
MANA 60033:Managing People
SOEN 60043:Software Quality Assurance and Metrics
SOEN 60053:Software Safety, Security, and Reliability
SOEN 60023:Advanced Topics - Graphical User Interface Development
SOEN 60023:Advanced Topics - System Simulation
Technical (Programming)
*SOEN 60173:Computer Systems Architecture
SOEN 50123:Object-Oriented Design and Programming
SOEN 60023:Advanced Topics - Distributed Systems
SOEN 60013:Software Design and Develop-ment with Ada
SOEN 50503:Artificial Intelligence
or 60023:Expert Systems
SOEN 60023:Advanced Topics - Software Development with UNIX
Technical (Systems)
*SOEN 60173:Computer Systems Architecture
SOEN 60023:Advanced Topics - Software Development with UNIX
SOEN 60023:Advanced Topics - Networking
SOEN 60023:Advanced Topics - Distributed Systems
SOEN 60053:Software Safety, Security, and Reliability
SOEN 60183: Database Systems
SOEN 60023: Advanced Topics - System Simulation
* Indicates required for this track

The following is a complete list of courses offered by this department. Go to Class Search on the Registrar's Page to see which courses are being taught this semester.

Courses of Instruction

50104 PROGRAMMING STRUCTURES Prerequisite: Departmental permission. Not applicable toward degree requirements for the B. S. in Computer Science. Introduction to block structure language including scope rules, recursion, pointer variables, and control constructs. Study of data structures including arrays, stacks, linked lists, trees, graphs, and files. Examples are selected from operating systems, compilers, and systems programming. A number of programming assignments in Pascal, C, or Ada will be made.

50123 OBJECT-ORIENTED DESIGN AND PROGRAMMING
Prerequisites: COSC 34003 or permission of the instructor. Introduction to object-oriented techniques including design methodologies and programming language support. Survey of new languages and extensions to existing languages which provide support for encapsulation, inheritance and polymorphism.

50143 INTRODUCTION TO SOFTWARE ENGINEERING
Prerequisite: Admission to the MSE program. May be taken with SOEN 50104. An introduction to software engineering with emphasis on process models. The evolution of conceptual process models is traced from the earliest waterfall model through incremental development to present day process architectures. An overview is also given of techniques for systems analysis, software cost analysis, configuration management, quality assurance, and maintenance. Software economics, planning, and management are introduced.

50503 ARTIFICIAL INTELLIGENCE
Prerequisite: Knowledge of a high level programming language such as Pascal or C, and previous exposure to predicate logic. Foundations of Artificial Intelligence; topics include logic, forward and backward chaining, state-space search, expert systems and automated reasoning. Projects may utilize the Prolog, Lisp, and Clips programming languages.

60013 SOFTWARE DESIGN AND DEVELOPMENT WITH ADA
Prerequisite: SOEN 50143. Ada is used as a vehicle to study modern software design and development techniques. Special emphasis is placed on the use of abstraction, information hiding, and safe programming practices such as strong typing. The unique features of Ada, such as packages, the use of generics, and tasking, are contrasted with much "smaller" languages such as C. Proposed extensions to Ada are also examined in terms of the additional complexity and overhead that these changes incur relative to the added generality that is obtained.

60023 ADVANCED TOPICS IN SOFTWARE ENGINEERING
Prerequisite: Permission of instructor and SOEN 60113, 60153, and 60173. Advanced topics of current interest in software engineering, such as User Interface Development, Object-Oriented Architecture, Networking and Distributed Systems, Software Environments, Expert Systems, etc. Students will study current literature. (May be repeated for credit when topic changes).

60043 SOFTWARE QUALITY ASSURANCE AND METRICS
Prerequisite: SOEN 60123. The principles and practices related to assurance of software quality through all life cycle development phases are studied. Metrics linked to productivity and software quality assurance requirements are studied, and their use in current software development processes is reviewed by examining samples of measurement practices at successful organizations.

60053 SOFTWARE SAFETY, SECURITY, AND RELIABILITY
Prerequisite: SOEN 60183. A study of the problems and legal issues involved in building safety-critical software systems, secure systems, and systems that require high reliability. Similarities and differences in these problem areas and procedures to deal with them are considered using current literature, case studies, etc.

60113 SOFTWARE REQUIREMENTS AND DESIGN
Prerequisite: SOEN 50143. A comprehensive study of state-of-the-art techniques for requirements definition and design of software systems. Customer to contractor communication practices and specification standards are discussed. Structured analysis, PSL/PSA, and other formal methods of software requirements definition are studied. Functional decomposition, data flow, data structure, and object-oriented software design methodologies are studied. Emphasis is placed on comparing and contrasting these methodologies and on selecting a methodology appropriate to various software engineering problems. A course project provides hands-on experience with the use of Computer Aided Software Engineering (CASE) tools for software requirements definition and design.

60123 SOFTWARE GENERATION, TESTING, AND MAINTENANCE
Prerequisite: SOEN 60113. The concluding phases of the software lifecycle from implementation through customer support are covered. Procedural language programming and alternative methods of software generation are discussed. Formal and pragmatic methods of module testing, software integration testing, and system verification and validation are studied. Software maintenance topics are considered from the viewpoint of reducing the customer's total software lifecycle cost. The course project begun in SOEN 6113 is completed and demonstrated.

60153 MANAGEMENT OF SOFTWARE DEVELOPMENT
Prerequisite: SOEN 50143. A comprehensive study of process considerations in software systems development. Included are software project estimating, planning, monitoring and controlling mechanisms; leadership and team building strategies; quality assurance issues; configuration management; and maintenance considerations.

60173 COMPUTERS SYSTEMS ARCHITECTURE
Prerequisites: SOEN 50143 and 50104 (or equivalent). The logical organization and functional behavior of computers are studied from the user's viewpoint. Fundamental principles in the design of the CPU, memory, and 1/0 devices of the traditional von Neumann architecture are presented. Performance acceleration of non-von Neumann architectures using such methods as caching, memory interleaving, pipelining, co-processors, reduced instruction sets (RISC), and multiprocessing are addressed. Several existing multiprocessor systems are studied in detail. Substitute courses may be taken with permission of the chair or faculty advisor.

60183 DATABASE SYSTEMS
Prerequisite: SOEN 50143. The requirements analysis and design criteria of database systems are studied with emphasis on relational databases. Design issues, including the use of normalized forms to optimize relational databases, are discussed. Students make use of the industry standard interactive command language SQL. Impacts of the operational environment, quality control, security, human/system interface requirements, systems specification and design are investigated.

70113 SOFTWARE IMPLEMENTATION PROJECT I
Prerequisites: SOEN 60123, 60153, 60173 or 60183. This course is the first of a contiguous two-semester sequence which applies the techniques of modern software development to actual problem solutions. Group projects will be assigned, based in part on the student's professional background. The projects will require the development of operational software, emphasizing group development processes to accomplish feasibility analysis, costing, planning, requirements specifications and preliminary design of the assigned project.

70123 SOFTWARE IMPLEMENTATION PROJECT II
Prerequisite: SOEN 70113. Preliminary design of the project assigned in SOEN 70113 is reviewed and the detailed design is executed. A critical design review is performed and the implementation, testing, and documentation are completed as a group process. Acceptance testing is accomplished to ensure that the software satisfies the user specification requirements.

70131 INDIVIDUAL STUDY AND TECHNICAL COMMUNICATION
Prerequisites: SOEN 60123, 60153, and departmental permission. Students will study some element of current coursework or a related area with the chosen faculty advisor and will prepare a technical paper of publishable quality. The paper will be submitted to an appropriate journal for publication.

70771
Selected when enrolling only for non-thesis examination or preparation for the examination.

70980 THESIS
Departmental permission is required.

70990 THESIS
Continuation of 70980. Prerequisites: 70980 and admission to candidacy.