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:
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
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 |
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 |