## Mathematics

This course is intended to give students a back ground of other mathematics courses needed to build the mathematical maturity and sophistication needed by science students and IT students in particular. This course begins with a study of functions, the basic tool of calculus, their algebra and families of functions, the basic concept, and the limit of a function, the continuity and the derivative of a function. Then it introduces some special functions as the trigonometric, logarithmic and exponential functions. Finally, it covers the definite and the indefinite integrals.

## Matrices Algebra

The course covers systems of linear equations, matrices and determinants as tools in the study of vector spaces in detail. Linear independence, generators, and dimension are given. Also, row space, rank, eigenvalues and diagonalization of a matrix are given. Finally, the course covers linear transformation, kernel, image and change of basis.

## Integration & Differentiation

This course is intended to give computer students an orientation in calculus, namely, the techniques of integration, applications, and the ability to express a function (when possible) as a series for the purpose of computation.

## Principles of Physics

The course covers the following subjects: motion in one dimension, vectors, motion in two dimensions, the laws of motion (Newton’s Laws of Motion), circular motion, work and energy, potential energy and conservation of energy, electric fields, Gauss’s Law, electric potential, and capacitance.

## Introduction to Computer

The course introduces the students to the basics of computers hardware, software, connectivity and users. The different features of computer and its main components are described. It presents also the data types and data representations. Moreover, the student will learn how to write algorithms for solving problems using flowcharts, pseudo code, structured programming language concepts, and some concepts about assembler, interpreter and compiler.

## Computer Programming 1

The course introduces the fundamental concepts of programming using structured programming language. It covers basic programming tools, such as variable names, data types, operators and operands. Then it covers programming control structures, conditional and iterative. Program composition of functions, function definitions, parameter passing to functions, and function library concepts are introduced. Principles and basic operations of arrays are then covered.

## Computer Programming 2

This course is intended to provide a conceptual foundation of Object-oriented programming, the introduction to key components of object-oriented programming and basic java Programming with operators, selection statements, repetition statements, string methods and arrays.

## Object-Oriented Programming (OOP)

This course is intended to offer a solid and detailed understanding of OOP concepts, threads, components, and GUI in JAVA. To teach students the modeling and development of software system using OOP basic components and to make the students capable of implementing small projects on JAVA application.

## Algorithms & Data Structures 1

This course enhances the programming skills of the students. Different data structures (stacks, queues, strings, trees) are described as abstract data types with their methods by training extensive examples and applications. Designing and analyzing different searching and sorting algorithms in terms of time and space, which must be taken into consideration in any program. Brief introduction to binary trees and graphs is also covered.

## Computational Geometry

This course introduces students the essentials of Computational Geometry and presents an in-depth study of the fundamental geometric structures and techniques. Topics to be covered include geometric searching, convex hulls, proximity computations, intersections, arrangement and duality, visibility graph, and other special topics. Applications to problems from other fields such as Computer Graphics, Computer Vision, Databases, Robotics, CAD/CAM, GIS, VLSI design and molecular biology will also be discussed. The computational solution of such problems is often non-trivial: it relies on the choice of appropriate data structures and on skillful implementation of linear algebra concepts.

## Introduction to Information System

The course develops an understanding of the information systems concept and of the objectives and concepts of the information systems field of study, and provides exposure to basic microcomputer applications. Topics include general systems concepts, hardware and software, windows, spreadsheets and database applications, use of the Internet, and computer-based information systems. Moreover, the course examines current trends in information systems and the impact these trends may have on work performance.

## Algorithms & Data Structures 2

This course provides advanced topics in data structures and algorithms that cover recursion, binary search trees, multi way trees, hashing and graphs. The students will learn how to apply these techniques to important problems such as searching, sorting and tree traversals in trees and graphs.

## Statistical Programming

This course will introduce the student to statistical computing by develop programming and computing skills to address data analysis problems using statistical programming tools. During this course the student will develop statistical analysis programs using the high-level computer language, and will compare these programs to similar procedures in commercial statistical software packages such as SAS, SPSS and MATLAB.

## Databases Management System

An in-depth introduction to the database management system (DBMS), with an emphasis on how to design a database, and use DBMS efficiently. Topics include data modeling, design of normalized relational database, using structure query language (SQL), and data protection. Moreover, some advanced topics will be discussed like: object oriented database and relational-object data bases.

## Computer Vision

This course is designed to provide the students with an overview of digital image processing and computer vision analysis. Both areas are large enough to justify a course on their own; this one semester course covers the fundamentals of image formation, low-level image processing and enhancement in both the spatial and Fourier domains, and gives a flavor of higher level vision tasks by studying some of the segmentation, feature extraction, matching, and object recognition.

## Computer Modeling and Simulation

The course introduces the students about modeling and simulation with the aid of computers. The behavior of different types of systems are introduced and analyzed to understand and identify factors affecting the performance of the system. Then a model is evolved to study the functioning of the system. About ten models are introduced in the theory classes and almost the same number of models is practiced in the Laboratory sessions.

## Operating System 1

The course introduces the fundamental concepts of operating systems. It covers an introduction which includes the evolution of operating systems (OS), operating system structure, process management, storage management, file system interface, I/O system, secondary storage structure and case studies.

## Data Warehousing and Data Mining

This course presents both of data warehousing and data mining as an advanced recent developments in database technology which aim to address the problem of extracting information from the overwhelmingly large amounts of data. Data warehousing focuses on supporting the analysis of data in a multidimensional way. Data mining focuses on inducing compressed representations of data in the form of descriptive and predictive models. The covered topics includes data warehousing and mediation techniques aimed at integrating distributed, heterogeneous data sources; data mining techniques such as rule-based learning, decision trees, association rule mining, and statistical analysis for discovery of patterns in the integrated data; and evaluation and interpretation of the mined patterns using visualization techniques. Moreover, the work discussed originates in the fields of databases, artificial intelligence, information retrieval, data visualization, and statistics. Industrial and scientific.

## Combinatorial Analysis of Computer

This course introduces the combinatorial analysis as an area of mathematics concerned with solving problems for which the number of possibilities is finite. The covered topics are: basic counting methods, generating functions, Probability and Pigeonhole Principle.

## Digital Logic

This course is designed to familiarize the students with Digital Logic Design, with the specific objective to make them understand how the hardware of the computer works. Students are introduced to the concept of Boolean functions, design of logic circuits, simplification of the circuits, combinational logic design, working of registers, counters and adders. On the whole the students are expected to acquire a reasonably good knowledge of the internal working of the Central Processing Unit.

## Programming Languages

This course is designed to provide students with the tools necessary for the critical evaluation of existing and future programming languages and constructs. An additional goal is prepare them for the study of compiler design and constructions. The fundamental concepts of programming languages are described by defining the design issues of the various language constructions, examining the design choices for these constructions in some of the most common languages, and critically comparing the design alternatives.

## Computer Networks 1

This course intends to introduce the principle, design and implementation of computer networks. It covers fundamental concepts of computer communication networks and associated protocols. It also include the major building blocks of computer networks such as layered network architecture, Network Models, Data and signals, Transmission media, Data Link Control, Ethernet, Virtual Circuit Networks (i.e. Frame Relay & ATM) and Internet Protocol.

## Introduction to Artificial Intelligence

This course is designed to provide the students with an introduction to the fundamental concepts and techniques underlying the construction of intelligent computer systems and stimulate practical experiences of using such techniques in applications by apply some of them in programming assignments. Topics covered in the course include: Intelligent agent, problem solving and search, game playing, expert systems, fuzzy logic, and machine learning.

## Discrete Structures

The course introduces the discrete structures which are the abstract mathematical structures used to represent discrete objects and the relationships between these objects. The discrete structures we will be studying include sets, relations, Mathematical Induction, functions, Mathematical logic,Divisibility, Prime Numbers, Fundamental Theorem of Arithmetic, Congruence, Congruence Class Modulo m, graphs, trees, recursive definitions and finite state machines. Moreover introduce some applications in (BNF), Finite State Automata and Turing Machine.

## Theory of Compilers

The course interested with compiler design, construction and implementation. The course covers the analysis stage of compilation, language definition, lexical analysis, top-down parsing, bottom–up parsing and semantic analysis, storage allocation and code generation. The course also has a practical aspect in which students undergo mini-projects such as the implementation of a lexical analyzer, a non-recursive predictive parser, and a shift-reduce parser. During the course students undertake practical examples and case studies using LEX and YACC.

## Microprocessors and Assembly Language

This course introduces the students to the machine level functioning of the computer hardware. The students are taken to the world of microprocessor instructions, memory organization and execution of micro-instructions. Assembly language is introduced at the theoretical and laboratory level. Simple programs in assembly language is developed and executed. This course is intended to make the student understand how a high level language is able to produce the desired output based on the input, with the help of the hardware.

## Operating System 2

The course introduces advanced topics in operating systems and covers the following topics: File System Interface, Virtual Memory,I/O Sub-systems, Mass Storage Devices, Protection, Security, Distributed Systems anda Contemporary Operating System as Case Study.

## Internet Technology

The course intends to let the students to understand how the Internet works to be able to install, configure, and design its services effectively. Also is dedicated to web programming and to develop e-commerce applications. The course cover a number of languages with features that specifically geared for Web development like VB Script and JavaScript at client-side, and ASP at server side. Moreover a generic system design and functionality that can be leveraged by any e-commerce application. An ordering management system is presented as a case study, which allows customers to view products and purchase through credit cards.

## Computer Graphics

This course is designed to provide the students with an overview of computer graphics and the fundamentals of graphics. The following is an approximate outline for the course, subject to alteration as the semester proceeds: Graphics display devices, inter active devices, input devices, the principles of various devices, line drawing algorithms, Transformation 2D-3D, Projections, clipping and viewing algorithms.

## Computer Organization

The course Elements of computer design. Timing, instructions and control. Register transfer and micro-operations. Basic computer organization. CPU organization design of arithmetic unit and logic unit. Hardwired control unit. Micro-programmed control unit. Memory hierarchy. Cache memory. Virtual memory.

## Software Engineering 1

This course is an introduction to software engineering and examines the theory, techniques, and technologies associated with the design, construction, and testing of software systems. Topics cover the software engineering paradigms, requirements specification, functional design, object-oriented design, software verification, and maintenance. Comprehensive discussion of human-computer interaction and user interface design.

## Software Projects Management

The course introduces the students to the various concepts and methodologies of Project Management. The actual procedures are described. Exercises and Case Studies (Workshops) are introduced within the learning scope, whereby assessing general implications. Brief introduction to Microsoft Project is given as well. Students will build hands-on training from especially prepared workshops.

## Multimedia

The course covers multidimensional interpretation of “media”, spatial and temporal distribution of information, information signals representation, sampling, quantization, structure and properties of audio-visual signals, perception models, data compression algorithms, transform coding audio and video systems, Image formats and standards, Color models in images. Image compression. Principles of animation, multimedia databases, Digital video. Video compression. Video on the Internet & video streaming. Videoconferencing. Multimedia software tools. Issues in multimedia applications design. Multimedia programming techniques and hardware architectures.

## Computer Networks 2

This course introduces the state of the art advance topics in network protocol, architecture and applications. Important topics cover include Data Link Layer: Error Detection and Correction, Network Layer: Logical Addressing, Delivery, Forwarding, and Routing, Quality of Service (QoS), Network Management: SNMP, Cryptography, Security in the Internet: IPSec, SSL/TLS, PGP VPN, and Firewalls.

## Software Engineering 2

This course is an advanced course in software engineering. Topics coves, software quality and development, software metrics, measuring complexity, quality, productivity, maintainability and usability. Object oriented principle. Object oriented design and its practical applications. Software design using re-engineering approach.

## Project 1

Graduation project is a challenge for the students to consolidate the knowledge they had acquired during the first 8 semesters and apply them to develop software in an area of their choice. It is supervised and monitored by faculty members of the department with research degrees. During Project 1, the students will identify problem, make system study and finalize the design. The project is done in groups of four students, normally. This is also an opportunity for the students to achieve group tasks.

## Computing Ethics & Society

The course intends to covers the computer crime (viruses, worms, Trojan horses, hacking) and the ways to implementing computer ethics (computer professionals and social responsibilities). Also the software copyright, piracy, privacy, security, and civil liberties and some selected topics such as: Philosophical Foundations of Ethics, Ethical Dissent And Whistle-blowing, Monopolies and Their Economic, Social and Ethical Implications.

## Design & Analysis of Algorithms

The course covers the design and analysis of algorithms is by (a) find an algorithm to solve the given problem, (b) prove that the algorithm solves the problem correctly, (c) if possible, show that the problem cannot be solved any faster, and (d) implement the algorithm. Designing an algorithm for a computational problem involves knowledge of the problem domain, a thorough knowledge of the data structures that are available and suitable and a good measure of creativity. This course concentrates on the above issues. The course will also cover useful algorithmic design techniques, and methods for analyzing algorithms.

## Expert Systems & Knowledge Engineering

This course introduces the students to the basic concepts of the Expert Systems. The focus of attention of this course will be Rule-Based Expert Systems and their applications. Reasoning under uncertainty and representing imprecise and/or uncertain knowledge will also be a central part of this course.

## Seminar

In this course, students are assigned individual projects in recent issues and trends in computer sciences to demonstrate their ability in research, report writing and oral presentation. Projects are Discussed in workgroups so to involve the whole class in these subjects.

## Selected Topics

In this course, topics are selected from different areas in computer science that are not covered in the description of the courses listed in the curriculum. This course will cover subjects of recent issues and trends in computer science. And may be let to the willing of the instructors, and must be covered not limited to the following advanced subjects: new trends in distributed and mobile computing, new trends in data and computer security, new trend in artificial intelligence, etc.

## Project 2

It is a continuation of Project 1. The design finalized in the Project 1 phase will be implemented in this phase. The students will have the opportunity to generate code, debug, test and integrate the modules and validate. They will also experience professional documentation procedures and develop presentation skills.