Masters of Science in Software Engineering
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 anagement 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.
An undergraduate degree is required for admission. If the undergraduate 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 undergraduate degree is in a different field then the minimum grade point average required for all courses in that degree is 3.0. Exceptions to these requirements can be made by the academic council.
Curriculum for MSSE
The MSSE curriculum provides for four different concentrations one of which must be selected by the student:
- Software Design
- Web Programming
- Computer Graphics
- Network Programming
In all four concentrations the student must select:
2 courses from the required core courses below for a total of 6 credits units . . . . 6
Required core courses
CEN960 Computer Communication Networks, TCP/IP (3)
SEN920 Computer Algorithms (3)
SEN940 Software Engineering (3)
SEN942 Advanced Software Engineering (3)
SEN944 Software Refactoring (3)
SEN946 Software Requirements Management (3)
SEN956 Unix Operating System (3)
SEN950 Software Architecture (3)
SEN980 Database Systems (3)
1 course from the applied mathematics courses below for a total of 3 credits units . . . . 3
Applied mathematics courses
AMN 912 Applied Mathematics Methods I (3)
AMN 920 Optimization Techniques I (3)
AMN 921 Optimization Techniques II (3)
AMN 922 Applied Mathematics Methods II (3)
AMN 930 Numerical Analysis (3)
AMN 940 Discrete Mathematics (3)
AMN 950 Fast Fourier Transformation & Applications (3)
AMN 952 Probability & Statistics for Engineers (3)
for a total of 3 credit units . . . . 3
Joint Seminars
GRN 597 Joint Seminar (3)
Each concentration must choose 1 course out of the concentration group for a total of 3 credit units . . .. . 3
Concentrations :
Software Design concentration
SEN 986 Software Design using UML (3)
SEN 943 Principles of Software Testing (3)
Web Programming concentration
SEN 911 Web Graphic Design (3)
SEN 962 Web page design using HTML and Java (3)
Computer Graphics Concentration
SEN 991 Computer Graphics I (3)
SEN 992 Computer Graphics II (3)
Network Programming concentration
CEN 966 Routing in Computer Networks (3)
CEN 965 Local Area Networks (3)
7 courses from the electives below with the advisor’s approval that have not been selected in the concentration, for a total of 21 credit units . . . . 21
Elective courses
CEN 560 Computer Communication Networks I (3)
CEN 922 Computer Architecture (3)
CEN 940 Network security techniques (3)
CEN 942 Image Processing (3)
CEN 956 Distributed Computing systems (3)
CEN 965 Local Area Networks (3)
CEN 966 Routing in Computer Networks (3)
CEN 968 Design and Maintenance of commercial web sites (3)
MISY 915 Management Information Systems (3)
SEN 905 Web Programming with Ruby on Rails (3)
SEN 909 Advanced OO Design using C++ (3)
SEN 911 Web Graphic Design (3)
SEN 932 Automation and testing via Perl, shell scripts, & make (3)
SEN 934 Database Management Systems (3)
SEN 935 Data Mining (3)
SEN 936 Software tools (3)
SEN 951 SAP ABAP programming (3)
SEN 952 SAP tools (3)
SEN 957 GUI Development with Java (3)
SEN 958 Android Phone Application Development (3)
SEN 960 Compiler Design
SEN 961 Cloud Computing (3)
SEN 962 Web page design using HTML and Java (3)
SEN 963 Unix, Perl and web management (3)
SEN 964 Advanced OO Design using Java (3)
SEN 965 I-Phone Application Development I (3)
SEN 966 I-Phone Application Development II (3)
SEN 967 Web Programming with Ajax (3)
SEN 970 OOP with Objective – C
SEN 974 Client/Server and the Internet (3)
SEN 985 Artificial Intelligence (3)
SEN 991 Computer Graphics I (3)
SEN 992 Computer Graphics II (3)
SEN 996 Independent Study (3)
SEN 998 Project (3 – 6)
SEN 999 Thesis (6)
total . .. . 36
Courses Description:
SEN 900 Software Engineering I (3 credit hours)
The course is the same as CSN 800, and meets 3 hours per week for 16 weeks. Requirements specification techniques, software design technique and tools, implementation issues, and software engineering and programming languages. Prerequisite: CSN 882
SEN 908 Visual Basic Programming (3 credit hours)
To learn how to use the visual basic programming environment and visual basic language to write applications with sophisticated Graphical User Interfaces (GUI) that run on an MS Windows platform. Prerequisite: CSN 922
SEN 909 Advance OO Programming with C++ (3 credit hours)
Syntax of C++, classes and objects, encapsulation, inheritance, polymorphism, design for reuse, and programming with objects. Prerequisite: CSN 381
SEN 910 GUI Programming Using Java (3 credit hours)
This course will provide the students with the graphical user interface (GUI) development using Java Swing. The majority of software today is written with a GUI. The GUI is how a software presents itself to the user and the outside world and through which the user interacts with the software. More and more effort in software development goes into the GUI since its quality can mean the success or the failure of the software. The student will acquire the essential knowledge and skill for user-friendly GUI development; maintaining responsiveness, stability; and complying with the most natural human expectations and reactions on a computer screen. Prerequisite: SEN 964
SEN960 OOP with Objective-C
All application development on the Mac and on the I-Phone is done in Objective C and its solid knowledge is a requirement for all development on these platforms. Even though Objective C is as old as C++ it is in the simplicity of its features and concepts more modern than C++ and offers features that neither C++ nor Java have. It is sufficiently different from either of these two to necessitate a course that teaches it. The vast majority of I-Phone developers out there today have only a rudimentary knowledge of Objective C and are therefore limited to only superficial application development. A useful preparatory curriculum for I-Phone application developers must include this course. This course adds to our traditional successful series of “OOP with . . .” courses that we continue to offer for the important Object Oriented languages.
SEN961 GUI Development with NS Library
The NextStep Library of GUI components is an elegant design of classes for GUI development, written in Objective-C. It is conceptually much clearer and easier to use than the Microsoft Visual C++ Library, although it does not reach the elegance and ease of use of Java Swing. Since it is the platform of choice for all GUI development on Mac and Iphone, its knowledge is a must. This class teaches the basic ideas of GUI development using NS, its approaches, its components, uses, event and exception handling mechanisms.
SEN965 I-Phone Application Development I
This is only a renaming of the existing course SEN965 I-Phone Application Development to distinguish it from the newly created successor course with the same name. It gives a comprehensive overview of the possibilities of I-Phone application development, the languages and tools used: the Xcode IDE, the Interface Builder, the IPhone simulator, and develops example applications for all areas: Graphics, Animation, Audio, Video, Web access etc.
SEN966 I-Phone Application Development II
The successor course for SEN965 I. It goes into depth from the standpoint of programming, allowing programmatical creation of existing GUI components without the often limiting use of the Interface Builder, allowing the design of new GUI components, and provides solid understanding of the event handling, threading and exception mechanisms. In short, it gives the designer mastery of the development tools, knowledge of the NS library, and thus the power to develop even the most complex and demanding Mac and I-Phone applications, for which only the developer’s own imagination is the limit.
SEN957 GUI Development with Java
Teaches the principles of Graphical User Interfaces (GUI) and develops GUIs using Java’s AWT and Swing libraries. Knowledge of and ability to use these libraries is of paramount importance in almost all of today’s software development and is not limited to development of Android Phone applications. The learning and programming of GUIs is most effective and rewarding using these Java libraries, considered by many as the best, simplest and most elegant of all GUI development tools and libraries. (Most Java GUI developers don’t use any visual development tools, since the design and concept of Java’s GUI libraries itself is so natural and easy to understand, that visual development tools become redundant). Teaches the basic principles of graphical user interfaces, the widget hierarchies, event handling mechanisms, event queue management, thread handling etc. It is in most ways a parallel course to Sen961 except for the language and component libraries used.
SEN958 Android Phone Application Development
Teaches the use of SDKs released by Google to facilitate the development of applications for the Android Phone. Android Phones are Linux based and are programmed in Java. This alone bodes very well for any software development on that platform: The Linux OS, the most powerful and easiest to manage of all operating systems, and the Java programming language with its superior GUI development capabilities. Knowledge of SDKs is certainly an advantage when developing for the Android platform.
SEN 911 Web Graphic Design (3 credit hours)
The art and profession of selecting and arranging visual elements — such as typography, images, symbols, Audio, video and colors — to convey a message to an audience. Sometimes graphic design is called “visual communications.” It is a collaborative discipline: writers produce words and photographers and illustrators create images that the web/Graphic designer incorporates into a complete visual message.
SEN 920 Computer Algorithms (3 credit hours)
Algorithm design, sorting algorithms, searching, graph algorithms, stacks, queues, and dictionaries implementations. Prerequisites: AMN 840, CSN 882 and SEN 909
SEN 929 Automata, Computability, and Complexity (3 credit hours)
This course introduces mathematical models of computation and the finite representation of infinite objects. It covers finite automata and regular languages, context-free languages, Turing machines, partial recursive functions, Church’s Thesis, undesirability, reducibility and completeness, time complexity and NP-completeness, probabilistic computation, and interactive proof systems.
SEN 930 Software Testing & Quality Engineering (3 credit hours)
Modern testing techniques based on black box or behavior testing, control flow and data flow testing, transaction based and finite state testing, domain testing, reliability testing, software reliability models, tools and automation. Prerequisites: SEN 500, SEN 509 or SEN 564
SEN 932 Software Testing & Automation Via Perl & Shell Script (3 credit hours)
Learn traditional (UNIX) software tools, such as shell scripts, Tcl/Tk scripts, Perl, make, and possible .BAT (Win32) files. Use of these tools to develop regression tests, automate software releases, handle email and perform general computer automation. Prerequisites: CSN 864 or CSN 881, and SEN 956
SEN 934 Database Management Systems (3 credit hours)
Data definition and manipulation languages (related algebra and calculus). Architecture of database management systems. Transaction management. Concurrency control. Security, distribution, and query optimization. Prerequisite: CSN 878
SEN 936 Software Tools (3 credit hours)
Techniques for building tools and interfaces, and design for different applications. Prerequisite: SEN 500
SEN 939 Software Innovation and Creation (3 credit hours)
This course introduces innovation concepts, theory behind, methodologies, and practical applications. It also covers software patent strategies, the boundary between patentable and non-patentable software, and intellectual patent laws.
SEN 941 SE I, Basic Software Engineering Elements (3 credit hours)
This course focuses on techniques used throughout the software engineering process. The software life-cycle and modeling techniques for requirements specification and software design are emphasized. Both traditional and object oriented approaches are addressed. A group project gives students hands on experience developing a software requirements specification and a working prototype. This is a project-based class where students are expected to start from a narrative of the problem, and then specify output reports, analyze the problem using special data modeling techniques (entity-relationship, relational, object-oriented), design data structures, and then follow through with a prototype. This course represents 45 contact hours required for 3 semester units or credits.
SEN 942 SE II, Software Engineering Methodologies (3 credit hours)
This course introduces the framework that is used to structure, plan, and control the process of developing a software system. This course covers the methodologies of waterfall, spiral method, scrum, and extreme programming and their recognized strengths and weaknesses as well. These methodologies are often bound to organizations, tools, and projects.
SEN 951 SAP ABAP Programming (3 credit hours)
ABAP is the language for programming SAP’s Web Application Server, part of its Net Weaver platform for building business applications. This course introduces the ABAP language environment, including the syntax checking, code generation and runtime system, and types of ABAP Programming.
SEN 952 SAP Tools (3 credit hours)
SAP Query is a powerful tool to get reports without any programming knowledge. In this course you will learn to create and design your own SAP Query reports. This course covers two SAP Query scenarios: (1) creating a simple SAP Query report when all information is available in a single table, and (2) creating an advanced join table SAP query when the information required is spread in different tables.
SEN 953 Programming Language Concepts (3 credit hours)
This course will cover a survey and critical comparison of a variety of computer languages. Issues include syntax, semantics, control structures, and data representation. There will be a discussion of both design and implementation of both imperative and declarative languages. This course represents 45 contact hours of instruction required for 3 semester units or credits.
SEN 956 The Unix Operating System (3 credit hours)
Using Unix, fundamental Unix commands, pipes and redirection, shells, processes, Unix system administration basics, internals of Unix, history of operating systems. Prerequisite: CSN 882
SEN 959 Operating System (3 credit hours)
This course will cover the basic principles of operating system design and implementation. Concurrent processes, inter-process communication, job and process scheduling; deadlock. Issues in memory management (virtual memory, segmentation, and paging) and auxiliary storage management (file systems, directory structuring, and protection mechanisms).
SEN 960 Complier Design (3 credit hours)
Parsing: comparison of LL versus LR. Use of a lexer and parser generator. Formation of syntax trees. Name management via a symbol table. Type resolution. Code generation issues. Simple optimizations, such as peephole optimizations, strength reduction, and constant folding. Prerequisites: SEN 920 and SEN 964
SEN 962 Web Page Design Using HTML and Java (3 credit hours)
This course introduces JavaScript, which can make HTML more powerful and dynamic. The topics covered are as follows: Create dynamic images, frames, dynamically update pages, JavaScript and cookies, plug-ins, cascading style sheets, and debugging. After finishing this course, the student will have a better picture of client side vs. server side, HTML vs. JavaScript and integrate JavaScript into web pages to create dynamic images, add smart forms, and detect which browsers and plug-ins that visitors are using so that one can customize the content. Prerequisite: CSN 364 or CSN 381
SEN 963 Unix, Perl and Web Management (3 credit hours)
Learn how to use UNIX commands and your ITU Linux account effectively. Understand UNIX basic: files, pipes, jobs, redirection, globing. Basic Perl and Java Script. Learn how to design, write, and maintain a small website. Learn how to write interactive web pages using either Perl CGI scripts or JavaScript. Learn how to run a Web server on UNIX. Prerequisite: SEN 556
SEN 964 Advance OO Design Using Java (3 credit hours)
This course is the same as CSN 464, meeting three hours per week. Introduction to Java, Application versus Applenet, Installing Java, variables, types, expressions, control constructs, java. Lang, Strings, Vectors, Hash tables, File I/O, The Java AWT, components, events, layout managers, Improved GUI libraries, Threads, Synchronization, Java intervals, Sockets, Writing a server and a client. Prerequisites: CSN 881 and CSN 881
SEN 965 Security Programming (3 credit hours)
This Secure Programming course gives students a good working knowledge of common programming problems and how to avoid them in their code. Students also gain the ability to review existing programming for vulnerabilities and how to rectify them. This course will help students get started on the right foot with Windows security APIs, Java Security, and give the students the foundation of knowledge needed to understand even the most obscure security concepts. It will also introduce the students to techniques for adding security-based features to various applications. Through carefully designed code and interfaces, students will be able to extract security information from objects easily and protect objects with a minimum of code. This is a programming and code-oriented class with lots of hands-on projects and exercises. Prerequisite: SEN909 or SEN964
SEN 969 Computational Models of Discourse (3 credit hours)
This course is an introduction of automatic discourse processing. It covers methods and models that apply to image and speech processing. The detail methods include discourse structure, models of coherence and cohesion, recognition algorithms, and image segmentation as well as machine learning methods for discourse analysis.
SEN 971 Storage Area Network (SAN) Implementation (3 credit hours)
In this comprehensive and practical course, the instructor will take you through all aspects of storage networking. First, the theory of how a SAN can help consolidate conventional server storage onto networks will be explained. Then students will understand how a SAN can help make applications highly available no matter how much data is being stored, which, in turn, makes data access and management faster and easier. Along the way, the course will provide students with practical advice on the design and implementation of this new technology and how it works to make the decision to adopt storage networking easier. Students will understand the theory of SAN technology, and appreciate the benefits of SAN. This course provides a detailed up-to-date coverage on the following topics: The evolution of computing in data centers leading to SANs, some killer applications for SAN technology, storage networking theory and its meaning to an enterprise information processing architecture, the software components required to implement SANs, and some practical issues in SAN implementation and management. Prerequisite: CEN 963
SEN 974 Client/Server and The Internet (3 credit hours)
This course covers the Client/Server paradigm in the context of the Internet: this includes CORBA architecture, Java programming language and its support to applications and applets. The core of this course is focused on Java extended APIs and their usage including: Sockets, Remote Method Invocations (RMI), Java IDL, Java Security APIs and Java Database Connectivity (JDBC). Prerequisite: SEN 509
SEN 976 Theory of Parallel Systems (3 credit hours)
This course introduces theoretical foundations of general-purpose parallel computing systems including languages, architecture and algorithms. It also covers multithreading, synchronization, race detection, load balancing, memory consistency, routing networks, and message-routing algorithms.
SEN 978 Knowledge-Based Applications Systems (3 credit hours)
This course covers knowledge representation, knowledge acquisition and application development which includes the knowledge base and the inference mechanisms. This course also covers some basic techniques of Artificial Intelligence. The course also provides hands-on experience in building a knowledge-based application.
SEN 979 Cryptography and Cryptanalysis (3 credit hours)
This course introduces the modern cryptography including the fundamental cryptographic primitives of public-key encryption, digital signatures, pseudo-random number generation, and basic protocols and their computational complexity requirements. It also introduces the study of methods for obtaining the meaning of encrypted information.
SEN 980 Database Systems (3 credit hours)
E-R and E-C-R model, view integration, relational database, network database, hierarchical database, and physical database design. Prerequisite: An undergraduate course in Data Structure or CSN 882
SEN 981 Pervasive Human Centric Applications (3 credit hours)
This course introduces applications for personal device assistants such as mobile phone, GPS, or iTouch. These applications include speech processing, vision, GPS, and more. The applications will run on handheld devices such as iTouch, cell phones such as iPhone or gPhone.
SEN 982 Oracle Database Architecture and Administration I (3 credit hours)
The course is the same as CSN 482, meeting three hours per week. It is composed of two parts: Oracle Architecture and Administration. The first part gives a comprehensive picture of Oracle architecture and discusses the concept of Oracle database and instance. The second part shows students how to create Oracle database, allocating system storage and planning for future storage requirements, creating and modifying database storage structure and objects, and controlling and monitoring user access to the database. Prerequisite: SEN 980
SEN 983 Oracle Database Architecture and Administration II (3 credit hours)
This is a continuation of SEN 982. It covers the availability and scalability issues, Oracle database architecture, backup/recovery concept, Oracle backup/recovery configuration, types of failures, and the usage of high availability features in Internet applications. Prerequisite: SEN 582
SEN 984 UNIX Networking Programming (3 credit hours)
The course will cover in detail the different interprocess communication (IPC) facilities available under the UNIX operating system to develop distributed applications in a network environment. Distributed application components can be executed on the same machine, or on different machines, or a combination. These IPC facilities have two main attributes, the IPC interface and the network protocol. The course covers in detail the following interfaces: pipes, FIFO, shared memory, message queues, semaphores, sockets, system V Transport Layer Interface (TLI), and Remote Procedure Calls (RPC). In addition, we cover a useful set of network routines that simplifies distributed programming. Prerequisites: CSN 881, CSN 882 and SEN 956
SEN 985 Artificial Intelligence (3 credit hours)
This course introduces the foundation of simulating (or creating) intelligence from a computational point of view. It covers the techniques of reduction, reasoning, problem solving, knowledge representation, and machine learning. In addition, it covers applications of decision trees, neural nets, SVMs and other learning paradigms.
SEN 986 Software Design Using Unified Modeling Language (UML) (3 credit hours)
This course is an introduction to object-oriented principles of software design using the Unified Modeling Language (UML). Object oriented systems offer the promise of constructing highly modular and reusable software components. In this course we will discuss what is meant by object oriented design from analysis, through system design to programming implementation. The course will focus on building the object-oriented (OO) analysis model for software engineering. Then it defines in depth principles of object orientation reviewing the characteristics that actually comprise a true object. The course covers the gathering of requirements for software design, software project organization & management, the role of design, use-case analysis, object modeling in software engineering and an introduction to design patterns. UML is presented in context throughout the discussion with emphasis on the practical application of OO principles and techniques, including the use of UML to solve real-world problems. Students are expected to write a detailed description of the design for each of the programs, incorporating UML models where appropriate. Students will implement their programs in the Java programming language. Prerequisites: CSN 874, CSN 882. Students should be familiar with Java, C++ or other language, some web programming as well as basic data structure concepts and some UNIX.
SEN 987 Program Analysis (3 credit hours)
This course introduces a variety of program analysis techniques and tools for software engineering applications. These techniques and tools are for static and dynamic analysis. Static analysis covers dataflow, type systems, model checking, decision procedures and theorem proving. Dynamic analysis covers testing, debugging for fault isolation, and model inference. This course also covers the tools to visualize the result of the program analysis.
SEN 989 Natural Language Processing (3 credit hours)
This course introduces the theory and practice of human natural language processing, with an emphasis on linguistic and cognitive from an engineering perspective. It covers syntactic and semantic processing and machine learning. Besides it also introduces applications of these methods and models in syntactic parsing, information extraction, and machine translation.
SEN 990 Introduction to Compiler Design I (3 credit hours)
Parsing: comparison of LL versus LR. Use of a lexes and parser generator. Formation of syntax trees. Name management via a symbol table. Type resolution. Code generation issues. Simple optimizations, such as peephole optimizations, strength reduction, and constant folding. Prerequisites: SEN 920 and SEN 964
SEN 991 Computer Graphics I (3 credit hours)
Computer Graphics I is a study of the hardware and software principles of interactive raster graphics. Topics include an introduction to the basic concepts, 2-D and 3-D modeling and transformations, viewing transformations, projections, rendering techniques, graphical software packages and graphics systems. Students will use computer graphics packages and implement fundamental computer graphics algorithms. This course represents 45 contact hours required for 3 semester units or credits.
SEN 992 Computer Graphics II (3 credit hours)
Historical development of computer graphics, black and white graphics programming, color raster graphics, resolution and memory requirements, look-up tables, vector graphics and matrices, surfaces, rotation & scaling, graphics primitive, and transformation. Prerequisite: AMN 840
SEN 994 X Window System Programming (3 credit hours)
Covering the spectrum of writing X window applications from the Xlib level up to Intrinsic, widget sets (Athena, Motif) and widget creation. Window managers, inter Xclient communication, resource specification.
Prerequisites: CSN 881 and SEN 956
SEN 996 1 Independent Study (3 credit hours)
By arrangement with instructor. Independent study of topics of special interest in software engineering under the direction of an instructor, who is knowledgeable in the field. It may consist of reading, homework, tests, presentation and project determined by the instructor. Prerequisite: Graduate standing
SEN 998 M.S. Project (3 or 6 credit hours)
By arrangement with project advisor. A nominal number of 3 or 6 credit hours is expected toward the M.S. degree if the Project Option is selected. Conduct independent research of an approved topic in software engineering, prepare a technical report, and defend it before a faculty advisor. Prerequisite: Graduate standing
SEN 999 M.S. Thesis (6 credit hours)
By arrangement with thesis advisor. A nominal number of 6 credit hours is expected toward the M.S. degree if the Thesis Option is selected. Conduct independent research of an approved topic in software engineering, prepare a thesis, and defend it before a committee composed of a number of faculty designated by department chair.
Prerequisite: Graduate standing
