# Computer Science

## Courses

## Semester One

**Course Code**: C216

**Units**: 2

**Lecturer**: Haveen J. Ahmed

**Description**:

**Course overview:**

This course book is designed to teach the university mathematics student the basics of the subject of linear algebra. There are no prerequisites other than ordinary algebra, but it is probably best used by a student who has the 'mathematical maturity' of a sophomore or junior. The text has two goals: to teach the fundamental concepts and techniques of matrix algebra and abstract vector spaces, and to teach the techniques associated with understanding the definitions and theorems forming a coherent area of mathematics. So there is an emphasis on worked examples of nontrivial size and on proving theorems carefully. The first half of this text is basically a course in matrix algebra, though the foundation of some more advanced ideas is also being formed in these early sections. Vectors are presented exclusively as column vectors, and linear combinations are presented very early. Spans, null spaces and column spaces are also presented early, simply as sets, saving most of their vector space properties for later, so they are familiar objects before.

**Course objective:**

This course aims at providing students with the essential concepts of linear algebra. The concepts of linear algebra are discussed using skills and concepts acquired in the fundamental subjects in mathematics. The course serves to illustrate how mathematics concepts can be applied to explain the various properties of linear algebra. Topics covered include: systems of linear equations and matrices, determinants and it is applications, vectors and vector space, eigenvalues and eigenvectors and linear transformations.

**Student learning outcome:**

Upon completion of this course, a student will be able to :

o Read and write proof so basic linear algebra results.

o Calculate determinants using row operations, column operations, and expansion down any column or across any row .

o Define and apply real vector spaces and linear transformations.

o Solve linear algebra problems involving systems of linear equations, subspaces, linear dependence, span, basis, and dimension.

o .Solve problems involving geometry, orthogonalization, or orthogonal projection by working with the geometric structure of inner product spaces.

o Solve problems involving linear transformations, change of basis, eigenvalues and eigenvectors by utilizing the distinctions among vectors, coordinate vectors, and coordinates of vectors.

o Prove basic linear algebra results.

**The Topics:**

This course is an elementary introduction to Linear algebra . Topics to be covered include:

**Chapter one : (**** System of Linear Equations and Matrices)**

o System of Linear equation and Matrices.

o Define Matrix and give some properties .

o Define Reduced echelon form matrix and some example.

**Chapter two : (
Matrices)**

o Addition , scalar Multiplication and Multiplication of Matrices .

o Algebraic properties of Matrix operations .

o The inverse of a matrix

**Chapter three : (Determinants)**

o Introduction to Determinants .

o Properties of Determinants .

**Chapter four: (vector
spaces)**

o The vector spaces

o Dot product , Norm , Angle , and Distance .

o General vector Spaces .

o Subspaces .

o Linear combination of vectors .

o Linear Dependence and independence .

**Chapter five : (Eigenvalues
and Eigenvectors)**

o Eigenvalues

o Eigenvectors

**Course Reading List and References:**

o Howard Anton Chris Rorres“ Elementary Linear Algebra”

o Richard O.Hill, Jr." Elementary Linear Algebra”.

o Bernard
Kolman Third Elman”Introductory Linear Algebraز

**Course Code**: C212

**Units**: 3

**Lecturer**: Amera Ismail Melhum

**Description**:

** Course
overview:**

This course provides students with a comprehensive study of the C++ Programming Language. The course stresses the object paradigm including type of function, pointer, dynamic memory, classes, encapsulation, composition, and templates in the development of C++ programs.Weekly laboratory experiments will provide hands-on experience in topics covered in this course. Lab exercises reinforce the lectures.

**
Course objective:**

This course aims to teach the students the basics of OOP using C++. Following are the objectives of the course:

o To introduce students about the basic concepts of object oriented programming.

o To get a clear understanding of object-oriented concepts.

o To understand object oriented programming through C++.

o To familiarize students with the difference between structure and object oriented programming.

o To familiarize students with design, coding and effective use of debugger.

o Create classes and small programs in C++ that are correct, robust and capable of being understood, reused and modified by others.

o Learn how to create a class and its member functions, constructor and destructor.

o Learn about Constant Objects and Constant Member Functions. Friend Functions and Classes

**Student
learning outcome:**

After completion of this course, the students would be able to

o Understand concepts of objects and their significance in real world

o Understand pointers conceptually and be able to apply them in C++ programs.

o Investigate software problem in terms of objects and entities

o To be able to reuse the code and write the classes which work like built-in types.

o Develop software in terms of objects, associations, and integrity constraints

o Design classes, To apply the concepts of data encapsulation

o Understand user-defined classes conceptually and be able to apply them in C++ programs.

o Real life problem formulation in terms of objects and classes

**The
Topics:**

1- Pointers,the*,and&operators, Dynamic Memory Allocation with Operators new and delete

2- Function overview, Function pass by pointer, Inline function, overloading function, Default parameter function

3- Struct, Class & Object, Implementing class methods, Accessing Class Members, Creating an object of a Class, Interfaces versus Implementation, Constmember data

4- Class Scope and Accessing Class Members, Separating Interface from Implementation, Controlling Access to Members, Access Functions and Utility Functions.

5- Constructors, Using Default Arguments with Constructors, copy constructor,Using Destructors,When Constructors and Destructors Are Called,

6- Using Data Members and Member Functions, const (Constant) Objects and const Member Functions, friend Functions and friend Classes,

7- This Pointer, , static Class Members, Data Abstraction and Information Hiding, composition, Example:

8- Array Abstract Data Type, Example: String Abstract Data Type.

9- Class template, function template, member function templates, template arguments.

**Course
Reading List and References:**

1- “C++ Programming: From Problem Analysis to Program Design”,D.S. MALIK, FIFTH EDITION

2- " Object oriented programming in C++ " by . E. Balagurusamy, Tata McGraw-Hill,

Fourth Edition. 2008.

3- " C++ How TO Program " by H. M. Deitel, P. J. Deitel ,2005, Fifth Edition.

**Course Code**: C215

**Units**: 3

**Lecturer**: Lamya Abdulateef Omer

**Description**:

**Syllabus **

**Week1: Discrete Mathematics definition**

Lecture 1: What is Discrete Mathematics?

1. Introducing Lecturers

2. Why Care about Discrete Math?

3. Mathematical Appetizers

4. Logic

5. Types of logic statements

o Simple statement.

o Compound statements

o Conditional statements

o Quantified statements .

Lecture 2. Introduction to Propositional Logic

1. The Statement/Proposition

2. A Paradox

3. Combining Propositions

4. Logical Operators (Connectives)

o Conjunction (AND)

o Disjunction (OR)

o Exclusive Or (XOR)

o Implication (if - then)

o Implication (if - then)

5. How can we translate an English statement to logical expression .

6. Equivalent Statements .

Lecture 3: Examples & Exercise

**Week2: Predicate logic**

Lecture 4: logic.

o Truth table .

o logical equivalences expression

o concept of “conjunction normal form”.

o concept of “disjunction normal form”

o proofs

o Examples &Exercise .

Lecture 5: knowledge representation & predicate logic.

o Some concepts( Premise, Argument, conclusion).

o Valid and invalid proofs.

o Checking the validity of an argument form.

o Examples &Exercise .

o Rules of inference .

o Applying of Rules of inference.

Lecture 6: Homework & Examples &Exercise .**Week 3: method of
proofs**

Lecture 7:

o direct contra-positive

o
Indirect proofs (*proof by contrapositive proof by contradiction*)

o recursive proofs,

o recursion and recursion equations.

o Induction mathematics.

o Examples &Exercise .

Lecture 8 : Sets.o DEFINITIONS.

o THEOREMS.

o Power of set.

o Set laws .

o Equality of sets .

o Cartesian products.

Lecture 9: Theory Set .o Equality Operations - union, intersection, complement, difference

o DeMorgan'sLaws .

o Subsets, power sets, Venn diagrams.

o Equal vs. equivalent sets.

o Cardinality of Sets Countability.

o Sets of numbers (integers, reals, etc.)

o Homework & Examples &Exercise .

**Week 4: Relations and Function**

Lecture 10:

o Properties of Functions .

o Inversion Composition Floor and Ceiling.

o Functions Sequences .

o Strings Summations Double Summations

o properties of set, operation of sets , relations, composite relations, equivalent relations,

o Problem Solving Strategies

o axiom

o theorem

**Week 5: Sequence&
series**

Lecture 11:

o Representation of a sequence

o Sum of a sequence

o Arithmetic sequence

o Geometric sequence

o Applications

Lecture 12: Homework & Examples &Exercise .

Lecture 13: Exam1 .

**Week 6: Algorithms **

Lecture 14:

o What is Algorithm? Characteristics

o What is need for analysis?

o Examples & Exercise

Lecture 15:

o What is complexity?

o Types of complexities

o Methods of measuring complexity

o Examples & Exercise

**References:**

**Course Code**: C214

**Units**: 3

**Lecturer**: Khalid A. Tawfiq

**Description**:

**Course overview:**

Information systems professionals need sound knowledge of information and communication technologies, which are used to increase the efficiency and effectiveness of information systems and more importantly the organisations in which such systems are deployed. The aim of this module is to develop students’ capabilities to think about issues related to information systems and analyzing Systems within the organizational context in a constructive, critical, analytical, practical and systemic way. Systems thinking is of particular importance for dealing with the complexity associated with the specification, provision and use of information in modern organizations. In order to provide an understanding of the impact and use of information systems & Systems Analysis, the academic content of the module includes elements of information theory, systems theory, information technology, information systems, Systems Analysis, analyzing & Constructing a Database and organizational management.

**Course objective:**

o Awareness of the decision making process

o Awareness of the role of data, information and knowledge

o Information modelling approaches

o Awareness of systems concepts

o Dealing with complexity issues Awareness of IT

o Awareness of the information system development

o Awareness of organisations and their management

o Awareness of Systems analysis & Design

o Awareness of doveloping Flowchart, Data Flow and Data modeling Daigrams

o Awareness of doveloping Awareness of doveloping UML Diagrams

o Awareness of Concepts Data Base and Database development

**Student learning outcome:**

o Students will be aware of the relationship between organisational (strategic)

o objectives and the need for information and information systems.

o Students will be aware of the distinction between reality and a model as a way of

o thinking about reality, in relation to the representation of data, information and

o knowledge relevant to the organisational needs.

o Students will be aware of the concept of a “system”, and its implications for the

o investigation of organisational behaviour.

o Students will recognise the nature of complexity in systems, including both

o information systems and organisations.

o Students will be aware of the operations of information systems, the role of

o information technology in such systems, and the strategies for developing

o information systems.

o Students will be aware of the different ways of looking at organisations and the key

o concepts of organisational management.

o Students will be aware of onganisations needs and the method of analysing their

o requests.

o Students will be aware of System Analysis & design importance.

o System anlysis steps to be design and implemented.

o Introducing Students to UML and developing systems within UML

o Students will be aware database concept, structure, analysis and concept of database

o development

o Introducing Students to Data base concepts and its structure

o Introuducing Students to Structure Query Langauge (SQL)

**The Topics:**

**1.
****Introduction to Module Course Book**

**2.
****Introduction to information and information
systems**

o Need for information in decision making

o Basic concepts: data, information, knowledge and metadata

o Categories of information based on source,nature, level, etc.

**3.
****Introduction to information and information
systems**

o Characteristics of valuable information:availability, accuracy, reliability, etc.

o Organizing data and information: structured,semi-structured and unstructured information

**4.
****Systems**

o The concept of a system and its features

o Control: regulation, adaptation, viability, sustainability and feedback

o Systems thinking

**5.
****Systems**

o Complexity

o Systemic methods

o Soft Systems Methodology: exploring the relationship between purpose and

o Structure System Dynamics: exploring behaviour over time, the relationship between structure and behaviour.

**6.
****Information Systems**

o Components: people, hardware, software,communication and data

o Types of information systems: data processing systems, management information systems, decision support systems, executive information systems

**7.
****Information systems**

o Functions of information systems: gathering, storing and processing data and outputting information.

o Information technology: storage, communication and security

o Information systems development: analysis, design, implementation, testing and maintenance

**8.
****Organisations**

o Organisations as systems

o Organisational structure and organisational culture

o Business environment

**9.
****Organisations**

o Planning, strategy and management

o Decision making

o The use and impact of information systems

**10. ****Ethics**

o Ethical Reasoning

o Business Ethics

o Professional Ethics and Code of Conduct

**11. ****Legal
Issues of Information System Management**

o Legal Framework

o Contract Law

o Intellectual Property Rights

o Data Protection Act

o Computer Misuse Act

**12. ****Goverlnance**

o Information Systems Governance

o Risk Management

**Course Reading List and References :**

o Beynon-Davies P: Business Information Systems. Palgrave Macmillan

o Doyle S: Information Systems for You. Nelson Thornes

o Stair R & Reynolds G: Fundamentals of Information Systems. Course Technology Inc

o BCS Code of Conduct.

o Ethics for the Information Age, M J Quinn. Addison-Wesley.

o Introduction to Information Technology Law, D.I. Bainbridge, Pearson

**Course Code**: C213

**Units**: 3

**Lecturer**: Dilshad Hassan Sallo

**Description**:

**Course overview:**

The study of data structures is an essential subject of every under graduate and graduate programs related to computer science. A thorough understanding of the basics of this subject is inevitable for efficient programming. This course covers the design and implementation of data structures including arrays, stacks, queues, linked lists to give a better understanding about the Data Structures. Therefore, the aim of this course is to give you a feel for algorithms and data structures as a central part of what it is to be a computer scientist. You should end it appreciating that understanding the algorithm and data structures used for some problem is much more important than knowing the exact code for it in some programming language. You should be aware of the fact that there are often several algorithms for some problem, and one algorithm may be better than another or one algorithm better in some circumstances and another better in others. You should have some idea of how to work out the efficiency of an algorithm, though we won't cover detailed formal analysis. You should be confident with algorithms expressed using both iteration and recursion, and have some idea of how to convert algorithms expressed using recursion into iteration. You will be able to use and design linked data structures, but appreciate why it is good programming style to hide the details of a data structure within an abstract data type. You will appreciate how the inheritance mechanism of object-oriented languages enables you to write generalised code expressing an algorithm or data structure in a way that may be used in a variety of real-world situations.

**Course objective:**

o Choose the appropriate data structure and algorithm design method for a specified application.

o Assess how the choice of data structures and algorithm design methods impacts the performance of programs.

o Be familiar with basic techniques of algorithm analysis

o Be familiar with writing recursive methods

o Master the implementation of linked data structures such as linked lists.

o Be familiar with some graph algorithms such as shortest path and minimum spanning tree

o Master the standard data structure library of a major programming language

o Master analyzing problems and writing program solutions to problems using the above techniques

**Student learning outcome:**

Upon completion of this course, students should be able to:

o Identify fundamental data structures and algorithms and summarize their typical uses, strengths, and weaknesses.

o Analyze the complexity of algorithms

o Solve problems computationally through the application of fundamental data structures and algorithms

o
Have a comprehensive knowledge of
the data structures and algorithms on which file structures and data bases are
based

understand the importance of data and be able to identify the data requirements
for an application

o Have a solid understanding and practical experience of algorithmic design and implementation.

o Have practical experience of developing applications that utilize databases.

o Understand the issues involved in algorithm complexity and performance

o Have the ability to undertake relational data analysis and design and to implement a data model

o Be able to design and implement queries and reporting on the database and to update the database

**The Topics:**

**Introduction **

1.1 An Introduction to Data Structures

1.2 Definition of Algorithm

1.3 Storage Structure for Arrays

1.3.1 One Dimensional Array (Vector)

1.3.2 Two Dimensional Array

1.3.3 Three Dimensional Array

1.3.4 Multi-Dimensional Array

1.4 Application on Arrays

1.4.1 Polynomials

1.4.2 Solution for Specialized System of Equations

1.4.3 Algorithm (Triangular)

1.4.4 Sparse Matrices

1.5 Exercises

**2. Stacks**

2.1 Operation on Stacks

2.1.1 IsEmpty

2.1.2 IsFull

2.1.3 MakeEmpty

2.1.4 Push (newItem)

2.1.5 Pop (item)

2.2 Application on Stacks

2.2.1 Infix, Postfix and Prefix

2.2.2 Evaluating a Postfix Expression

**3.
Queues **

3.1 Operation on Queues

3.1.1 QueueEmpty

3.1.2 QueueFull

3.1.3 MakeQEmpty

3.1.4 Insert (newItem)

3.1.5 Delete (item)

3.1.6 Size( )

**4.
Circular Queues**

4.1.1 CQueueEmpty

4.1.2 CQueueFull

4.1.3 MakeCQEmpty

4.1.4 Insert to CQ (newItem)

4.1.5 Delete from CQ (item)

4.1.6 Size( )

**5.
Pointers, Dynamic Data, and Reference Types**

5.1 What is a pointer variable?

5.2 Using a pointer variable

5.3 Using the deference operator

5.4 Using a pointer to access the elements of a string

**6.
Linked Lists **

6.1 Definitions

6.2 Declaring Nodes

6.3 Connecting Nodes

6.4 Insertion to Linked Lists

6.4.1 Insertion at the head

6.4.2 Insertion at the end

6.4.3 Insertion to an empty linked list

6.4.4Inserting a node between to existing nodes

6.5 Deletion from Linked Lists

6.5.1 Deletion from the head

6.5.2 Deletion from the end

6.5.3 Deletion a node between to existing nodes

**7.
Circular Linked Lists**

7.1 Definition

7.2 Inserting Items into a Circular List

7.3 Deleting Items from a Circular List

**Course Reading List and References:**

**Books:**

- C++ plus Data Structures, 3rd Edition 2003, Nell Dale
- C++ How to Program, DEITEL
- Principles of Data Structures Using C and C++ December 2008

**Internets:**

**Course Code**: C211

**Units**: 4

**Lecturer**: Omar Ammar Omar

**Description**:

**Course overview:**

This course introduces the principle of computer organization and architecture with focus on detailed implementation of CPU, memory organization and management, bus, I/O systems and pipelining. The software part of the microprocessor will also be covered including data movement, arithmetic and logic, branching (conditional and unconditional), and interrupt. We shall further discuss both hardware and software technologies of computer systems and latest technologies, design, implementation and current development of related technologies.

**Course objective:**

The goal of this course is to provide students with good background in computer architecture and microprocessor programing. When students complete this course they should:

o Know the basic structure of computer system.

o Understand the memory and internal structure.

o Understand I/O system.

o Understand the internal organization of CPU.

**Student learning outcome:**

To learn the computer internal architecture and how to write simple program in assembly language for 8086 microprocessor unit.

**The Topics:**

**Register
Transfer & Micro Operation**

o Fundamental concepts

o Register Transfer

o Arithmetic Micro Operation

o Logic Micro Operation

o Shift Micro Operation

**Central
Processing Unit**

o General Register Organization

o Instruction Formats

o CPU Instruction Cycle

o Control Unit

o CISC and RISC

**Buses**

o Peripheral Bus Architecture

o Type of Buses

o The Synchronous and Asynchronous bus

**Input-Output
Organization**

o Peripheral Devices

o Input/output Interface

o Direct Memory Access (DMA)

**Pipeline
Design**

o General Concept

o Comparison of Pipelined and Non-pipelined Computer

o Instruction and Arithmetic Pipelined

**Course Reading
List and References:**

o
William Stalling, Computer Organization and
Architecture, 8^{th} edition,Prentice Hall, 2010.

o
M. Morris Mano, Computer System Architecture , 3^{rd}
edition ,1992

o Peter Abel, IBM PC Assembly Language and Programming,5th edition, Prentice Hall, 2005

o Barry B. Brey, The Intel Microprocessors, 7th edition, Prentice Hall,2006

## Semester Two

**Course Code**: C226

**Units**: 2

**Lecturer**: Sarhan Sulaiman Dawood

**Description**:

**Course
overview:**

This class is an introduction to statistics. Statistics has directrelation with ourdailylife especially if we are going to study a given phenomenon in order to make specific decision about it. Also studding this module by the students in computer field will give them a good idea about how they will use statistics measures to collect, organize, summarizing, presenting, analyzing, and drawing conclusions.

So students will study general idea about population, parameters, statistics, what we mean by descriptive and inferential statistics, variables and their types , type of tables and graphs , what are the measures of central tendency, Measures of dispersion, probability, and how to test hypothesis

**Course objectives:**

After completing this course, students should be able to:

o Explain and apply principles of study design and data collection.

o Identify the relevant population, sample, study units (subjects), variables, and factors;

o Distinguish between observational studies and controlled experiments;

o Describe the impacts of study design on the resulting generality of conclusions that can be draw;

o Understand how to use the statistics measures in any study for some data

o Understand how, why, and when to use the Measures of dispersion

o Understand how to test hypothesis

**The Topics:**

**1.
Introduction : definitions **

o Statistics science

o Population and Sample

o Parameters and Statistics

o Descriptive and Inferential Statistics

**2.
Variables **

- Qualitative & Quantitative Variables
- Continuous & Discrete Variables
- Dependent & independent Variables

**3.
Data presentation **

- Raw Data
- Data organizing (tables & graphs)
- tables

- simple and compound tables

- Frequency distribution for frequency tables

- General rules for creating frequency table from raw data

- Percentage frequency table

- Cumulative frequency table

- Conversion of cumulative frequency to simple Frequency:

o Diagrammatic and

- One-Dimensional Diagrams

1. Line Diagram

2. Simple Bar Diagram

3. Multiple Bar Diagram

- Two-Dimensional Diagram

1. Pie Diagram or Circular Diagram

** 4.
Graphical Representation**

o A histogram

o Frequency Polygon

**5. Measures Of
Central Tendency ( ungrouped and grouped data)**

o Arithmetic Mean & weighted mean

o Median

o Mode

**6. Measures of
dispersion (spreads)**

o Range

o Variance

**7. Probability**

o Definitions

o Introduction to probability: sample space, classical probability, empirical probability, probability rules,

o Addition and multiplication rules

o Conditional probability

**8. Estimates
and sample size**

o Definitions

o Estimation the population mean

o Estimating the population proportion

o Sample size determination

**9. Hypothesis
testing**

o Type of tests

o Steps of hypothesis testing

o Probability values

o Using confidence interval to test a claim

o Testing a single mean

o Chi-square

o Testing a single variance

**10. Correlation
and regression **

**Course
Reading List and References:**

o
Freund, J. E. and Walpole, R. E. (1987).*Mathematical Statistics*.
Englewood Cliffs:Prantice-Hall.

o Hogg, R. V. and Craig, A. T. (1978). Introduction to Mathematical Statistics. New York: Macmillan.

**Course Code**: C222

**Units**: 3

**Lecturer**: Amera Ismail Melhum

**Description**:

** Course overview:**

o This course shows how to program using object-oriented principles. It is fully hands-on, and students gain experience in designing simple but powerful object-oriented applications and in writing code using the C++ language. Feedback is given throughout the course so that participants have as much opportunity as possible to improve their programming technique. Topics covered include C++ language features, key standard library objects overview, and OOP features: classes, objects, abstraction, interfaces, constructors/destructors, overloading, inheritance, polymorphism and templates. Weekly laboratory experiments will provide hands-on experience in topics covered in this course. Lab exercises reinforce the lectures.

o Understand user-defined classes conceptually and be able to apply them in C++ programs.

o To get a clear understanding of object-oriented concepts.

o Real life problem formulation in terms of objects and classes.

**Course
objectives:**

This course aims to teach the students the basics of OOP using C++. Following are the objectives of the course:

o To introduce students about the basic concepts of object oriented programming.

o To understand object oriented programming through C++.

o Create classes and small programs in C++ that are correct, robust and capable of being understood, reused and modified by others.

o Create classes by inheriting from existing classes.

o Learn about Virtual Functions, Polymorphism, and Overloading. Operator Overloading

o Learn how to create a class and its member functions, constructor and destructor.

o Learn about Constant Objects and Constant Member Functions. Friend Functions and Classes

**Student
learning outcome:**

o After completion of this course, the students would be able to

o Understand concepts of objects and their significance in real world

o Understand pointers conceptually and be able to apply them in C++ programs.

o Investigate software problem in terms of objects and entities

o To be able to reuse the code and write the classes which work like built-in types.

o Develop software in terms of objects, associations, and integrity constraints

o Design classes,To apply the concepts of data encapsulation

**The
Topics:**

o Fundamentals of Operator Overloading, Restrictions on Operator Overloading, Operator Functions as Class Members vs. as friend Functions, Overloading Unary Operators, Overloading Binary Operators, Case Study: An Array Class, Converting between Types, Overloading ++ and --.

o Inheritance: Base Classes and Derived Classes, Protected Members, Casting Base-Class Pointers to, Derived-Class Pointers, Using Member Functions, Overriding Base-Class Members in a Derived Class, Public, Protected and Private Inheritance, Direct Base Classes and Indirect Base Classes, Using Constructors and Destructors in Derived Classes, Case Study: Point, Circle, Cylinder.

o Type Fields and switch Statements, Virtual Functions, Abstract Base Classes and Concrete Classes, Polymorphism,New Classes and Dynamic Binding, Virtual Destructors, Case Study: Inheriting Interface and Implementation.

o Exception handle

**Course Reading List and References:**

o “C++ Programming: From Problem Analysis to Program Design”,D.S. MALIK, FIFTH EDITION

o " Object oriented programming in C++ " by . E. Balagurusamy, Tata McGraw-Hill, Fourth Edition. 2008.

o " C++ How TO Program " by H. M. Deitel, P. J. Deitel ,2005, Fifth Edition.

**Course Code**: C225

**Units**: 3

**Lecturer**: Lamya Abdulateef Omer

**Description**:

**Course
overview:**

The purpose of this course is to understand and use (abstract) discrete structures that are backbones of computer science. In particular, this class is meant to introduce logic, proofs, sets, relations, functions, counting, and probability, with an emphasis on applications in computer science.

**Course objective:**

o The course is aimed at the following outcomes:

o To study fundamentals mathematical concepts of logic, sets, and functions.

o To refine mathematical reasoning skills through the study of mathematical logic and proof.

o To develop problem solving skills for enumeration.

o To investigate discrete structures, including sets, matrices, permutations, relations, graphs, trees, and finite-state machines.

o To apply the above to applications with an emphasis on applications to computing.

**The
Topics:**

**Week 1: Algorithms **

**Lecture 1: **

o What is Algorithm? Characteristics

o What is need for analysis?

o Examples & Exercise

o What is complexity?

o Types of complexities

o Methods of measuring complexity

o Examples & Exercise

**
Lecture 2. Algorithm Examples**

o linear search algorithm.

o The binary search

o Sorting

o The Bubble sort

o The insertion sort

o Greedy algorithm

**Lecture
3 : Examples & Exercise**

**Lecture 4 : Counting **

o Counting principle.

o The Fundamental Counting Principle.

o Adding Rules

o Multiple(Product) Rules

**Lecture 5: permutations**

o permutations ( of single item )

o permutations ( of duplicate item )

o examples

o Homework & Examples & Exercise

**Lecture 6 :**

o Combination

o Formula of n-combination

o The Binomial theorem

o Homework & Examples & Exercise

**Lecture 7: Number Theory and
Cryptography**

o Number theory & Application

o Division

o The divisor, dividend,Divisor Theorem

o Modular Arithmetic

**Lecture 8 : 1- The mod Function**

o
** **The (mod) Congruence

o Binary Decimal Octal Hexadecimal Expansion

o Base conversion

o ADD Algorithm

o Examples & Exercise

** Lecture 9:
**

o The fundamental theorem of arithmetic .

o Prime number.

o The Arithmetic Modulo

o Linear Congruence.

o Multiplicative Inverses

o Homework & Examples &Exercise .

** Lecture 10: **

o Modular exponentiaion

o Multiplicative Inverses

o Greatest Common Divisors

o Relatively Prime Integers

o Least Common Multiples

o Properties of Congruences

o Examples & Exercise

**Lecture
11: probability **

o Introduction

o Probability Function

o Dependent & independent events

o Examples & Exercise

** Lecture 12: Graph**

o What are Graphs?

o Simple Graph

o Multi Graphs

o Psedograph

o Examples & Exercise

**References:**

**Course Code**: C224

**Units**: 3

**Lecturer**: Khalid A. Tawfiq

**Description**:

**Course Overview**

Systems Analysis module gives a solid theoretical foundation for understanding feedback, control analysis and design and is suitable for all computer science divisions. This is supported by analysis and design activities such as software solution in analyzing case studies, within PC laboratories and on laboratory. Content covers basic analysis and motivation for feedback loops using both time domain and frequency domain techniques. Learning is reinforced through computer laboratories using computers to demonstrate results of their analysis by developing basic idea of database and programs. The latter part of the course focuses on common feedback strategies and students will learn both analysis and design of these and reinforce learning through application to laboratory systems.

**On Completion of the module, a student will be able to:**

1. Students will be aware of the distinction between reality and a model as a way of thinking about reality, in relation to the representation of data, information and knowledge relevant to the organisational needs.

2. Students will be aware of the concept of a “system”, and its implications for the investigation of organisational behaviour.

3. Students will be aware of the operations of information systems, the role of information technology in such systems, and the strategies for developing information systems.

4. Students will be aware of the different ways of looking at organisations and the key concepts of organisational management.

5. Students will be aware of onganisations needs and the method of analysing their requests.

6. Students will be aware of System Analysis & design importance.

7. System anlysis steps to be design and implemented.

8. Introducing Students to UML and developing systems within UML

9. Students will be aware database concept, structure, analysis and concept of database development

10. Introducing Students to Data base concepts and its structure

11. Introducing Students to Structure Query Langauge (SQL)

**Skills that will be practised and developed **

o Information modelling approaches

o Dealing with complexity issues Awareness of IT

o Awareness of the information system development

o Awareness of organisations and their management

o Awareness of Systems analysis & Design

o Awareness of doveloping Flowchart, Data Flow and Data modeling Daigrams

o Awareness of doveloping Awareness of doveloping UML Diagrams

o Awareness of Concepts Data Base and Database development

**Syllabus
Content**

**Lecture1: The context of
System Analysis & Design **

o System Owners

o System Users

o System Designers

o System Builders

o System Analysts

o External Service Providers

o The Project Manager

o
**Lab: Introduction to Software Life Cycle & Software Development
life cycle **

**Lecture2: Technology Drivers
for Today's Information System **

o Network and the Internet

o Mobile and Wireless Technology

o Object Technology

o Collaborative Technology

o Enterprise Applications (Mobile Programming Language)

o
**Lab: Mobile Apps Technology Tutorial **

**Lecture3: System Development
process **

o System Initiation

o System Analysis

o System Design

o System Implementation

o System Sport and Continuous Improvement

o
**Lab: Providing A system Idea to be drivin through Development Process **

**Lecture4: Project Management
Introduction **

o The causes of Failed Project

o The Project Management Body of Knowledge

o
**Lab: Creating A PERT Chart **

**Lecture5: The Project
Management Life Cycle **

o Negotiate Scope

o Identify Tasks

o Estimate Task Duration

o Specify Intertasks Dependencies

o
**Lab: Creating A Graphical Work Plan / Gantt Chart **** **

**Lecture6: Modeling System
Requirements With Use Cases **

o An Introduction to Use-Case Modeling

o System Concepts for Use-Case Modeling

o Use Cases

o Actors

o Relationships

o **Lab: Developing Use Case
Diagram**

**Lecture7: Data Modeling and
Analysis **

o Introduction to data Modeling

o System Concepts for Data Modeling

o Entities

o Attributes

o Relationships

o Constructing Data Models

o **Lab: Creating Data Modeling
Diagram**

**Lecture8: Data Modeling and
Analysis **

o Analyzing the Data Models

- A Good Data Model

- Data Analysis

- Normalization

o
**Lab: **Creating First Normal
Form

**Lecture9: Data Modeling and
Analysis **

o Analyzing the Data Models

- Normalization

o **Lab: Creating Second and Third
Normal Form **

**Lecture10: Introduction To
Database & DBMS **

o
**Lab: Working on Database Structure (Fundamental) **

**Lecture11: Introducing to SQL **

o **Lab: Using Application **

**Lecture12: Database Tables **

o **Lab: SQL Syntax **

**Lecture13: Selecting Statement **

o **Lab: SQL Select Statement **

**Indicative Reading and
Resource (References) List: **

o Beynon-Davies P: Business Information Systems. Palgrave Macmillan

o Doyle S: Information Systems for You. Nelson Thornes

o Data base managment System (Designing & bulding Business Application )

o
System Analysis Books are available in the **Faculty of Science
library **

**Course Code**: C223

**Units**: 3

**Lecturer**: Dilshad Hassan Sallo

**Description**:

**Course overview:**

The study of data structures is an essential subject of every under graduate and graduate programs related to computer science. A thorough understanding of the basics of this subject is inevitable for efficient programming. This course covers the design and implementation of data structures including arrays, stacks, queues, linked lists to give a better understanding about the Data Structures. Therefore, the aim of this course is to give you a feel for algorithms and data structures as a central part of what it is to be a computer scientist. You should end it appreciating that understanding the algorithm and data structures used for some problem is much more important than knowing the exact code for it in some programming language. You should be aware of the fact that there are often several algorithms for some problem, and one algorithm may be better than another or one algorithm better in some circumstances and another better in others. You should have some idea of how to work out the efficiency of an algorithm, though we won't cover detailed formal analysis. You should be confident with algorithms expressed using both iteration and recursion, and have some idea of how to convert algorithms expressed using recursion into iteration. You will be able to use and design linked data structures, but appreciate why it is good programming style to hide the details of a data structure within an abstract data type. You will appreciate how the inheritance mechanism of object-oriented languages enables you to write generalised code expressing an algorithm or data structure in a way that may be used in a variety of real-world situations.

**The
Topics:**

**Introduction and Doubly Linked
Lists**

1. Doubly Linked Lists (DLL)

1.1. Insertion to DLL

1.1.1. Insertion at the head

1.1.2. Insertion at the end

1.1.3. Inserting a node between to existing nodes

1.2. Deletion from DLL

1.2.1. Deletion from the head

1.2.2. Deletion from the end

1.2.3. Deletion a node between to existing nodes

**2.
**** Circular Doubly Linked Lists (CDLL) **

2.1. Insertion to CDLL

2.1.1. Insertion at the head

2.1.2. Insertion at the end

2.1.3. Inserting a node between to existing nodes

2.2. Deletion from CDLL

2.2.1. Deletion from the head

2.2.2. Deletion from the end

2.2.3. Deletion a node between to existing nodes

2.3. Test Plan

2.3.1. Implementing a Large Integer ADT

2.3.2. Algorithm (Addition)

2.3.3. Algorithm (Subtraction)

**3.
****Recursive Functions **

3.1. The Classic Examples of Recursion

3.2. Example (1): The Factorial of n (n!)

3.3. Example (2): The Power of mn.

3.4. Example (3): The Greatest Common Divisor

**4.
****Trees **

4.1. Definition

4.2. Binary Trees

4.3. Binary Search Trees

4.4. Recursive Binary Search Tree Operations

4.4.1. The Function LengthIs

4.4.2. The Function RetrieveItem

4.4.3. The Function InsertItem

4.4.4. The Function DeleteItem

4.4.5. The Function Print

4.5. Iterative Insertion and Deletion

4.5.1. The Function InsertItem

4.5.2. The Function DeleteItem

**5.
****Sorting and Searching Algorithms **

5.1. Sorting

5.1.1. Straight Selection Sort

5.1.2. Bubble Sort

5.1.3. Insertion Sort

5.1.4. Quick Sort

5.2. Searching

5.2.1. Linear Searching

5.2.2. Binary Search

**Course Code**: C221

**Units**: 4

**Lecturer**: Omar Ammar Omar

**Description**:

**Course overview:**

This course introduces the principle of computer organization and architecture with focus on detailed implementation of CPU, memory organization and management, bus, I/O systems and pipelining. The software part of the microprocessor will also be covered including data movement, arithmetic and logic, branching (conditional and unconditional), and interrupt. We shall further discuss both hardware and software technologies of computer systems and latest technologies, design, implementation and current development of related technologies.

**Course objectives:**

The goal of this course is to provide students with good background in computer architecture and microprocessor programing. When students complete this course they should:

o Know the basic structure of computer system.

o Understand the memory and internal structure.

o Understand I/O system.

o Understand the internal organization of CPU.

**The Topics:**

**Introduction**

o Fundamental concepts

o Organization and Architecture

o Structure and Function

o Classification of Computer Architecture

o Four Decades of Computing

**Memory
Organization & Management**

o Memory Hierarchy

o Main Memory

o Cache Memory

o Virtual Memory

o Associative Memory

**Register
Transfer & Micro Operation**

o Register Transfer

o Arithmetic Micro Operation

o Logic Micro Operation

o Shift Micro Operation

**Course
Reading List and References:**

o William Stalling, Computer Organization and Architecture, 8th edition,Prentice Hall, 2010.

o M. Morris Mano, Computer System Architecture , 3rd edition ,1992

o Peter Abel, IBM PC Assembly Language and Programming,5th edition, Prentice Hall, 2005

o Barry B. Brey, The Intel Microprocessors, 7th edition, Prentice Hall,2006