SOFTWARE ENGINEERING
Program Requirements

The focus of the Master of Software Engineering (MSE) degree program is to teach the advanced state-of-the-art technologies in software development with hands-on experience, and to apply the knowledge to some challenging real-world problems. The program will guide the students to acquire both technical skills and software project management skills that are required to lead and to carry out software development projects.

Prerequisites for Admission
The students who wish to gain admission into the MSE program should have taken courses on the following topics or should have knowledge in these areas (evidence or supporting materials required):
1)  A modern programming language such as C, C++, Java, Eiffel, C#, or Smalltalk (UW-L equivalents: C-S 120, C-S 220,
     and C-S 224)
2)  Data structures and algorithms that include abstract data types such as List, Stack, Queue, Tree and Graph (UW-L
     equivalent: C-S 340)
3)  Discrete mathematics that includes topics on set theory, predicate logic, functions and relations (UW-L equivalent:
     MTH 225)

Students who lack any of these prerequisites must take additional courses (not counted for credit toward the MSE program) to meet the prerequisites requirement. A cumulative grade point average (GPA) of 2.85/4.0 is required in these courses. This restriction on GPA for the prerequisite courses has been imposed to ensure that the students have adequate background in software development. In particular, non-computer science students may also be admitted into the MSE program (see the admission requirements below), and hence a thorough knowledge of the topics covered in the prerequisite courses is necessary.

Admission Requirements
In addition to the prerequisites identified above, each student also must satisfy one of the following requirements:
1)  The student must have a bachelor’s degree in software engineering, computer science, computer engineering or an
     equivalent major, with an overall undergraduate grade point average (GPA) of at least 2.85/4.0 or a GPA of at least
     3.0/4.0 in the last half of all undergraduate work or a GPA of at least 3.0/4.0 for no fewer than 12 semester credits of
     graduate study at another accredited graduate institution.*
2)  The student must have a bachelor’s degree in any other discipline with an overall GPA of at least 2.85/4.0 or a GPA of at
     least 3.0/4.0 in the last half of all undergraduate work, and should at least have two years of working experience in
     software development. In this case, the student should provide at least two references from the work place. The
     referees should be able to comment on the knowledge and skills of the student in software development.

*A dual degree option allows UWL computer science students to apply for admission to the Master of Software Engineering program before completion of their undergraduate degree. Students seeking this option must consult an adviser early in their academic career to qualify for the dual degree.

More information can be obtained at www.cs.uwlax.edu/mse

Note:
Application deadline is May 1 of each year for fall semester and November 1 for spring semester.

Program Requirements (36 Credits)
Each student in the program should complete 24 credits of course work and 12 credits of project work. The course work consists of five core courses and three elective courses.

Core Courses: (15 credits)                                                                                                Credits
C-S         546         Object-Oriented Software Development                                                       3
C-S         741         Software Engineering Principles                                                                  3
C-S         742         Formal Methods in Software Development                                                                3
C-S         743         Software Verification and Validation                                                            3
C-S         744         Management Issues in Software Engineering                                                          3

Elective Courses: (9 credits)

                                                                                                                                      Credits
C-S         521         Programming Language Concepts                                                                  3
C-S         542         Structure of Compilers                                                                                3
C-S         549         Advances in Software Engineering                                                                 3
C-S         551         User Interface Design                                                                                 3
C-S         554         Digital Image Processing                                                                              3
C-S         555         Fundamentals of Information Security                                                            3
C-S         564         Advanced Database Management Systems                                                      3
C-S         570         Parallel and Distributed Computing                                                                     3
C-S         571         Data Communications                                                                                 3
C-S         750         Topics in Software Engineering                                                                    1-3
C-S         751         Seminar in Software Engineering                                                                  1-3
C-S         752         Independent Study                                                                                   1-3

Capstone Project Work: (12 credits)

                                                                                                                                       Credits
C-S         798         Software Development Project                                                                      1-6

C-S 798 is a 12-credit course involving a major software development project and requires the development of software for a particular application. Upon registering for this course, a student should choose a problem, analyze its feasibility in terms of time limits and resources, develop the requirements document and design (architectural and detailed) document, implement the design and demonstrate the product with appropriate test cases. A project proposal must be submitted to the Project Evaluation Committee (PEC) in the computer science department for approval before starting the project. This proposal should include the goals, project plan, time schedule, resource requirements and other details pertinent to the project. A student can register for the project course at any time by submitting the project proposal, and continue to work on the project thereafter. Depending on the work done in each term, the student will be given appropriate number of credits per term as outlined in the project proposal. PEC is responsible for checking the work proposed/done in each term and giving the appropriate number of credits.

At the completion of the project, the student should submit a written project report that satisfies the requirements stated in A Guide for Writing a Software Development Project Report (available from the computer science department). This report will be evaluated by PEC. After PEC has read the report (normally within a month after submission), an oral examination will be conducted. Members of PEC and the project supervisors/advisers (stated below) will serve as the examiners for this oral examination. The student will be given a pass/fail grade for the course at the end of the oral examination.

The project will address a real-world problem and hence will be selected from a source outside the computer science department. The purpose of this project work is to apply the knowledge gained in the course work to a real-world problem. The sources for selecting the problem include other departments (academic and administrative) in the university and industries. A faculty member in the computer science department and a supervisor in the unit from where the problem is chosen (another department or industry) will jointly supervise/guide the student. In the event of not being able to find a suitable project outside the computer science department, the student may seek a project given by one of the faculty members in the department. The same faculty will supervise/guide the student. The latter option provides an opportunity for students to conduct research in software engineering.