MSSE Course Description

Required core courses:

CEN 966 Routing in Computer Networks
Prerequisites: None. (The code for this course in the catalog is CSN 866).
This course introduces different routing protocols (RIP, IGRP, EIGRP, OSPF, IS-IS and BGP) as well as new developments (multicasting and MPLS). Students will learn interior and exterior routing protocols that are currently being used in the Internet. In addition, they will study multicast routing and multi-protocol layer switching (MPLS).
CPT 993, 994, 995 CPT Internship
This course is Curricular Practical Training. For students who choose to do CPT, the course CPT 993 is a required core course. According to SEVIS: “Curricular practical training is defined to be alternative work-study, internship, cooperative education, or any other type of required internship or practicum that is offered by sponsoring employers through cooperative agreements with the school.” ITU provides for CPT with a variety of employers.
As part of each CPT course the student has to write a CPT report and submit it, together with a questionaire filled out by the employer, to ITU.
SEN 920 Computer Algorithms
Prerequisites:Knowledge of some programming language.
Algorithm design, sorting, searching, graph algorithms, stacks, queues, and dictionary implementations, divide and conquer algorithms, dynamic programming, randomized algorithms, amortized analysis, lower bound analysis, NP-Completeness.
SEN 941 Software Engineering (3)
Prerequisites: None.
This course covers basic software engineering elements. It focuses on techniques used throughout the software engineering process; the software lifecycle 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.
SEN 942 Advanced Software Engineering (3)
Prerequisites: SEN 941.
This course covers software engineering methodologies. It focuses on advanced techniques used in the software engineering process.
SEN 944 Software Refactoring (3)
Prerequisites: SEN 941.
Here is a definition by Fowler 1999: Software Refactoring is a change made to the internal structure of software to make it easier to understand and cheaper to modify without changing its observable behaviour. No course description is available yet.
SEN 946 Software Requirements Elicitation (3)
Prerequisites: None.
Requirements Elicitation is the process of identifying the real problems that the software stakeholder tries to solve, of defining a system and its technical environment, and of identifying the requirements of that system such that it solves these problems for users, customers and other stakeholders.
SEN 950 Software Architecture (3)
Prerequisite: None.
No course description is available yet.
SEN 956 Unix Operating System
Prerequisites: Knowledge of C.
This course focuses on the practical usage of the basic Unix operating system features. It introduces the student to the general principles of modern operating systems: preemptive multiprocessing; and of Unix in particular: shells, environment, shell variables, processes, threads, interprocess communication, the Unix file system, and shell scripts. Upon completion of this course the student will be able to work efficiently in a Unix environment, to tailor an environment to specific needs, to understand the basics of Unix system administration, to understand security risks, to write C programs that use system calls, and to write scripts for the C shell.
SEN 986 Software Design using UML (3)
Prerequisite: None.
No course description is available yet.

Applied Mathematics courses:

AMN 910 Linear Algebra
Prerequisite: Knowledge of C or Java.
This course covers the algebraic basic concepts of matrices and matrix operations, determinants, systems of linear equations, Gauss elimination, LU decomposition, vector spaces with inner product. Change of bases, transformations. Gram-Schmidt orthonomalization. Meaning and purpose of eigenvalues, eigenvectors and algorithms for computing them.
AMN 912 Applied Mathematics Methods
Prerequisite: AMN 910.
This course is intended to provide introduction and accessibility to ordinary and partial differential equations, linear algebra, vector analysis, Fourier analysis, special functions, and eigenfunction expansions for their use as tools of inquiry and analysis in modeling and problem solving.
AMN 920 Optimization Techniques
Prerequisite: None.
Basic concepts, unconstrained optimization, linear programming, simplex method, degeneracy, multidimensional optimization problems involving equality or inequality constraints by gradient and non-gradient methods.
AMN 921 Advanced Optimization Techniques
Prerequisite: AMN 920.
Combinatorial optimization, Hopfield neural network model, Simulated Annealing and Stochastic machines, mean field annealing, genetic algorithms, Applications to: Tabu search, traveling salesman problems, telecommunications problems, quadratic 0-1 & quadratic assignment problems, graph partition and graph bipartition problems, point pattern matching problems, multiprocessor scheduling problems.
AMN 950 Fast Fourier Transformation & Applications
This course is designed to provide electrical/computer engineering and applied mathematics graduate students with the background knowledge of Fourier Transformations (FT), Discrete Fourier Transformations (DFT) and Fast Fourier Transformations (FFT). The applications of FFT in Filter Design, Signal Processing and Image Processing are also included in this course.
AMN 930 Numerical Analysis
Prerequisite: Knowledge of C or Java.
Numerical solution of linear system of equations by direct method and iterative method, numerical least square problem, eigenvalue problem, numerical solution of non-linear systems of equations and optimization problem.
AMN 940 Discrete Mathematics
Prerequisite: None.
This course covers topics that are important in the development of computer algorithms and data structures, such as mathematical induction, asymptotic notations, recurrences, infinite series summations, graphs, digraphs, trees and counting combinatorics and discrete probabilities analysis and statistical quality control.
AMN 952 Probability & Statistics for Engineers
This course covers the fundamentals of probability and statistics, as well as some widely- used probabilistic models and statistical analysis methods for applications in the areas of engineering. Topics include probability axioms, random variables, densities, basic discrete and continuous distributions, sampling distribution and data descriptions, inferences on means and variances, one- and two-sample tests of hypotheses, linear regression, and analysis of variance. A free statistical computing and graphics software, R, will be used in this course.
Joint Seminars / CPT-Independent Study

GRN 597 Joint Seminar (1)
CPT 993 CPT-Independent Study I (3)
CPT 994 CPT-Independent Study I (3)
CPT 995 CPT-Independent Study I (3)

CPT-Independent Study is a report written by the student who is on CPT describing his/her activity during CPT, how the CPT contributes to his/her learning experience and how the material learned at the University is applied and contributes to the practical work.

Elective courses:

CEN 942 Digital Image Processing I (3)
Prerequisites: Knowledge of C or Java.
This course is intended to provide introduction to basic concepts and methodologies for digital image processing, and to develop a foundation that can be used as the basis for further study and research in this field.
CEN 951 Computer Architecture (3)
Prerequisites: None.
This course focuses on principles of computer architecture, offering students an overview of computer systems, CPU design, computer arithmetic, instruction set architecture, pipelining, microprogramming techniques, memory hierarchies and management, input/ output subsystem organization, and performance measurement. Its purpose is to prepare students to understand internal organization of computers and how it affects performance.
CEN 960 Computer Communication Networks, TCP/IP (3)
Prerequisite: None. (Has not been offered since 1998)
Overview, examples, ISO model, physical layer, delay analysis, data link protocols, point- to-point networks, multiple-access networks, local area networks, and selected topics.
CEN 966 Routing in Computer Networks (3)
Prerequisites: None. (The code for this course in the catalog is CSN 866).
This course introduces different routing protocols (RIP, IGRP, EIGRP, OSPF, IS-IS and BGP) as well as new developments (multicasting and MPLS). Students will learn interior and exterior routing protocols that are currently being used in the Internet. In addition, they will study multicast routing and multi-protocol layer switching (MPLS).
MISY 915 Management Information Systems (3)
Presequisites: None.
This course provides an introduction to management information systems and explains how computers are used and managed in organizations and how such technology assists management.Topics include the strategic role of information systems for managers, a survey of hardware, software, databases and networks, types of information systems, the design and acquisition of information systems, and ethical issues in information systems.
SEN 903 SAP ABAP (3)
ABAP is the language for programming SAP’s Web Application Server, part of SAP’s NetWeaver platform for building business applications. This course introduces the ABAP language environment, including the syntax checking, code generation and runtime system, and various features of ABAP Programming.
SEN 905 Ruby on Rails (3)
Prerequisites: None.
This course offers a comprehensive introduction to Ruby on Rails, an open source web application framework for the Ruby Programming language.
SEN 909 OO Programming with C++ (3)
Prerequisites: Knowledge of C.
This class teaches Objected Oriented Programming using C++. A prior exposure to C is helpful but not required as the basic concept of C programming will be reviewed. The topics covered include: Syntax of C++, classes and objects, encapsulation, inheritance, polymorphism, design for reuse, programming with objects, the standard template library, namespaces, exceptions, type casting and file input/output.
SEN 911 Web Graphic Design (3)
Prerequisites: None.
The art and profession of selecting and arranging visual elements — such as typography, images, symbols, audio,video and colours — to convey a message to an audience. Sometimes graphic design is called “visual communications.” It is part of a collaborative discipline: writers produce words and photographers and illustrators create images that the web/Graphic designer incorporates into a complete visual message. – This course is an introduction to graphic design theory with a focus on web design. It explores techniques that top designers use for creating visually engaging web sites. Teaches the skills, knowledge, tools and the artistic guidelines needed for creating appealing, professional looking webpages. Distinction between vector and raster graphics; Adobe Illustrator (vector graphics), Adobe Photoshop (managing and editing raster graphics), Adobe Flash (animation), DreamWeaver (combining all through HTML).
SEN 930 QA/Software Testing Tools (3)
Prerequisites: None.
This course introduces the QA with test methodologies and procedures. During the course, the students go through the Manual Testing and Automation of Client/server and web based applications. The course will quickly build through each of these concepts and configuration so that by the final day of class, each student will have fully tested the application manually and convert manual test cases into automation scripts. In doing so, the students will focus on different aspects and become acquainted with additional functions.
SEN 935 Data Mining (3)
The course provides an introduction to the theoretical concepts and practical applications of data mining. Data mining facilitates the extraction of hidden predictive information from large complex databases. It is a powerful new technology with enormous potential to help organizations and institutions extract and interpret important information. The course content includes the conceptual framework of data mining, descriptions and examples of standard methods used in data mining. Internet related data mining techniques are also covered.
SEN 936 Software tools (3)
Prerequisites: SEN500, SEN909 or SEN964.
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.
SEN 948 Mobile UI Design (3)
Pre-requisites: None
With smart phones and tablets becoming popular, mobile applications are important for delivering software function to users. Applications run on mobile platforms differ in many ways from the desktop ones, including user interface style, input mechanisms, display size and resolution. To design applications that are easy to use, and that integrate well across diverse mobile platforms and devices, you need to consider several factors beyond conventional desktop or web applications. This course will provide an overview of the design process and best practices for mobile applications. This course will also explore the key phases of the user experience design process that arise from academic research and industrial experience. Those include strategy, competitive and user research, persona development, UI (user interface) framework and design, usability testing and rapid prototyping.
SEN 949 Web Application Development with GWT (3)
Pre-requisites: Basic Java Programming, basic understanding of HTTP, HTML, JavaScript.
Google Web Toolkit (GWT) is an open source set of tools that allows web developers to create and maintain complex JavaScript front-end applications in Java. Using GWT, developers can rapidly develop and debug AJAX applications in the Java language using the Java development tools of their choice. When the application is deployed, the GWT cross compiler translates the Java application to standalone JavaScript files that are optionally obfuscated and deeply optimized.

This course will cover the following topics:

  • Tools and environment setup
  • GWT programming basics
  • Event handling
  • Server communication using RPC
  • Server communication through Ajax
  • Widgets and layout
  • Widget extension
  • Handling history
  • JSNI
SEN 952 Bioinformatics (3)
Prerequisite: None.
The course starts with a brief introduction to molecular biology. It then investigates the main algorithms used in Bioinformatics. After a brief description of commonly used tools, algorithms, and databases in Bioinformatics, the course describes specific tasks that can be completed using combinations of the tools and Databases. The course then focuses on the algorithms behind the most successful tools, such as the local and global sequence alignment packages: BLAST, Smith-Waterman; and the underlying methods used in fragment assembly packages. Lecture topics include Dynamic Programming for pairwise alignment; Hidden Markov Models for pattern recognition, conducting profile-based searches and transmembrane protein structure prediction; phylogenetic tree construction and RNA structure prediction; the use of SNPs and haplotypes in genomic variation, in pharmacogenomics, in genome-wide association studies and in personalized medicine. The course is self contained and does not assume any background knowledge in biology, although an interest is molecular biology is helpful. The course will be complemented by hands-on, computer lab sessions that will allow the participants to practice with some of the major tools and databases. Students will solve hands-on problems on HIV, BRCA1 gene, ß Thalassemia, etc..
SEN 953 Compiler Design (3)
Prerequisite: None.
This course is an introductory course on the design and implementation of compilers. It covers 4 main topics
1.The front end section includes scanning, parsing and context-sensitive analysis of the source program;
2. The infrastructure section provides the background knowledge needed to generate intermediate code in the front end, to optimize that code, and to transform it into code for a target machine;
3. The optimization section introduces optimizer, a compiler’s middle section;
4. The code generation section includes instruction selection, instruction scheduling and register allocation.
SEN 957 GUI Development with Java (3)
Prerequisites:SEN 964.
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.
SEN 958 Android Phone Application Development (3)
Prerequisites: SEN 964.
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 961 Cloud Computing (3)
Prerequisites: None.
Introduction to cloud computing, cloud architecture and service models, the economics and benefits of cloud computing, horizontal/vertical scaling, thin client, multimedia content distribution, multiprocessor and virtualization, distributed storage, security and federation/ presence/ identity/ privacy in cloud computing, disaster recovery, free cloud services and open source software, and example commercial cloud services.
SEN 963 Unix, Perl & web management  (3)
Prerequisites: None.
Learn how to use Unix commands and your ITU Linux account effectively. Understand Unix basic: files, pipes, jobs, redirection, globing. Basic Perl and JavaScript. 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.
SEN 964 OO Programming with Java (3)
Prerequisites: None.
This course focuses on the Java language as a tool for object-oriented programming. It introduces the student to the basic features of the Java language: primitive data types, terminal window-keyboard I/O, file I/O, classes, constructors and initialization, references
vs. objects, access modifiers, memory maps, control structures, arrays, inheritance, function overloading and overriding, dynamic binding, interfaces, command line arguments, and exception handling. Some instruction to the platform-independent Java GUI API with Swing will be provided.
SEN 965 I-Phone Application Development (3)
Prerequisites: Knowledge of C.
This course provides a training in iPhone application development including: Introduction to Objective-C; iPhone technologies: multi-touch interface, accelerometer, GPS, maps, proximity sensor, dialer, address book and calendar. It helps students to understand the business aspects of an application development.
SEN 966 Advanced I-Phone Application Development (3)
Prerequisite: SEN 965 and SEN 970.
This course teaches in depth the features of Objective-C, the UI class library, its use in I- Phone application development, the architecture of I-Phone applications, event handling mechanisms, exceptions, threads; the use of Interface Builder, and the Quartz library in writing high quality, complex i-Phone applications.
SEN 967 Web Programming with Ajax (3)

This course provides a comprehensive introduction to AJAX, the most popular web technique for creating better, faster and more interactive and user-friendly web applications. The students will not only learn the basic concepts and the low-level implementation of
AJAX technology but also be introduced a set of popular AJAX toolkits.

SEN 968 Design and Maintenance of commercial web sites (3)
Prerequisites: None.
This course focuses on the basic concepts of setup, designing and maintaining commercial websites. It introduces both the principles and skills of building websites that people will visit, use, bookmark and revisit. It covers the entire website building process from server setup and site planning to the designs of both the server-side storage and the client-side presentation.
SEN 970 OOP with Objective-C (3)
Prerequisites: Knowledge of C.
This course focuses first on teaching the Objective C language, its syntax, design, features, and capabilities, then on introducing the Cocoa Library, then on developing GUI applications using Interface Builder. Objective C is the principal language for application development on Apple’s Mac OS X and iPhone. On the Mac OS it is used together with Cocoa (the NS class library) and on the iPhone together with the UI class library. The course teaches in detail the syntax and features of the language, supported by many programming examples, drill quizzes and homework. It will use the Cocoa API and the Interface Builder to develop example applications for the Mac with a graphical interface. It starts with development of OC programs on the command line. Later the X-code IDE together with the Cocoa library and IB will be used for development. No textbook is used for the lecture, instead the student is given lecture notes on this website, that explain the whole material.
SEN 982 Oracle Database Management/Administration (3)
Prerequisite: None.
This course introduces Oracle as a practical example of a widely used database system, teaches basic database conepts, data definition and manipulation languages (SQL), general architecture of database management systems, transaction management, concurrency
control, security, distribution, and query optimization.
SEN 985 Artificial Intelligence (3)
Prerequisite: Knowledge of some programming language.
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 networks, support vector machines and other learning paradigms.
SEN 991 Computer Graphics (3)
Prerequisite: None.
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.
SEN 992 Advanced Computer Graphics (3)
Prerequisite: SEN 991.
The course gives students hands-on experience and thorough understanding of the most important computer graphics principles. It uses Java and its built-in graphics capabilities to give the student programming experience in 2D and 3D computer graphics, coordinate transformations, linear 2D and 3D transformations, projections, 3D geometry; color computations, RGB and CMYK color systems, simulation of curved surfaces through Gouraud and Phong shading, hidden surface removal through the Z-buffer technique;
also, some animation principles. Introduction to the most important Computer Graphics hardware.
SEN 996 Independent Study (1-3 credit units)
Prerequisites: Graduate standing
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.
SEN 998 Project (1-3 credit units)
Prerequisites: Graduate standing.
By arrangement witht the project advisor. The student must conduct independent research in an approved topic in software engineering, prepare a report and defend it before a faculty advisor.
SEN 999 Thesis (3 credit units)
Prerequisites: Graduate standing
By arrangement with thesis advisor. Independent research in software engineering toward the MS degree must be conducted if the thesis topic is approved. The student must prepare a thesis, and defend it before a committee of faculty designated by department chair.