Master of Science in Software Engineering (MSSE) Curriculum

Definitions:
Software Engineering is “The establishment and use of sound engineering principles (methods) in order to obtain economically software that is reliable and works on real machines” [Bauer 1972].

“That form of engineering that applies the principles of computer science and mathematics to achieving cost-effective solutions to software problems.” [CMU/SEI-90-TR-003]

“The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software” [IEEE 1990].

Software Engineering is an established discipline that comprises requirement analysis, design, construction, testing, as well as the economics, and management issues of the creation and maintenance of software. A Software Engineer has the special knowledge and skills necessary to develop and maintain large, complex software systems. A Software Engineer approaches all of these problems in a pragmatic and organized way and is concerned with the theoretical and practical aspects of technology, cost, and social impact of effective and efficient software.

Degree programs in software engineering have many courses in common with computer science. However, when it comes to techniques concerned with the reliability of software and with developing and maintaining software that is correct from the start of its development, the engineering knowledge and experience provided in SE programs go beyond what general CS programs provide. It is considered a necessity by many professionals and educators in the SE field that students of SE should participate in the development of software to be used in earnest by others.

ITU’s curriculum for a MSSE is concerned with the technical and management issues of SE, but primary emphasis is placed on the technical aspects of building and modifying high quality software systems. It thus allows the students to prepare for careers in businesses that build and sell computers and/or software, in Internet based companies, electronic business organizations, diverse research and development laboratories, aerospace companies, banks, and insurance companies. The development of this graduate curriculum has taken the recommendations of the Joint Task Force on Computing Curricula of the IEEE Computer Society and the Association for Computing Machinery of August 2004 into consideration.

Admission requirements

An undergraduate degree is required for admission. If that degree is in the area of computer science or a related field then a minimum grade point average of 3.0 is required for the last half of courses taken that count for the degree. If the degree is in a different field then the minimum grade point average required for all courses that count for the degree is 3.0. Exceptions to these requirements are specified in the Admission Policy for the Unclassified Master Degree Program and can as well be made by the academic council.

Curriculum for MSSE

Below are listed the required and elective courses for the MSSE curriculum together with the prerequisites, if any. The course contents together with prerequisites, if any, are listed in the appendix. The number of courses specified below are the minimum for each category that must be chosen by the student. The CPT Internship courses must be chosen by students who are on Curricular Practical Training and only one CPT Internship course is allowed per semester.

The student must select courses from the categories below. (The credit units for each course are given in parentheses.)

Required core courses:
A minimum of 6 credit units from the courses below

SEN 920 Computer Algorithms (3)
SEN 941 Software Engineering (3)
SEN 942 Advanced Software Engineering (3)
SEN 944 Software Refactoring (3)
SEN 946 Software Requirements Elicitation (3)
SEN 950 Software Architecture (3)
SEN 956 Unix Operating System (3)
SEN 986 Software Design using UML (3)
SEN 964 OO Programming with Java (3) *
SEN 972 Java EE Programming (3) *

* Note: Only one of these courses will be considered as a core course.

Applied mathematics courses:
A minimum of 3 credit units from the courses below
Curricular Practical Training and Joint Seminars
The total maximum number of credit units that can be taken from this group is 9.
A minimum of 3 credit units from CPT
Exceptions can be granted by the department chair, in which case the missing credit units must be made up with electives.

CPT 993 CPT Internship I (3)
CPT 994 CPT Internship II (3)
CPT 995 CPT Internship III (3)
A maximum of 3 credit units from Joint Seminars
GRN 597 Joint Seminar (1)
Elective courses:
Any courses from this category that have not been selected in other categories can be chosen with the advisor’s approval. The student must choose courses to bring the total of selected credit units up to 36.
CEN 940 Network security techniques (3)
CEN 943 Digital Image Processing I (3)
CEN 951 Computer Architecture (3)
CEN 956 Distributed Computing systems (3)
CEN 960 Computer Communication Networks I (3)
CEN 966 Routing in Computer Networks (3)
MISY 915 Management Information Systems (3)
CS 810 Information Security Countermeasures (3)
CS 820 Principles of Ethical Hacking (3)
CS 830 Cloud Computing Security (3)
CS 901 Network & Data Security (3)
CS 904 Bio Informatics (3)
CS 910 Coding Theory (3)
SEN 760 SQA/Manual Testing (3)
SEN 860 SQA/Manual/Auto/Perf Testing (3)
SEN 890 Data Structures (3)
SEN 960 SQA/Performance Testing (3)
SEN 903 SAP ABAP (3)
SEN 905 Ruby on Rails (3)
SEN 951 Client Programming with JS/JQuery (3)
SEN 953 Compiler Design (3)
SEN 954 Server Programming with PHP(3)
SEN 955 Python Programming (3)
SEN 974 Client/Server and Internet (3)
SEN 993 Computer Graphics with HTML (3)

Total Minimum Credits Required = 36