MIU Logo

Mediterranean International University

Faculty of Computer Sciences & Information Technology (CSIT)

Department of Software Engineering

Software Engineering is a branch of the Computer Science and Information Technology that focuses on software development to provide a well-organized solution for a variety of considered applications. It normally conveys engineering thoughts to be implemented in an elegant, systematic, and controlled method. The software engineering discipline principally consists of:

  • specifying application nature and concepts,
  • determining techniques and algorithms to the design, and
  • identifying software development and utilization

The Department of Software Engineering, in the Faculty of Computer Science and Information Technology, grants a Bachelor of Science Degree in Software Engineering after successful completion of 135 credit hours with an Accumulative Grade Point Average (AGPA) not less than 2 out of 4. The academic program, at the department, normally requires eight regular semesters (Fall and Spring) to conclude the BSc. degree, alternatively it might be accomplished in seven regular semesters plus two or three summer terms. The regulation at the department denotes the study length by ten semesters, including the summer ones, as a maximum allowed period.

IEEE Computer Society and Association for Computing Machinery (ACM) guidelines are considered in the curricula of the undergraduate degree program of Software Engineering. With these educational programs, the MIU is seeking to follow up the most recent development in the disciplines of software engineering; and ultimately, the University aims to achieve the course designated targets which will lead to career satisfaction and high valued work.

The department strives to be a distinguished center in academic education and research, and to supply the community with software engineers who are able  to develop innovative solutions.

The Software Engineering department will

  • concentrate on teaching the knowledge and training systems that should prepare well-formed graduates with skills and values that satisfy advanced requirements.
  • increase the sense of ethical responsibility.
  • encourage students to mature their own innovative capacity.
  • Supply the local community with competent graduates who are able to improve the performance of the national companies and organizations according to the undertaking standards.
  • The program provides significant experience to success in software engineering field which consequently increases the variety of the national high education outcomes.   
  • Prepare proficient graduates who can participate as team leadership in software projects with a expansive understanding of various
  • Afford the competencies to continually upgrading the career achievements.
  • Open innovation opportunities and increase the capacity of communal culture.
  • Create academic atmosphere that enables  students as well as graduates to significantly contribute in several academic events involving research development, workshops, conferences, etc.        
  • Gain a broad and significant knowledge of software engineering to solve complex engineering problems.
  • Conducting and developing software solutions with variety of technologies and applications.
  • Be able to clarify key concepts in software solutions that enable to find a sensible choicebetween conflicting requirements including security, risk, quality, and cost.
  • Acquire the ability to communicate successfully with a wide range of audiences.

The curriculum for the B.Sc. degree in Software Engineering (135) credit hours are distributed as follows:

No.

Requirements

Credit Hours

1.

General Faculty Requirements

36

2.

Compulsory Faculty Requirements

42

3.

Advance Compulsory Faculty Requirements

6

4.

Compulsory Department Requirements

42

5.

Elective Department Requirements

9

Total

135

First: General Faculty Requirements (36 Cr .H.)

No.

Course No

Course Name

Cr.

Pre-Req.

1.

10110

Arabic I (General )

3

None

2.

10120

Islamic studies (General )

3

None

3.

50130

English I for IT

3

None

4.

50131

English II for IT

3

50130

5.

10140

Mathematics I

3

None

6.

10141

Mathematics II

3

10140

7.

10142

Mathematics III

3

10141

8.

10160

Statistics I

3

None

9.

10161

Statistics II

3

10160

10.

50230

Technical Writing for IT

3

50131

11.

13130

General Physics I

3

None

12.

50193

Research methodology and skills

3

None

Total

Second: Compulsory Faculty Requirements (42 Cr. H.)

No.

Course No

Course Name

Cr.

Pre-Req.

1.

50110

Introduction to Computer Science & IT

3

None

2.

50111

Introduction to computer Programming

3

None

3.

50112

C- Programming

3

50111

4.

50113

Digital and Logic Design

3

50110

5.

50210

Object Oriented Programming I +Lab

3

50112

6.

50211

Network Fundamentals

3

50113

7.

50212

Discrete Math and Structures

3

10141

8.

50213

Computer Architecture

3

50113

9.

50214

Data Structures and Algorithms

3

50210

50112

10.

50310

Object Oriented Programming II +Lab

3

50210

11.

50311

Computer Security and Privacy

3

50211

12.

50312

Database Systems

3

50214

13.

50313

Operating Systems

3

50214

14.

50314

Computing Ethics & Society

3

50110

Total

42

Third: Advanced Compulsory Faculty Requirements (6 Cr. H.)

No.

Course No

Course Name

Cr.

Pre-Req.

1.

50409

Graduation Project 1

2

After 90 H

2.

50411

Graduation Project 2

4

After 96 H

Fourth: Compulsory Department Requirements (42 Cr. H.)

No.

Course No

Course Name

Cr.

Pre-Req.

1.

51211

Analysis of Algorithms

3

50210

50112

2.

52220

Internet and Web Programming

3

50112

3.

54240

Foundations of Information Systems

3

50112

4.

53230

Foundation of Software Engineering

3

50112

5.

53231

Software Requirements

3

53230

6.

53232

Human Computer Interaction

3

53230

7.

53330

Formal Models & Methods

3

53230

50212

8.

53331

Software Evolution and Maintenance

3

53230

9.

53332

Software design

3

53230

10.

53333

Software Testing

3

53230

11.

53430

Software Project Management

3

53230

12.

53431

Software Development

3

53332

50312

13.

53432

Re-use and Component Based Development

3

53332

14.

53433

Software Quality

3

53332

Total

42

Fifth: Elective Department Requirements (9 Cr. H.)

Students are required to select three courses (9 Cr. H.) from the Software Engineering Department or from the available elective courses from the other departments.

No.

Course No

Course Name

Cr.

Pre-Req.

1.

53334

Engineering Economic Analysis

3

53230

2.

53434

Large Scale Software Design

3

53332

3.

53435

Software Architecture

3

53332

4.

53436

Agent-Oriented Software Engineering

3

53332

5.

53400

Special topics in Software Engineering

3

90 credit Hrs.

 

 

Course name: Arabic Language

Course Number: 10110

Prerequisite: none

Teaching language: Arabic language

Course level: First

Credit hours: 3 hours

 

Course Description

This course deals with the Arabic language in general and focuses on its grammar, rhetoric and morphology. This includes analyzing parts of speech, the root of the word and its affixes, the active and passive voice, and types of verbs. The course also introduces literary devices, analogy, writing styles, and techniques of literary analysis.

 

 

 

 

Course name: Islamic Studies

 

Course number: 10120

Prerequisite: none

 

Language of Instruction: Arabic language

Course level: The first level

 

Credit hours: 3

 

Course Description

A number of topics aim at introducing the tolerant Islamic Sharia according to the moderate approach that is free from extremism and exaggeration and which focuses on true faith and the noble ethics of Islam.

 

Course Number: 50130

Course Title: English I for IT  

Prerequisite: None

Language of instruction: English

Course Level: First year

Credit Hours:  3

 

Course Description:

English for IT 1 is an ESP course that introduces the students to the language encountered while studying in the field of IT. The course includes readings and vocabulary exercises designed to develop the students’ skills in the English language in general and the language of the professions related to IT, in particular. Students develop their writing skills utilizing the sentence and paragraph structure for a coherent writing. 

 

 

 

Course Number: 50131

Course Title: English II for IT  

Prerequisite: 50130

Language of instruction: English

Course Level: First year

Credit Hours:  3

Course Description:

English for IT 2 is an ESP course that continues to expose the students to the language encountered while studying in the field of IT. The course is a continuation of English for IT1 and includes readings and vocabulary exercises designed to further develop the students’ skills in the English language in general and the language of the professions related to IT, in particular. Grammar, and writing in topics related to IT are also covered. 

 

  

Course Number: 10140

Course Title:  Mathematics I   

Prerequisite: None

Language of instruction: English & Arabic

Course Level: 1

Credit Hours:  3

Course Description:

The course contains a range of ideas concerning functions, domain and range of functions, linear functions, polynomials, expositional functions, logarithmic functions, trigonometric functions (trigonometric identities), hyperbolic functions, inverse of trigonometric functions, inverse of hyperbolic functions, and derivatives of functions. The course also focuses on matrices and its applications, including operations appropriate in specialized applications and determinants (some properties), and inverse of a matrix. The course explores how to formulate algorithms to solve systems of linear equations. It also includes techniques of vector spaces for constructing important mathematical structures, illustrated by examples, as well as systems of linear equations (Gauss-Jordan elimination, Matrices method, Cramer’s method).

 

Course Number: 10141

Course Title:  Mathematics II

Prerequisite: 10140

Language of instruction: English & Arabic

Course Level: 1

Credit Hours:  3

Course Description:

The course contains a range of ideas concerning integral of functions in part (1) (using anti-derivatives), integration techniques (Substitution technique, Integration by parts, trigonometric substations, completing the square, partial fractions), multiple integral (double integrals, triple integrals), and applications (area, volumes, moments and center of mass).

 

Course Number: 10142

Course Title:  Mathematics III

Prerequisite: 10141

Language of instruction: English & Arabic

Course Level: 2

Credit Hours:  3

Course Description:

The course contains a range of ideas concerning differential equations (Basic concepts, order, degree), and first order differential equations and its applications. The course shows how to (separable equations, homogeneous equations, exact equations, linear equations), special equations (Bernoulli equation), second order differential equations (finding a particular solution using variation of parameters), using separation of variables method, power series solution (around ordinary points, around regular singular points), bessel equation, Legendre equation, systems of first order differential equations (writing system of linear first order differential equations in matrix form, solution using Eigen values and eigenvectors), Laplace transform (some examples), and inverse Laplace transform, solution of initial value problems using Laplace transform.

 

 

 

Course Number: 10160

Course Title:  Statistics I

Prerequisite: None

Language of instruction: English & Arabic

Course Level: 1

Credit Hours:  3

Course Description:

This course focuses on the following topics:

Definitions Importance, Scope and Limitations of Statistics – Sources of Data Collection – Classification and Representation of Data Frequency Distribution. Measures of Central Tendency – Measures of Dispersion and Skewness – Ideas about Attributes and Association – Simple Correlation and Simple Regression Permutation and Combinations – Combinatorial problems – Sample Space – Events – Counting of sample points – Classical and Axiomatic definitions of Probability – Marginal and Conditional probability – Baye’s Theorem – Concept of Random Variable Probability Function. Expectation and Variance of Random Variables – Ideas of Bernoulli, Binomial , Poisson and Normal Distributions .

 

Course Number: 10161

Course Title:  :   Statistics II

Prerequisite: 10160

Language of instruction: English & Arabic

Course Level: 1

Credit Hours:  3

Course Description:

Statistics II includes the following topics:

Population, sample and sampling distribution, Point Estimation and Interval Estimation – properties of estimators : Biased and Unbiased Estimators , Consistent , Sufficient and Efficient Estimators – Test of Hypothesis : Null and Alternative hypothesis , Critical Region , Type I and Type ll Errors , Level of Significance , Degree of Freedom , Power of a Test , Test Statistics , One and Two Tailed Tests – Test of Hypothesis Concerning Means , Proportions , Equality of Means and Proportions , variances and Their Interval Estimation – Association of Attributes – Contingency Tables and Test of Independence – Goodness of Fit – Elements of Analysis of variance : One-way and Two-way Classification .

 

 

Course Number:  50230 

Course Title: Technical Writing

Prerequisite: 50131

Language of Instruction: English

Course Level:2

Credit Hours :3

Course Description:

In this course students become acquainted with the forms, functions and rhetoric of technical documents in English language. Students examine and produce a variety of technical documents as well as software documentations, technical advices or handbooks, instructional technical texts etc. Texts in the area of Technical Communication, e.g., technical documentations Selected readings. The study of the development of essay standard writing tools and techniques, The study of the following techniques: description, narration and representation, classification, identification and comparison and how to provide contrast and show cause and effect analysis and operations, Study documentation grammar, Text Types: Causal Analysis, Problem Solution Texts, Argumentation, Summary Elements of a Problem Solution Text Basic features of an argumentative text Develop arguments and persuasion Characteristics of a good Summary Basic features of a good manual Learn presentation skills The transfer of resources Digital references related to the field of computer science and information technology.

 

 

Course Number: 13130

Course Title:   General Physics I   

Prerequisite: None

Language of instruction: English & Arabic

Course Level: 1

Credit Hours:  3

 

Course Description:

The course is designed to meet the needs of student majoring in Engineering, IT, and Mathematics. It is an introductory course in Newtonian mechanics with topics that include: Vectors, motion in one dimension, motion in a plane, Newton’s laws, work and energy, potential energy, momentum, Kinematics of rotational motion, dynamics of rotational motion, elasticity, and fluid mechanics.

 

 

Course Number: 50193

Course Title: : Research Methodology and Skills

Prerequisite:  None

Language of instruction: Arabic and English

Course Level: second year

Credit Hours:   3

 

Course Description:

This course prepares students to conduct research in computer science and information technology. The course involves multiple topics including time management, writing and presentation skills, and general considerations for experiment design and planning. It introduces students to concepts, methods, and techniques associated with computer sciences research in general. It covers oral and written communication skills. These Skills and knowledge gained from this course will prepare students to conduct and to communicate their own research, as well as to be knowledgeable consumers of others’ research.

 

 

Course Number: 50110

Course Title: Introduction to Computer Science and IT

Prerequisite:  None

Language of instruction: Arabic & English

Course Level:  The first 

Credit Hours:   3

 

Course Description:

The course is concerned with the following topics:

Understand the history of how computer technology unfolded, with particular emphasis on the “generations”. Understand how people and events affected the development of computers. Identify the basic components of computer system: input, processing, output and storage. Understand the difference between the difference types of software. Identify the components of the central processing unit and how they work together to form a system and interact with memory. Appreciate the need for the different applications included in the accessories of an Operating System. Know how the commands work in both GUI (Graphical User Interface) and CUI (Character User Interface) environment.

 

 

Course Number: 50111

 

Course Title: Introduction to Computer Programming

Prerequisite:  None

 

Language of instruction: Arabic & English

Course Level:  The first

Credit Hours:   3

 

Course Description:

This course is to provide an introduction to basic programming techniques including the following: Problem solving skills. Understand flowcharting tools. Use the proper tool for proper operation. Learn the necessary properties of algorithms: input, output, definiteness, correctness, finiteness, effectiveness, and generality. Understand how to analyze the given problem scientifically and not by intuition. Understand how to write an algorithm to solve a given problem. Convert the algorithm into flowchart and ultimately to a given programming language. Introduction to program design and problem solving using the C programming language.

 

 

Course Number: 50112

Course Title: : C- Programming

Prerequisite:  50111

Language of instruction: Arabic & English

Course Level:  First year

Credit Hours:   3

 

Course Description:

This course focuses on a review to program design and problem solving using the C programming language. Programming topics include control structures, functions, arrays, pointers, and file I/O. Control Statements Algorithms Pseudo-code, Selection Statement Repetition Statement Formulating Algorithms Compound Assignment Operators, Primitive data Types, Repetition Statement, Multiple-Selection Statement, Logical Operators. Functions Program Modules in C Declaring and using Functions Passing arguments by values and by reference Recursive functions Argument Promotion and Casting Math library functions Scope of Declarations. Arrays Declaring and Creating Arrays Examples Using Arrays Passing Arrays to Methods Multidimensional Arrays. Pointers and Strings Introduction to pointers and pointer arithmetic. Directly and indirectly referencing a variable Pointer operators & and * Pass-by-reference with pointer arguments Introduction to Strings and String manipulations Library string manipulation functions.

 

 

 

Course Number:  50113

Course Title: Digital and Logic Design

Prerequisite:  50110

Language of instruction: Arabic & English

Course Level:  1

Credit Hours:   3

 

Course Description:

The aim of this course is to learn and understand basic digital design techniques. This includes how to distinguish between a variety of decimal and alphanumeric codes, acquire sound knowledge in the key principles and practices used in the design and analysis of a digital computer, analyze related combinational circuits, discuss the issues involved in hardware or software implementation of an instruction in a digital computer instruction set, comprehend in-depth knowledge of advanced digital design principles and practice in real-world applications, make an analysis and synthesis of sequential switching circuits.

 

Course Number: 50210

Course Title:   Object Oriented Programming I

Prerequisite: 50112

Language of instruction: Arabic & English

Course Level:  third

Credit Hours:   3

 

Course Description:

Introduction. This course deals with OOP Programming basics, functions, classes and objects, constructor and destructor, inheritance: Derived class, virtual function, and files

 

 

Course Number: 50211

Course Title: : Network Fundamentals

Prerequisite:  50113

Language of instruction: Arabic & English

Course Level:  second year

Credit Hours:   3

 

Course Description:

The course covers network systems (interconnects and switch fabrics, network considerations) and relevant networking applications at the network, transport and application layer. 

 

 

Course Number: 50212

Course Title:  Discrete Math and  Structures

Prerequisite:  10411

Language of instruction:Arabic & English

Course Level: 

Credit Hours:   3

 

Course Description:

The course includes the following topic:

Understand basics of Logic design techniques. Acquire sound knowledge in the key principles and practices used in the design and analysis of computer logic. Analyze related sequential circuits. Understand the different types of Flip-Flops. Understand the operation and characteristics of Synchronous and Asynchronous counters. Recognize and understand the operation of various types of registers. Distinguish among the various types of memories. Describe the difference between read/write operations. Describe the components of microprocessor.

 

 

Course Number: 50213

Course Title:   Computer Architecture

Prerequisite: 50113

Language of instruction: Arabic & English

Course Level:  second year

Credit Hours:   3

 

Course Description:

This course is an introduction to computer organization and architecture which includes the following topics:

Types of Computers, Processors. Primary and Secondary Memory I/O Devices. Digital Logic Circuits and Components: Digital Logic Circuits, Boolean Algebra K. Map simplifications. Combinational Circuits, Sequential Circuits. Data Representation: Data Types Complements. Fixed, Floating point representation. Binary Codes, Error detection Codes. Central Processing Unit: Register Organization. Stack Organization, Instructions Formats. Addressing, RISC . Overview of Pipeline and Vector Processing. The Instruction Set Architecture Level: Data Types, Instruction Formats Input Output Organization: IO interface, Asynchronous Data Transfer, Modes of Transfer. Memory Organization: Main memory, Auxiliary Memory, Associative Memory, Cache.

 

 

Course Number: 50214

 

Course Title: Data Structures and Algorithms

Prerequisite: 50210+50112

Language of instruction: Arabic & English

Course Level:  2

Credit Hours:   3

 

Course Description:

Data structures is an essential area of study for computer scientists and for anyone who will ever undertake a serious programming course. This course focuses on how to use and implement fundamental data structures including stacks, queues, priority queues, lists, trees and hash tables. The course also includes ideas on how to use specified programming tool to develop and implement computer-based solutions to problems, how to develop software by using different data structures studied and learn to implement search and sorting algorithms including the quick sort, the heap sort and hashing, and the use of recursion to solve problems. The course finally deals with doing a Big-Oh analysis for their implementations of basic data structures.

 

Course Number: 50310

Course Title:   Object Oriented Programming II

Prerequisite: 50210

Language of instruction:Arabic & English

Course Level:  third year

Credit Hours:   3

 

Course Description:

The course includes a review of Object-Oriented Programming: Objects, Classes, Functions, Properties and Methods Review of Problem Solving, Algorithm Development, Control Structures, Arithmetic Expressions, Logic, Variables, Constants, and Primitive Data Types Abstract Data Types Data Structures: Sequential and Random-Access Files, Pointers & Lists, Stacks & Queues, Trees & Graphs Manipulating Data Using Methods Decision Making and Repetition with Reusable Objects Sorting and Searching Algorithms Templates & Standard Containers Using Collections and Strings in a Reusable Class Arrays & Vectors, Understanding Abstract Classes and Interfaces Interactive Objects, Scripts, Hyperlinks, & Event Handling Accessing Databases.

 

Course Number: 50311

Course Title:   Computer Security and Privacy

Prerequisite: 50211

Language of instruction:Arabic & English

Course Level:  third year

Credit Hours:   3

 

Course Description:

Introduction to Computer Security and Privacy includes the following topics: The meaning of computer security, Comparing security with privacy. Types of threats and attacks, Methods of defense. Program Security: Secure programs, Non malicious program errors, Malicious code. Controls against program threats. Operating System Security: Methods of protection. Access control, User authentication. Network Security: Network threats, Firewalls. Intrusion detection systems: Internet Application Security and Privacy: Basics of cryptography. Security and Privacy for Internet Applications. Database Security and Privacy: Security and privacy requirements: Reliability, Integrity, Privacy, Inference, Data mining, K-anonymity. Non-technical Aspects: Administration of security systems, Policies, Physical security, Economics of security, Legal   and Ethical issues.

 

Course Number: 50312

Course Title:     Database

Prerequisite: 50214

Language of instruction: Arabic and English

Course Level:  second year

Credit Hours:   3

 

Course Description:

In this course students should become familiar with designing database systems for business applications, and they should become familiar with commercially available relational database technology. By the end of this course, the student will be able to: understand the basic concepts, task, methods, and techniques in designing a database, develop an understanding of the database designing process, develop the ability to conceptualize the problem at hand, learn the different architecture of DBMS, apply techniques for the design of a database system, learn some of the appropriate design techniques, and develop the ability to select appropriate DBMS to the solution of the problem at hand.

 

Course Number: 50313

Course Title:  Operating Systems

Prerequisite: 50214

Language of instruction: Arabic and English

Course Level:  3

Credit Hours:   3

 

Course Description:

This course serves the following purposes: To have a thorough knowledge of processes, scheduling concepts, memory management, I/O and file systems in an operating system. To have an overview of different types of operating systems. To know the components of an operating system. To have a thorough knowledge of process management. To have a thorough knowledge of storage management. To know the concepts of I/O and file systems.

 

Course Number: 50314

 

Course Title:   Computing Ethics and Society

Prerequisite: 50110

Language of instruction: Arabic and English

Course Level:  3

Credit Hours:   3

 

Course Description:

This course concerns with computing as a profession. Philosophical framework and computer ethics. Ethical issues in cyberspace. Theory of Justice, and Virtue Ethics); Applied Ethics, Computer Ethics. Personal data privacy in cyberspace.  Copyright and intellectual property rights in cyberspace. Methods and Tools for Ethical Analysis

 

 

 

Course Number: 50411

 

Course Title:   Graduation Project

Prerequisite:  after finishing 96 h

 

Language of instruction: English and Arabic

Course Level:  forth year

Credit Hours:   4

 

Course Description:

The final year project course is carried out after students have finished 100 of credit hours,  Students are expected to select topics of their projects related to software engineering and submit a project report on completion of the project. They are expected to do a presentation and perform a working demonstration of their selected project. This module will give students skills and experience in doing either an individual project or a group project in the field of software engineering.

Students will be assigned project advisors who will guide the students during the process of the project. The members of the group in the project range from minimum of 2 to maximum of 3. Students will work closely with their project advisor and provide evidence of authentic investigation and research writing.

 

 

Description 0f Software Engineering Courses

 

     

51211

Analysis of Algorithms

(3)

     
     

This course aims to introduce the classic algorithms in various domains, and techniques for designing efficient algorithms. Upon successful completion of this course the student is expected to achieve the following goals: compare algorithms that solve the same problem; determine inefficiencies in algorithms and how to optimize them; determine whether a problem has an algorithmic solution; analyze algorithms, in terms of time and space complexity, for solving a wide variety of common computing problems; prove the correctness and analyze the running time of   the basic algorithms for those classic problems in various domains; apply the algorithms and design techniques to solve problems; analyze the complexities of various problems in different domains; and Do a Big-Oh analysis for their implementations of basic data structures.

Prerequisites: 50210+50112

52220

Internet and Web Programming

(3)

This course has a practical emphasis on the design and techniques for developing internet-based applications, mainly focusing on web programming. Topics include HTML, client-side scripting language (JavaScript), server-side programming (Servlets, JSP, and J2EE), and XML/web services. This course will also cover some important topics needed for internet-based application developments, such as Internet architectures and web security. Course work includes substantial programming homework and team-based projects.

Prerequisites: 50112

 

 

 

 

54240

Foundation of Information Systems

(3)

This course is designed to give surveys of important concepts related to information systems and how these systems are used throughout global organizations. Topics include data and information differences between them, information quality, the major parts of an Information System (Hardware, Software, Database, Network and People), as well as special topics in information systems including role of information system for competitive advantage, information system in organizations, administrative information system and its types, internet and worldwide technologies and major ethical issues in the digital world. Upon completion, students should be able to understand the implications of how IS provides a competitive advantage, and students will gain an understanding of how information enables improvement in quality and speed in organization.

Prerequisites: 50112

53230

Foundation of Software Engineering

(3)

This course is aimed at helping students build up an understanding of how to develop a software system from scratch by guiding them thru the development process and giving them, the fundamental principles of system development with object-oriented technology using UML. The course will initiate students to the different software process models, project management, software requirements engineering process, systems analysis and design as a problem-solving activity, key elements of analysis and design, and the place of the analysis and design phases within the system development life cycle.

Prerequisites: 50112

     
     

53231

Software Requirements

(3)

This course covers the following topics:

Techniques for eliciting requirements. Languages and models for representing requirements. Analysis and validation techniques, including need, goal and use-case analysis. Requirements in the context of system engineering. Specifying and measuring external qualities: performance, reliability, availability, safety, security, etc. Specifying and analyzing requirements for various types of systems: embedded systems, consumer systems, web-based systems, business systems, and systems for scientists and other engineers. Resolving feature interactions. Requirement documentation standards. Traceability. Human factors. Requirements in the context agile processes. Requirement management: Handling requirement changes.

 Prerequisites: 53230

 

     

53330

Human Computer Interaction

(3)

     

The study of human-computer interaction enables system architects to design useful, efficient, and enjoyable computer interfaces. This course teaches the theory, design procedure, and programming practices behind effective human interaction with computers, with a particular focus on smart phones and tablets. We will examine interaction design, implementation, and evaluation. The design process requires a solid understanding of the theory behind successful human-computer interaction, as well as an awareness of established procedures for good user interface design, including the ‘usability engineering’ process. Iterative evaluation is an important aspect of this procedure, and we will learn and practice prototyping and evaluation using scenario-based case studies. We will look at specific interface success stories and spectacular failures to learn from past experiences. Students will apply their gained knowledge in a series of practical assignments using the Android ecosystem that highlight selected portions of the design cycle, as well as familiarize them with sound programming practices and effective tools and techniques to create successful user interfaces. The course will also touch upon novel interfaces that go beyond what we normally see in today’s graphical user interfaces

Prerequisites: 53230

53330

Formal Models and Methods

(3)

This course covers the fundamentals of formal methods for systems utilized in Software Engineering and Information Security. It will examine techniques for modeling and formally analyzing computing systems and will consider applications in software, hardware, and security. Students will learn the fundamentals of classical logic, induction and recursion, program semantics, rewriting, reactive systems, temporal logic, model checking, and abstraction. We will examine how these methods can be used to build reliable software, hardware, and security protocols. Students will learn how to use various tools, including theorem proving and model checking tools, and will work in groups to apply the tools to various domains.

Prerequisites: 53230+50212

53331

Software Evolution and Maintenance

(3)

This course covers fundamental aspects of software maintenance and evolution, including concepts and techniques, process models for system evolution, and software maintenance case studies. The course focuses on the research issues of software evolution and maintenance. Topics such as reverse engineering, design recovery, program analysis, program transformation, refactoring, traceability, and program understanding will be investigated

Prerequisites: 53230

53332

Software design

(3)

The main purpose of this course is to develop thorough understanding of students towards software design.  This course focuses on techniques for software design in the development of large and complex software systems. Topics will include software architecture, modeling (including UML), object-oriented design patterns, and processes for carrying out analysis and design. More advanced or recent developments may be included at the instructor’s discretion. The course will balance an emphasis on design principles with an understanding of how to apply techniques and methods to create successful software systems. This course Introduces principles and practices of software development. Includes instruction in critical thinking, problem solving skills, and essential programming logic in structured and object- oriented design using contemporary tools.

Prerequisites: 53230

53333

Software Testing

(3)

This course is a study of software testing and maintenance methodologies for object-oriented, component-based, concurrent, distributed, and web software. Topics include approaches to automatic test case generation, test oracles, coverage analysis, prioritized testing, construction of tools, regression testing and impact analysis. A primary focus will be program-based software testing and maintenance approaches.

Prerequisites: 53230

 

53430

Software Project Management

(3)

Describe and determine the purpose and importance of project management from the perspectives of planning, tracking and completion of project. Compare and differentiate organization structures and project structures. Implement a project to manage project schedule, expenses and resources with the application of suitable project management tools. A broad and critical understanding of the processes for developing high quality software systems. The principles, concepts and techniques associated with software development. An ability to analyze and evaluate problems and draw on the theoretical and technical knowledge to develop and implement plans for their resolution. An awareness of current research in the management of software projects, the analytical skills and research techniques for their critical and independent evaluation and their application to new problems

Prerequisites: 53230

53431

Software Development

(3)

This course is an introduction to Software Design paradigms, Project Management, System and Software Requirements, Computer Aided Software Engineering, and Software Design Fundamentals using existing documentation for a proposed system. In-depth survey of data flow-oriented, object-oriented, data oriented, and real-time design. Team project involving the implementation of the proposed system using structured programming, information hiding, and strength and coupling measures. Software reviews. Software testing techniques and strategies. Software maintenance. Each student will be required to make an oral presentation as part of the team project.

Prerequisites: 50312+53332

53432

Reuse and Component-based Development

(3)

Component based development is the development of components that individually perform one discrete or unique function. These components can be reused and combined to form other components that perform another discrete or unique function. The main objective of component- based development is to reduce time and costs related to the development of reusable learning components. Component based Development has already been introduced as a software development approach which is used to reduce software development costs and to decrease the development time to develop software applications.

Prerequisites: 53332

53433

Software Quality

(3)

This course introduces the students to the modern methods of quality assurance in software development. The content of the course consists of lectures about relevant standards (e.g. ISO/IEC 9126, ISO/IEC 9000, ISO /IEC 25000) for quality assurance and standards for measurement of quality (e.g. ISO/IEC 15939). The course prepares the students to work as quality engineers and quality managers in software development organizations with the focus on embedded software and web applications.

Prerequisites : 53332

 

 

 

 

Description of Elective Software Engineering Courses

 

53334

Engineering Economic Analysis

(3)

This course is an introduction to the application of economics and decision theory and to the methods used for determining the comparative financial desirability of engineering alternatives. It provides the student with the basic tools required to analyze engineering alternatives in terms of their worth and cost, an essential element of engineering practice. The student is introduced to the concept of the time value of money and the methodology of basic engineering economy techniques. The course will address some aspects of sustainability and will provide the student with the background to derive and use the different engineering economy factors.

Prerequisites: 53230

53434

Large Scale Software Design

(3)

This course addresses the history of the growth of software importance, the risk profiles inherent in large software systems, the importance of process in large software systems, approaches to the definition, management and execution of large scale developments, and new ways to think about complexity and size. As software has become more pervasive and is responsible for the large majority of functionality in most systems of interest, it is important to understand the differences between engineering a large software system and the traditional view of software engineering as design and coding.

Prerequisites: 53332

53435

Software Architecture

(3)

This course introduces basic concepts and principles about software design and software architecture. It starts with discussion on design issues, followed by coverage on design patterns. It then gives an overview of architectural structures and styles. Practical approaches and methods for creating and analyzing software architecture are presented. The emphasis is on the interaction between quality attributes and software architecture. Students will also gain experience with examples in design pattern application and case studies in software architecture.

Prerequisites: 53332

53236

Agent-Oriented Software

(3)

This course introduces software engineering concepts to obtain a new perspective on the work done in agent-oriented methodologies. Software engineers continually strive to develop tools and techniques to manage the complexity that is inherent in software systems. In this article, we argue that intelligent agents and multi-agent systems are just such tools. We begin by reviewing what is meant by the term “agent”, and contrast agents with objects. We then go on to examine a number of prototype techniques proposed for engineering agent systems, including methodologies for agent-oriented analysis and design, formal specification and verification methods for agent systems, and techniques for implementing agent specifications.

Prerequisites: 53332

53400

Special topics in Software Engineering

(3)

This course provides a specialized study within an area of Information Systems, guided by a supervisor. Topics include theoretical and applied aspects of Software Engineering. It combines guided reading and research with a significant individual or group project component.

Prerequisites: 90 credit Hrs