Courses Catalog
Bachelor  Master  PhD
Bachelor of Science in Computer Science Guide
A. Mandatory Courses
CSC 111 – Computer ProgrammingI (321)  
Course Description  Introduction to computers and programs. Programmer’s algorithm, byte code and Java Virtual Machine. Java program’s structure, constants, variables and builtin data types. The arithmetic, assignment, increment and decrement operators. Classes and object definition, UML representation of a class, declaration of objects (Instance variables), primitive types and reference types. Relational and logical operators, Boolean expressions, conditional statements, loop statements. Object oriented principles, encapsulation and information hiding, methods and the message passing principles, setters, and getters. Methods in depth, passing parameters, constructors, setters. Arrays, usefulness of arrays, declaration of arrays, access to array elements, operations on arrays. 
Prerequisite  CT 101  IT Skills. 
Textbook 

Course Objectives  The course aims at giving the students a broad foundation in the fundamental concepts of object oriented programming accompanied by specific labs to develop the basic skills in object oriented programming with Java. It introduces the basic concepts and principles of the Object Oriented approach such as: (i) Abstraction and Encapsulation principles, (ii) Classes, objects and the constructor concepts, (iii) Information hiding principle and the assessors concept. (iv) Methods, the message passing and the overloading principles. 
CSC 113 – Computer ProgrammingII (321)  
Course Description  This course continues the coverage of the fundamental concepts of Object Oriented Programming started in Programming I (CSC 111). It covers more advanced concepts and topics This course continues the coverage of the fundamental concepts of Object Oriented Programming started in Programming I (CSC 111). It covers more advanced concepts and topics such as relationships between classes, inheritance, polymorphism, abstract classes, error handling, interfaces, generics and data structures such as linked lists, stacks and queues, in addition to graphical user interface 
Prerequisite  CSC 111  Computer Programming I. 
Textbook 

Course Objectives  The objective of this course is to develop the students' ability to use the basics of objectoriented design and programming. The students learn the characteristic features of object orientation – classes, methods, polymorphism, and inheritance – through both the lectures and a sequence of illustrative programming assignments. Students will also study list data structures, event driven programming and graphical user interface tools. 
CSC 212 – Data Structures (301)  
Course Description  Fundamental concepts of data structures. Performance measurement of algorithms. Implementation and use of lists, stacks, queues, priority queues, trees, heaps, hash tables and graphs. Recursion. Students will do programming assignments. 
Prerequisite  CSC 113  Computer Programming II. 
Textbook 

Course Objectives  The objective of this course is to teach the fundamentals of data structures needed in the remainder of the curriculum and develop students’ problem solving and computer programming skills. 
CSC 215 – Procedural Programming With C (221)  
Course Description  Introduction to the procedural programming paradigm. Brief history of C. C primitive data types, variables and constants, operators (arithmetic operators, logical operators, and access operators). Control structures. Procedures and parameter passing. User defined types. Pointers. 
Prerequisite  CSC 111  Computer Programming I. 
Textbook 

Course Objectives  The objective of this course is to teach students the design and implementation of C programs. They also are meant to understand when to use procedural vs. OO programming. 
CSC 220 – Computer Organization (221)  
Course Description  The course introduces basic digital logic design techniques and integrates the topics of generic assembly language programming, computer organization, and computer design. The objectives of this course are to: help students learn the fundamental elements of computer architecture from a functional, hardware perspective; foster an appreciation of organizational models and design decisions that determine the overall performance, capabilities, and limitations of a computer system; and help students understand the interdependencies among assembly languages, computer organization, and design. Topics include Introduction to basic computer organization and how the computer works; DeMorgan’s Law, simplifying circuits using Karnaugh maps, Instruction code, Computer registers, Instruction set, Timing and control; Register Transfer Language HDL ( Hardware Description Language) and Microoperations; Computer Arithmetic Logic Unit Design. Hardwired control unit, instruction set, introduction to addressing modes; Central Processing Unit Design, Register organization, Instruction format, Addressing modes. 
Prerequisite  MATH 151 Discrete Mathematics. 
Textbook 

Course Objectives  The course aims to give the students:

CSC 227 – Operating Systems (301)  
Course Description  This is an introductory course in Operating Systems. As such, it is intended to cover many of the concepts related to most of the actual Operating Systems. Although the study of a particular Operating System is out of the scope of this course, nevertheless, we will cover most of the concepts found in any existing Operating System. We will review computer system and operating system structures, processes and threads (concepts of, communication, synchronization and deadlocks), CPU Scheduling, memory management and virtual memory. 
Prerequisite  CSC 212  Data Structures. 
Textbook 

Course Objectives  Course objective is to provide the concepts of operating systems design and implementation. It identifies and describes the major and common components of an operating system with stating their functions and purposes especially process management (process scheduling, and synchronization), and memory management (segmentation, paging, and swapping). 
CSC 281 – Discrete Mathematics for Computer Science (301)  
Course Description  Logic and methods of proofs. Basic Discrete Structures: Sets, Functions, Recursive definitions, Sequences and Summations. Growth of functions. Integers and Division, Rings & Fields, Applications of Number Theory. Combinatorics: Counting techniques, Permutations and Combinations, Binomial Coefficients, Permutation and Combinations with repetition, Recurrence Relations, Generating Functions. Discrete Structures: Relations, Graphs, Trees and Finite State Machines. Discrete Probability (optional). 
Prerequisite  STAT 101  An Introduction to Probability & Statistics. MATH 151  Discrete Mathematics. 
Corequisite  CSC 212 – Data Structures. 
Textbook 

Course Objectives  The course is an introductory course in discrete mathematic with emphasis on how this theory can be invoked to develop efficient algorithms and systems. Also, it serves as the mathematical perquisite for many advanced courses. 
CSC 304 – Ethical Issues in Computing & Research Methods (301)  
Course Description  This course seeks to equip students with sufficient knowledge of Computer Ethics to enable them recognize the ethical nature of certain issues that arise in the Information and Communications Technology (ICT) workplace. The course studies the effect of the proliferation of computers in our world, the impact of computers in the social, economic, political, and other aspects of our life. It covers the moral and legal obligations of computer professionals and issues concerning security, privacy versus freedom of information, ethics and professionalism, intellectual property rights, research methods: collecting and analyzing data, critical evaluation of research, report writing, choosing and evaluating references, and presentation skills. 
Prerequisite  CSC 113 Computer Programming II. 
Textbook 

Course Objectives  The objective of the course is to provide the students with main concepts of computer ethical issues and to introduce scientific research methods. 
CSC 311 – Design and Analysis of Algorithms (301)  
Course Description  Mathematical essentials; sorting; space and time complexity; algorithm design methods: greedy algorithms, divide and conquer, and dynamic programming; introduction to graph theory; and NPcompleteness. 
Prerequisite  CSC 281  Discrete Mathematics. CSC 212 Data Structures 
Textbook 

Course Objectives  The course aims at giving the students a broad foundation in the fundamental concepts of object oriented programming accompanied by specific labs to develop the basic skills in object oriented programming with Java. It introduces the basic concepts and principles of the Object Oriented approach such as: (i) Abstraction and Encapsulation principles, (ii) Classes, objects and the constructor concepts, (iii) Information hiding principle and the assessors' concept. (iv) Methods, the message passing and the overloading principles. 
CSC 329 – Computer Networks (301)  
Course Description  This course covers the theoretical as well as handson knowledge of Computer Networks covering all the fundamental aspects of networking such as OSI, TCP/IP, LANs, MANs,WANs, Routing Protocols, Switching etc. This course will discuss the design of small to medium size networks as well as different networking issues related to routing and switching. 
Prerequisite  CSC 227  Operating Systems. 
Textbook 

Course Objectives  The objective of this course is to equip students with theoretical as well as handson knowledge of Computer Networks covering all the fundamental aspects of networking such as OSI, TCP/IP, LANs, WAN, Routing Protocols, Switching etc. At the end of the course, students should be able to handle small to medium size networks and have the ability to implement and troubleshoot different networking issues related to routing and switching. 
CSC 339 – Theory of Computation (301)  
Course Description  Mathematical preliminaries. Regular languages, regular expression, deterministic and nondeterministic finite automata, closure properties and pumping lemma. Contextfree grammar and languages, pushdown automata and pumping lemma. Turing machines, the ChurchTuring Thesis, Computability. Decidability and the Halting problem. Complexity, class P and NP. 
Prerequisite  CSC 281  Discrete Mathematics for Computer Science. 
Textbook 

Course Objectives  The course aims at answering two questions: what can be computed by a machine? And how efficiently? It starts by presenting machines models, then addresses the computability problem, and then the complexity of algorithms and their classification .according to it 
CSC 340 – Programming Languages and Compilation (301)  
Course Description  Programming Languages: features, design and translation issues. Lexical Analysis. Syntactic Analysis. Semantic Analysis. Code Generation. 
Prerequisite  CSC 339  Theory of Computation. 
Textbook 

Course Objectives  The objective of this course is to explore different types of programming languages and their features, and study translation/compilation techniques used in translating the highlevel languages to a machine language. A basic compiler for a small programming language will be implemented during the semester. 
CSC 343 – Systems Analysis and Design (301)  
Course Description  This course focuses on the principles of software development including the lifecycle models and different phases of the software development process: requirements analysis, specification and design. The key objective of this course is to learn modular design of software and documenting the design using symbolic representations, i.e., UML diagrams. Objectoriented techniques are key to the course. However, this is not a programming course. The key characteristic is having teams of three to four students work on developing software systems over a course of one semester. This work includes a feasibility study, requirements analysis and objectoriented design. 
Prerequisite  CSC 212 Data Structures. 
Textbook 

Course Objectives  The purpose of this course is to present software engineering as a body of knowledge. The course is designed to present software engineering concepts and principles in parallel with the software development life cycle. 
CSC 361 – Artificial Intelligence (301)  
Course Description  The course will provide an introduction to artificial intelligence. Topics include: problem solving using search (search procedures e.g. depthfirst, breadthfirst, A*, etc.), constraint satisfaction problems, game playing, knowledge representation and inference procedures. Abstract highlights cover an advanced AI topic (e.g. machine learning, natural language processing). Students will do a small project in this course as well. 
Prerequisite  CSC 212 Data Structures. 
Textbook 

Course Objectives  The objective of this course is to develop the students' ability to understand the concepts of AI. The students will be taught and required to practice the informed and uninformed search techniques, problem formulation, optimization techniques, knowledge representation and detailed game theory. The students are expected to present their skills by a course project. 
CSC 380 – Introduction to Database Concepts (301)  
Course Description  Purpose of Database Systems, View of Data, Data Models, Data Definition Language, Data Manipulation Language, Transaction Management, Storage Management, Database Administrator, Database Users, Overall System Structure. Entity Sets, Relationship Sets, Design Issues, Mapping Constraints, Keys, ER Diagram, Design of an ER Database Schema. Structure of Relational Databases, Relational Algebra, Extended RelationalAlgebraOperations, Modification of the Database, Reduction of an ER Schema to Tables. Basic Structure, Set Operations, Aggregate Functions, Null Values, Nested Subqueries, Derived Relations, Views, Modification of the Database, Joined Relations, DDL, DML. First Normal Form, Relational Database Design, Functional Dependencies, Decomposition, BoyceCodd Normal Form, Third Normal Form, Overall Database Design Process. 
Corequisite  CSC 212 – Data Structures. 
Textbook 

Course Objectives  This course aims at giving the students a broad foundation in the fundamental concepts of database. This should allow students to design and implement real life databases, in addition to evaluate existing ones. Students will be able to use query of different types of complexity. 
CSC 429 – Computer Security (301)  
Course Description  Security principle, model and attacks. Cryptography, public key and secretkey cryptography. Authentication and digital signature. Key management and cryptographic protocol. Access control. Building secure system. Security in operating systems. Security in computer networks. Management and analysis of security. Risk assessment. Computer security policy. International information security standards. Intrusion detection and incident response. 
Prerequisite  CSC 329  Computer Networks. 
Textbook 

Course Objectives  The course aims at giving the students a broad foundation in the fundamental concepts of Computer Security. It introduces the basic concept and principles of computer security such as: Security requirements, encryption, access control, malicious software, security policy and management. 
CSC 453  Parallel Processing (301)  
Course Description  Introduction to parallel processing. Models of parallel machines. Parallel programming paradigms and models. Performance analysis of parallel systems. Parallel programming languages and frameworks. 
Prerequisite  CSC 227  Operating Systems. 
Textbook 

CSC 457 – Internet Technologies (301)  
Course Description  An overview of Internet technologies (definitions, evolutions, examples, and, applications). Publishing and browsing technologies. Internet tools. TCP/IP and Client/server architectures. WWW, HTTP and HTML for text, images, links and forms. Webbased applications development: clientside scripting, serverside scripting and the MVC design approach. WEB site development. Security and privacy. 
Prerequisite  CSC 329 – Computer Networks. 
Textbook 

Course Objectives  The goal of this course is to provide an introduction to the basic concepts of the technologies that are used on the Internet. Students learn about building blocks of internet. They learn about various protocols used by internet. Students learn about web servers, search engines and software tools required to implement a website. 
CSC 496 – Graduation ProjectI (200)  
Course Description  This course is the first part of a sequence of two courses (CSC496 and CSC497) that in entirety constitute the BSc graduation capstone project. In this project, the student is expected to develop software for a specific problem by applying previously learned concepts and methods during the course of the project. In this course the student is typically expected to study the problem, see what others have done, perform the analysis, determine the requirements and suggest/design a solution. The project will culminate in a formal public presentation, and written documentation. Oral and written progress reports are required. The project topic may be provided by the faculty, by the student(s) or by the industry. The topic is subject to the departmental approval. 
Prerequisite  Student must have finished at least 95 hours in the BSc program. CSC 343  System analysis and design. 
Course Objectives  This course is a semesterlong team project, where students apply a broad range of skills learned in earlier courses, and demonstrate their competence in technical material, communications, and project skills. 
CSC 497 – Graduation ProjectII (400)  
Course Description  This course is the second part of a sequence of two courses (CSC496 and CSC497) that in entirety constitute the BSc graduation capstone project. In this project, the students will continue the software development of the problem they picked in CSC496. The project will culminate in the delivery of a working system, a formal public presentation, and written documentation. Oral and written progress reports are required. 
Prerequisite  CSC 496  Graduation ProjectI. 
Course Objectives  This course is a semesterlong team project, where students continue what they did in the first part of this project. In this part there are expected to do the actual implementation and evaluation. 
CSC 479 – Practical Training – (100)  
Course Description  Training is an important aspect of the educational process in CCIS. Student is required to join a government or private sector IT center. The aim of the training is to acquire the experience in applying what he learned in real life. The training is evaluated by the training advisor at the IT center and by the CCIS training committee. 
Prerequisite  Student must have finished at least 95 hours in the BSc program. 
Course Objectives  This summer training for college students aims to provide them with a sound foundation out of theoretical and practical hands on knowledge and experience in the field of computer science. The course will provide students insight in to design methodology and implementation using different types of programming languages in different environments. 
B. Elective Courses
CSC 226 – Unix OS Environment (120)  
Course Description  Overview of the Unix OS, basic concepts, usage of the help and man and info commands. Unix file system and basic commands. Redirection and pipelining. Filtering commands: line searching, (grep, egrep and frep), line content manipulation (cut, sort, tr …). Line visualization (pr, pg, more, tail, fmt, …), comparing files (diff and cmp). Users and userrights. Process management. The command find. Shell programming. The awk and sed commands. 
Prerequisite  CSC 111  Computer Programming I. 
Textbook 

CSC 261 – Artificial Intelligence Programming Languages (301)  
Course Description  This course provides an overview of functional, logic and constraint logic programming paradigms used in the context of artificial intelligence. The course focuses on Prolog language syntax and semantics: lists, operators, arithmetic, structures, input/output, builtin predicates, etc. It emphasizes constraint handling and solving combinatorial problems involving constraints. 
Prerequisite  CSC113  Computer Programming II. 
Textbook 

CSC 320 – Systems Programming (301)  
Course Description  The course aims to give the students a theoretical and practical understanding of the programming interface to a Unix system, including the system call interface and many of the functions provided in the standard C library. Topics covered include an overview of the basic Unix programming concepts, an introduction to shell programming, unbuffered I/O, the standard I/O library, the environment of a Unix process, process control, signals, and interprocess communication. 
Prerequisite  CSC 227  Operating Systems. 
Textbook 

Course Objectives 

CSC 384 Applied Numerical Computation (301)  
Course Description  This is an introductory course on Numerical Analysis and Methods. Topics include: errors and their propagation, floatingpoint computation, algorithms and numerical stability, linear systems of equations, interpolation, difference equations, curve fitting, nonlinear equations, numerical differentiation and integration. 
Prerequisite  CSC 311  Design and Analysis of Algorithms. 
Textbook 

CSC 386 – Algorithms and Techniques for Database Management Systems (301)  
Course Description  The goal of this course is to introduce the students to the following fundamental data management issues: database file organization, indexing, query processing and optimization, transaction, concurrency control, recovery system as well as other advanced topics. 
Prerequisite  CSC 380  Introduction to Database Concepts 
Textbook 

Course Objectives  The main objective of this course is to provide an indepth understanding of Database Management Systems. In particular, students will be exposed to the internal structures and algorithms of a relational database system in order to facilitate their ability to later build database systems in general. 
CSC 412– Simulation and Modeling (301)  
Course Description  Introduction to Simulation. Concepts in Discreteevent Simulation (DES). Components of DES. Monte Carlo simulation, the life cycle of a simulation study, input and output data analysis, world views and time control, random number generation, credibility assessment of simulation results, simulation languages, Parallel and Distributed Simulation, applications of simulation using contemporary simulation modeling and support software. 
Prerequisite  CSC 111  Computer Programming I STAT 101  An Introduction to Probability & Statistics 
Textbook 

CSC 430 – Computer Arabization (301)  
Course Description  System Arabization level (screen Arabization, keyboard Arabization, printer Arabization, font and codepage manipulation, creating visual Arabic interfaces, etc.);Introduction to Arabic natural language processing (Arabic morphological analysis, Arabic syntax and semantics, Classical models, Applications); Applying neural networks in Arabic natural language processing (neural networks for Arabic morphological analysis, neural networks for syntactic analysis); The phonetic properties of the Arabic language (Arabic allophones, isolating Arabic allophones, characterization of Arabic allophones, using Arabic allophones in some applications. 
Prerequisite  CSC 220 – Computer Organization CSC 227  Operating Systems 
Textbook 

Course Objectives  The objective of this course is to be aware of the stateoftheart in Computer Arabization. 
CSC 440–Human Computer Interaction (301)  
Course Description  Introduction to HCI. The Human User: Capabilities and Limitations. The Computer: Capabilities and Limitations. The Interaction: Models of Interaction and Interaction Styles. Usability Principles: Principles of HCI that support user friendliness. Interface design: dialog notation and design  Visual Design. Design support: Systems that support the design process. Usability Evaluation. Introduction to Speech Computing and other Forms of Input/output. 
Prerequisite  CSC 343 – Systems Analysis and Design 
Textbook 

CSC 443 – IT/Software project management (301)  
Course Description  Project life cycle; Project constraints; Project organization; Risk management; Project cost; Integrated schedule and critical path analysis; Baseline cost; Team building; Project planning; Reporting on project status; Closing and signoff. 
Prerequisite  CSC 343 – Systems Analysis and Design 
Textbook 

CSC 446 – Design Patterns (301)  
Course Description  This course aims at giving student the ability of design programs using patterns. A design pattern is a general repeatable solution to a commonly occurring problem in software design. Design patterns deal specifically with problems at the level of software design. Definition, context of use will be introduced along with their classification. Some of the most used pattern will be studied such as : Abstract factory, Factory method, Builder, Lazy initialization, Object pool, Prototype, Singleton, Adapter, Bridge, Composite, Decorator, Façade, Flyweight ,Proxy, Chain of responsibility, Command, Interpreter, Iterator, Mediator, Observer. 
Prerequisite  CSC 343 – Systems Analysis and Design 
Textbook 

CSC 456 – Distributed Systems (301)  
Course Description  Understanding the main characteristics of distributed systems and the various design choices required for building a distributed system such as: the architectural models varying from client/server to peertopeer, gridcomputing; the communication models varying from clientpull (RPC/RMI, Message Queuing, …) to serverpush models (publishsubscribe, …); the synchronization techniques based on system clock, on logical clock (timestamp) and on token ring; the standard middlewares such as RPC, RMI, Corba and SOAP. 
Prerequisite  CSC 329 – Computer Networks. 
Textbook 

Course Objectives  The course aims at giving the students a broad foundation in the fundamental concepts of distributed systems accompanied by specific project to develop the basic skills in network programming using RMI or RPC. It introduces the basic architectural models of distributed systems as well as the communication paradigms such as Publish/Subscribe, Message passing, Remote Procedure Call/ Remote Method Invocation, Message Queuing, etc. Besides, it presents various techniques of synchronization. It aims too to introduce distributed algorithms such election, mutual exclusion, etc 
CSC 459 – NetCentric Computing (301)  
Course Description  Overview of most important distributed algorithms such as election, mutual exclusion, termination detection and concurrency control; Object based distributed systems concepts and the CORBA standard middleware; Introduction to component based distributed systems with focus on implementation issues and on related technologies; SOA and Webservices technologies with focus on SOAP and WSDL; Advanced distributed computing models such peertopeer and Grid computing with emphasis on related technologies such as Juxta, Net and Globus toolkit. 
Prerequisite  CSC 329  Computer Networks. 
Textbook 

CSC 462 – Machine Learning (301)  
Course Description  This course gives an overview to machine learning concepts, techniques, and algorithms. Topics include: inductive learning, decision trees, artificial neural networks, instancebased learning, clustering, reinforcement learning, and some examples of application domains. 
Prerequisite  CSC 361 Artificial Intelligence. 
Textbook 

CSC 463 – Knowledge Engineering and Expert Systems (301)  
Course Description  The course will provide an introduction to knowledgebased systems. Topics include: knowledge representation and inference, representing uncertainty using probabilistic logic and fuzzy logic, nonmonotonic reasoning and knowledge acquisition. The students will do a programming project related to knowledgebased systems. 
Prerequisite  CSC 361 Artificial Intelligence. 
Textbook 

CSC 476 – Computer Graphics (301)  
Course Description  This course is an introduction to computer graphics, with an emphasis on application programming using OpenGL software. The topics covered are: Introduction to Computer Graphics  Graphics Display Devices  Drawing Based Graphics Primitives  Transformation of Object  3D Affine Transformation.ThreeDimensional Viewing  Tools for Raster Displays  Scan conversion Algorithms  Defining and Filling Regions of Pixel.  Filling PolygonDefined Regions.  Aliasing :Antialiasing Techniques.  Creating more Shades and Colors. 
Prerequisite  CSC 212  Data Structures. 
Textbook 

CSC 478 – Digital Image Processing and Analysis (301)  
Course Description  Introduction; Image Sensing and Acquisition; Some Basic Gray Level Transformations for Image Enhancement.; Image Contrast Enhancement Using Histogram Processing; Image Smoothing Using Spatial Filters; Image Sharpening Using Spatial Filters; Point, Line and Edge Detection; Basic image compression procedures; Basic Global and Adaptive Thresholding for Image Segmentation; Optimal Global and Adaptive Thresholding for Image Segmentation; RegionBased Image Segmentation and EdgeBased Segmentation; Image Restoration in the Presence of NoiseSpatial Filtering; Image Enhancement in Frequency Domain; Objects Representation and Description; introduction to Object Recognition. 
Prerequisite  CSC 212  Data Structures. 
Textbook 

CSC 484 – Information Retrieval (301)  
Course Description  This course is intended to prepare students to understand the underlying theories and methods for searching and retrieval of text and bibliographic information, analysis of relevance, utility, statistical and linguistic methods for automatic indexing, query formulation, output ranking, filtering methods, measures of retrieval effectiveness and retrieval experimentation Methodology. 
Prerequisite  CSC 380  Introduction to Database Concepts 
Textbook 

CSC 489 – Selected Topics in Computer Science (301)  
Course Description  This course aims at introducing the students to a different area of Computer Science. This will be achieved by exposing them to new tools, techniques, and research in Computer Science. 
Prerequisite  Student must finish 100 Credit Hours. 
Textbook 

Master of Science in Computer Science (Thesis option) Guide
Master of Science in Computer Science (Nonthesis option) Guide
Master of Science in Artificial Intelligence (Nonthesis Option) Guide
CSC 512: Algorithms Analysis and Design (3+0) 
Review of major data structures  Basic design techniques  Divide and conquer  Greedy method  Backtracking  Dynamic programming  Heuristics  Parallel algorithms  Analysis of algorithms  Orders of magnitude  Lower bound theory  Time and space complexity  NPhard and NPcomplete problems  applications and examples  Correctness of algorithms  Structure of algorithms. 
CSC 514: Optimization for Artificial Intelligence (3+0) 
This course outlines the algorithms, theory and applications of convex optimization used in most Artificial Intelligence and machine learning solutions. Specifically, it provides the students with the background needed to recognize, formulate, and solve convex optimization problems. The topics covered in this course include: Recall on Vector spaces and subspaces, fundamental matrices properties (determinants, inverse matrices, matrix factorizations, eigenvalues), linear transformations, and linear systems of equations, convex sets and functions, linear and quadratic optimization, geometric and semidefinite programming, and algorithms for constrained and unconstrained problems. 
CSC 516: Evolutionary Computation (3+0) 
This course covers evolutionary computation in the context of Artificial Intelligence and optimization problems with NP complexity. Its content spans over: Paradigm of genetic algorithms, evolutionary strategy, genetic programming and various evolutionary heuristics. In particular, it focuses on theory and practice of standard evolutionary computation. In addition, it exposed the students to advanced evolutionary algorithms based on graphic probabilistic models (Estimation of Distribution Algorithms (EDA)). Moreover, it tackles parallel evolutionary algorithms and techniques of rapid prototyping of evolutionary algorithms. 
CSC 519: Computer Security (3+0) 
In this course, the students get exposed to state of the art computer security problems. The topics covered in this course are: Threats and vulnerabilities  Identification and authentication  Access control  Intrusion detection  Encryption and privacy  Security policies and their evaluation. 
CSC 520: Networking in the TCP/IP Environment (3+0) 
Review of Network Technologies for LANs and WANs  Internetworking Concepts and Architectures  Internet Addressing  Internet Routing Protocols  Internet Error Control  Protocol Layering in Internet environments  Application development in a TCP/IP environment  Standard TCP/IP applications – other related topics. 
CSC 523: Distributed Systems (3+0) 
General concepts of operating systems  Distribution: concepts and definitions  Architecture of distributed systems  Control in distributed systems: centralized versus distributed  Concept and forms of transparency in distributed systems  Naming concepts  classification and Implementation of different naming schemes – Interprocess communication: concepts, mechanisms, and implementation  Resource allocation and implication on load sharing  Load balancing  Process migration  Clock synchronization: concepts, problems and solutions  Concurrency control in distributed environments: concepts, approaches and implementation. 
CSC 524: Computer Networks (3+0) 
Review of general concepts  LAN and WAN  Management of token ring networks  ISO model of seven layers  Network standard specifications  Urban networks  Large bandwidth networks  Gates  Network design and performance  Network programming  Error detection  Security and privacy. 
CSC 525: Distributed RealTime Systems (3+0) 
Realtime issues and concepts  Time handling task scheduling problems  Resource scheduling  Interprocess communication in realtime environments  Realtime communication protocols  Predictability problem. 
CSC 526: Parallel Processing (3+0) 
Introduction to parallel processing  Architectures and models for parallel machines  Design and evaluation of parallel algorithms  Communication in a parallel processing environment  Writing parallel applications using MultiPascal tool  Writing parallel applications using PVM. 
CSC 527: Design and Implementation of RealTime Systems (3+0) 
RealTime issues and concepts  RealTime Systems: definitions and classification  Hard realtime systems and soft realtime systems  The concept of time and its importance in realtime systems  RealTime applications  RealTime Languages  Specific hardware interfaces for realtime systems: realtime data collection and processing  Different types and levels of Control in realtime systems (e.g. closedloop control)  Realtime operating systems  Predictability in realtime systems  Introduction to methodologies for the design and implementation of realtime systems  Cases studies. 
CSC 528: Interconnection Networks (3+0) 
Introduction and background  The graphtheoretical approach  Criteria to evaluate interconnection networks  Issues in designing interconnection networks  Classification and evaluation  The need for higherperformance computers  Flynn’s taxonomy  Computational speedup  Factors that limit speedup  Grosch’s and Amdahl’s laws  Different interconnection networks: Mesh Networks  Binary Tree Networks  Hypertree Networks  Pyramid Networks  Butterfly Networks  Hypercube Networks  Cube Connected Cycles Networks  Shuffle Exchange Networks  de Bruijn Networks  Star Networks and StarConnected Cycle Networks. 
CSC 529: Selected Topics in Computer Systems (3+0) 
Contemporary topics and research directions in computer systems. 
CSC 530: High Performance Computations (3+0) 
The course gives an overview on HPC architectures in addition to a clear emphasis on performance tuning and algorithmic implementation. It provides the students with a handson experience in developing scalable efficient parallel algorithms suitable for most AI applications. Namely, the course covers: Review of major causes of performance degradation in scientific computing  The scheduling problem: classification and solutions  Task scheduling  Load balancing algorithms  Deadline scheduling for realtime systems. The collaboration between students to achieve a common goal will be encouraged through group assignments/project. 
CSC 535: New Advances in Programming Languages (3+0) 
Review of formal languages  Standard models of programming languages  Concept of typing  Scope of variables  Subroutines  Logical programming  Execution environment  Visual programming  Object oriented programming  Design and programming of VOOR languages  Programming in visual environment  Visual programming and software engineering  Contemporary topics. 
CSC 541: Advanced Software Engineering (3+0) 
Review of known methodologies  Analysis of software requirements  Real Time software  Software Cost  Software Project Management  Software Quality  Software Testing  Software Measurements  Software Risk Management  Introduction to Object Programming  Case Study. 
CSC 543: Software Quality Management (3+0) 
Introduction to Quality Management Systems and Total Quality  ISO Quality System and its application to software industry  Capability Maturity Model (CMM) and its five levels  Tick IT system  Quality Assurance  Application of Quality Systems  Software Tools for Quality  Case Study. 
CSC 546: Designing ObjectOriented Software Systems (3+0) 
Review of known methodologies and principles of Object Engineering  Unified Modeling Language (UML)  Comparative study of available methodologies  Conversion methodology to object design  Evaluation of object design and use of object metrics  Use of object methodology  Case Study. 
CSC 547: Software Measurements (3+0) 
Importance of measurements and metrics in software  Basics of measurements  Experimental measurements  Collection of measurements  Analysis of measurements  Measurements used for length, size, effort and time  Zeipf law  Structure measurements  Information flow measurements  Building software metrics  Planning for software measurements  Measurements of object oriented software  Tools used in software measurements  Case study. 
CSC 548: Software Projects Management (3+0) 
Introduction to project management  Basic activities of software project management  Charts used in project management  Evaluation and acceptance of project phases  Advanced techniques of project management as for maintenance  Project scheduling  Project insurance and arbitrage  Project management tools  Case study. 
CSC 549: Selected Topics in Software Engineering (3+0) 
New trends in the area of software engineering  methodology of application  current research topics. 
CSC 551: Automata, Calculability and Formal Languages (3+0) 
Finite state automata and regular expressions  Regular sets  the Pumping lemma  Contextfree grammars and derivation trees  Chomsky and Greiback normal forms  Contextfree languages  Recognizers  Turing machines  recursive and recursively innumerable languages  Decidability problems  The halting problem  Rice’s theorem and Chomsky hierarchy. 
CSC 552: Computational Linguistics (3+0) 
Phrase structure  Multilevel and transformational grammar  Grammar semantics  Recursive transition network  Augmented transition networks  Morphological analysis and other natural language analysis techniques  Cognitive modeling and theory of conceptual dependency  Discourse understanding  Language acquisition  Application: Machine translation  Text generation and textual analysis  Natural language interface. 
CSC 558: Pattern Recognition and Image Processing (3+0) 
In this course, the students undertake pattern recognition methods and concepts. In addition, it outlines the image processing techniques necessary to design and implement image based pattern recognition systems. The topics covered in this course are: Digital Image fundamentals  Images enhancement in spatial and frequency domain – Images degradation and restoration  Detection of discontinuities in images  Images segmentation  Representation of objects  Boundary, Regional, and Relational descriptors – Patterns and Pattern Classes – Recognition based on Decision Theoretic and Structural Methods  new topics in pattern recognition and image processing. 
CSC 559: Computer Vision (3+0) 
This course provides the students with the knowledge and skills necessary for the computer vision tasks in academia and industry. It covers the following topics: Computer vision fundamentals, Computational models and methodologies for solving computer vision problems, realworld application design and implementation of realworld applications related to visual data analytics. 
CSC 560: Knowledge Representation and Reasoning (3+0) 
In this course, the students undertake knowledge representation and reasoning. The topics covered include: Techniques of knowledge representation and reasoning using firstorder logic. Key reasoning techniques of Resolution theoremproving. Objectoriented approach to knowledge representation and reasoning. Uncertain knowledge and reasoning. Probabilistic reasoning over time. Making simple decisions. Making complex decisions. 
CSC 561: Expert Systems and Knowledge Engineering Applications (3+0) 
A brief introduction to expert systems – A brief presentation of knowledge representation paradigms (the emphasis will be put on rulebased systems)  inference rules  resolution  basic aspects of reasoning under uncertainty  ·Case studies: MYCIN  CLIPS  Application Modeling in CLIPS. 
CSC 562: Artificial Intelligence (3+0) 
This course outlines Artificial Intelligence knowledge and skills necessary to proceed with more advanced theoretical and/or applied courses in AI. Namely, it covers the following topics: Introduction to AI problem solving  Knowledge representation  Automatic theorem proving  Learning by example  Learning by analogy  Learning by discovery  Selfreference and Selfproduction  Reasoning: causal reasoning  commonsense reasoning  default reasoning  measurebased approaches  reasoning with uncertainty  Confirmation theory – Belief theory  Necessity and possibility theory  Theory of endorsements  Spatial and temporal reasoning. 
CSC 563: Neural Networks and Machine Learning Applications (3+0) 
Approaches to machine learning: Explanationbased learning  Learning by observation and discovery  Analogical and Casebased Learning  Learning Models  Evaluation of Learning Algorithms  Experimental Methodology  Empirical Learning  Reinforced Learning and Genetic algorithms  Neural Computations: examples and applications  History of Artificial Neural System development  Fundamental Concepts and Models of Artificial Neural systems. Applications: Neural Network Simulation and Implementations and other emerging applications of Neural Algorithms and Systems. 
CSC 564: Machine Learning (3+0) 
In this course, the students undertake machine learning concepts and techniques. The covered topics are: Approaches to machine learning: Explanationbased learning  Learning by observation and discovery  Analogical and Casebased Learning  Learning Models  Evaluation of Learning Algorithms  Experimental Methodology  Empirical Learning  Reinforced Learning and Genetic algorithms  Neural Computations: examples and applications  History of Artificial Neural System development  Fundamental Concepts and Models of Artificial Neural systems. 
CSC 565: Deep Learning (3+0) 
This course studies various deep architectures concepts. Typical deep learning models such as CNN, RNN, autoencoders and their variants will be outlined. The student will be familiarized with the optimization and regularization methods used in deep learning framework. Furthermore, opensource deep learning platforms will be introduced. Handson experiences to solve AI problems using deep learning represents a main component of the course. Teamwork skill will be promoted through group project assignment. 
CSC 566: Advanced Applications of Pattern Recognition and Machine Learning (3+0) 
This course aims to expose the students to advanced concepts and methods typically used for pattern recognition in any type of data. This is achieved through the study of the underlying algorithmic knowledge and theory relevant to characterize and detect patterns in real data. The course covers: Image processing and analysis  Speech processing  Geographical Information System  Fuzzy reasoning  Computer vision  perception and any other emerging relevant topic(s). 
CSC 567: EBusiness and its applications in large enterprises (3+0) 
Computer architecture and its application in large enterprises  Modeling  introduction to ERP  Java Management Extensions technology JMX  Language and platformindependent protocol for peertopeer networking  JXTA  Case studies in distributed computing  Large enterprises and computer security. 
CSC 568: Reinforcement Learning (3+0) 
This course presents the main Reinforcement Learning approaches and challenges such as generalization and exploration. In particular, an emphasis will be made on deep reinforcement learning. The course topics include: Bandit problems and online learning, Markov decision processes, Solution methods such as dynamic programming, Temporal difference learning, Monte Carlo learning, state of the art RL systems. 
CSC 569: Selected topics in Artificial Intelligence (3+0) 
This course aims to expose the students to cutting edge topics in Artificial Intelligence. This is achieved by undertaking state of the art AI concepts, methods, techniques and tools. 
CSC 570: Selected topics in Data Science (3+0) 
This course aims to expose the students to cutting edge topics in Data Science. This is achieved by undertaking state of the art Data Science methods, techniques and tools. 
CSC 572: Advanced Computer Graphics (3+0) 
Mathematics for computer graphics in three dimensions  Hierarchical representation and basic shapes  Surfaces and curves in three dimensions  Three dimensional modeling  Solid bodies modeling  Three dimensional viewing  Visible surface  Illumination and shades  Texture mapping  Computer Graphics Systems: Open GL  Animation techniques  Case study. 
CSC 573: Numerical Algorithms and their Applications in CS (3+0) 
Review of vectors and matrices: transformation matrices in computer graphics, Computations of the normal vector to a surface  Introduction to Probability and Random Variables: Probability Density Functions in image processing  Introduction to Numerical differentiation and integration  Newton’s and Gradient algorithms in image processing  LeastSquares algorithm, Curve fitting, COCOMO model calibration  Steganography algorithms  Introduction to MATLAB. 
CSC 574: Humanmachine Communication and UserInterface Design (3+0) 
Introduction to Human sensory systems  Human memory and Human Learning User Interface Styles: Design Considerations  Dialog Content Design  Design Methodology  Visual Design  Basic Interactionhandling Models  Introduction to HumanComputer Dialog Management  Introduction to Visual Form Recognition: Pen Computing  Photography and other Visual Forms such as Finger Print Input Systems  Font and Symbol Design  Introduction to Speech Computing and other Forms of Input/Output  Speech Presentation  Speech Understanding and Recognition  Speech Generation  Gesture and Odor Input/ Output. 
CSC 576: Graphics and Multimedia Applications (3+0) 
Traditional Animation  Computer Animation Tools  3DAnimation Environment  Special Animation Techniques  Today’s Animation Systems (Hardware/Software)  Applications of Computer Animation  Introduction to Virtual Reality and its applications. 
CSC 578: Advances in Multimedia Applications (3+0) 
Recent advances in Multimedia technology  Hardware/Software Architectures  Tools and Environments  Virtual Reality Technology (Hardware/Software)  Multimedia Components in Virtual Reality Systems. 
CSC 579: Selected Topics in Computer Graphics (3+0) 
New topics, methods, techniques and tools in computer graphics  research directions. 
CSC 581: Advanced Database Systems (3+0) 
Review of Basic Modeling Techniques and DBMS Concepts  Components and Functions of a DBMS  Query processing and optimization  Concurrency Control  Security  Recovery  Integrity in DBMSs  Distributed Databases  Study of Intelligent Database Systems  Study of different ObjectOriented Data Models  Introduction to XML technologies  Project: Development of a database application. 
CSC 582: Database Systems for Data Science (3+0) 
This course aims to expose students to relational and NoSQL database concepts with focus on both theoretical and practical learning. In particular, it provides knowledge of the SQL language and the implementation skills relevant to relational and NoSQL database systems (DBMS). Platforms such as MySQL, SQL Server, Amazon Redshift, Google BigQuery and MongoDB are considered for the creation of database instances in the cloud for Both relational and NoSQL database systems. Furthermore, students are expected to implement SQL scripts and Python/Java codes through handson projects. 
CSC 583: Natural Language Processing (3+0) 
In this course, the students undertake the steps typically required for Natural Language Processing. In addition, it exposes the students to the ambiguous challenges in NLP. Moreover, suitable standard platforms and libraries for processing realworld data will be introduced and used in this course. The topics covered in this course include: Text processing applications, ambiguity in natural languages, The Natural Language Toolkit, Ngram language models, Text Classification, PartofSpeech Tagging, Syntactic and Statistical Parsing, Semantic Analysis and Information Extraction. 
CSC 585: Data analytics and Visualization (3+0) 
This course provides the students with data analytics and visualization principles. The course covers the complete data science cycle and covers a wide range of topics related to data analytics including experimental design; data collection and preprocessing; exploratory data analysis; association rules; statistical inferencing; model fitting and selection; data clustering; evaluations; hypothesis testing; analysis of variance; correlation and causality; data visualization rules and guidelines; data abstraction and visual encoding; tabular data visualization; spatial data visualization; networks and trees visualization; and interactive visualization. 
CSC 586: Hypermedia and Geographical Information Systems (3+0) 
Multimedia and hypermedia Systems  Different Development Methodologies  Architectures  Query processing and Browsing Tools  Development of Hypermedia Systems on the World Wide Web (www) Databases  WWW and its Browsing Tools  Data Modeling Techniques and Development of Data Warehouse in an Architectured Environment  Conceptual Modeling and Analysis of Spatial Data  Spatial Reasoning  Query Processing  Indexing Techniques  Data Storage  Hypermaps  Spatial Knowledge  different application domains  Project: Development of a prototype system. 
CSC 587: Web Databases and Information Retrieval (3+0) 
In this course, the students undertake advanced techniques required for the design and implementation of text based information systems. It covers: Text indexing, Boolean and vectorspace retrieval models, IR techniques for the web, linkbased algorithms, metadata usage and crawling, Document classification and clustering, Machine learning based ranking. 
CSC 588: Data Warehouse and Mining Systems (3+0) 
This course covers the theory and methods for data warehouses design as well as data mining concepts and techniques. It covers the following topics: Introduction to Decision Support Systems (DSS)  Development of DSS  Data Modeling Techniques and Development of Data Warehouse in an architectured Environment – Data cube design  Study of different Data Warehouse Architectures and Development Techniques  UserInterface for Data Warehouses  Data Mining  Application Domains for Data Warehouse and Mining. More focus will be made on developing student selflearning skill through independent research assignments. 
CSC 589: Selected Topics in Database Systems (3+0) 
Contemporary topics  recent research directions. 
CSC 590: Selected Topics in Computer Applications (3+0) 
Selected Topics in Computer Applications. 
CSC 591: Research Project (1) 3(6+0) 
In this research project, the students undertake a research project in an area of AI. The research project can be either a study of a theoretical topic or a practical (development) one. The student presents his findings in a written report that conforms to the requirements and specifications set up by the department. This course is dedicated to the first part of the project, the analysis and design part. 
CSC 592: Research Project (2) 3(6+0) 
This research project is a continuation of the research work carried out in project I. The students are expected to deliver a (public) presentation and a report on the research outcomes at the end of the semester. 
CSC 594: Ethical Issues in Artificial Intelligence (3+0) 
This course provides the students with discussions on the issues that are raised by the recent advances in artificial intelligence (AI) and robotics systems. The course examines the history and the current state of AI and discusses a number of ethical concerns of AI including biases in AI systems; robot ethics; machine ethics; accountability and transparency; legal issues of AI; economic and social impacts of AI systems; and unintended consequences resulting from adapting AI in traffic, medical, financial, and security applications. The course will focus on presenting and analyzing several case studies from each domain where AI is being used. 
CSC 595: Seminar and Discussions (2+0) 
The student is supposed to carry out a survey research study (theoretical and technical) on topics agreed upon with the course instructor – The student will present his findings in a written report and in a seminar. 
CSC 596: Seminar and Discussions in Artificial Intelligence (3+0) 
This course enable student to carry out theoretical and technical survey study on AI advanced topics. The student has to present and discuss his findings in a written report and in a seminar. 
CSC 597: Project 1 (2+0) 
Projects are of applied type and are meant to solve problems arising from business, governmental, or other sectors. The student selects one of the projects proposed by staff. The department project committee will manage the projects announcement and assignment. The student will present his findings in a written report that conforms to the requirements and specifications set up by the department. This course is dedicated to the first part of the project, the analysis and design part. 
CSC 598: Project 2 (3+0) 
This course is dedicated to the second part of the project, the implementation and test part. 
CSC 600: Thesis 
The thesis research topic is chosen by the student and approved by the Department Council. 
CEN 523: FailTolerant Computer Systems (3+0) 
Systems and their failures  Faults  errors and failures  Structuring and faults  Fault error detection  Damage assessment and confinement  Error recovery and fault diagnoses. 
CEN 545: Digital Image Processing (3+0) 
Physical descriptions of continuous images  Sampling and quantization of images  Matrix representation of image forming  Filtering  Restoration and enhancement  Feature extraction and scene analysis. 
Ph.D. Program in Computer Science (Courses and Thesis Option) Guide
CSC 601: Advanced Computing Science & Applications 3(3+0) 
Graph theory and applications in computer science – Computational methods and application in computing science – Advanced data structures – Applications in computing  Discrete mathematics applications in computing – New trends in computing science. 
CSC 618: Selected Topics in Computer Systems & Networks 3(3+0) 
New trends and research directions in the area of Computer Systems and Networks, including new trends in the design and performance of computer systems and networks, network programming, error detection in computer systems and networks, security and privacy. 
CSC 619: Selected Topics in Computer Security 3(3+0) 
New trends and research directions in the area of Computer Security including: Threats and vulnerabilities  Identification and authentication  Access control  Intrusion detection  Encryption and privacy  Security policies and their evaluation – Steganography and applications. 
CSC 626: Advanced Theory of Computation & Computability 3(3+0) 
Indepth study of concepts related to computability  Chomsky hierarchy  Turing machines – Computability  Decidability  Nondeterministic automats, recursive function theory  Theory of complexity and complexity classification. 
CSC 627: Design & Implementation of RealTime Systems 3(3+0) 
RealTime Systems  RealTime applications and support RealTime Languages  Specific hardware interfaces for RealTime Systems: realtime data collection and processing  Different types and levels of Control in RealTime Systems (e.g. closedloop control)  RealTime Operating Systems  Predictability in RealTime Systems  Introduction to methodologies for the design and implementation of RealTime Systems  Cases studies. 
CSC 628: Selected Topics in Programming Languages 3(3+0) 
New trends and research directions in the area of Programming Languages including: Recent developments in programming language design and implementation, correctness, uniformity, practicality, technological advances on the state of the art, new approaches to programming languages. 
CSC 629: Selected Topics in Arabisation 3(3+0) 
New trends and research directions in the area of Arabisation including Arabic language processing and its various applications. 
CSC 637: Parallel Processing 3(3+0) 
Overview of High Performance Computers, parallel program performance measurement, study different paradigms for achieving parallelism including explicit and implicit parallelization, fine grain and data flow models, shared memory and message passing parallel computers, and the difference between the SIMD versus MIMD types of Computers. Experiments will be conducted on different parallel programming frameworks, including PVM, MPI and LAPI as provided with the IBM RS/6000 eServer computer. 
CSC 647: Software Testing, Validation, & Verification 3(3+0) 
Testing in the development life cycle  Testing methodology  Methods for evaluating software for correctness, performance and reliability – Software validation and verification – Static testing  Code inspection – Dynamic testing  Unit testing  System testing – Statistical testing – Testing tools – New trends in software testing. 
CSC 648: Selected Topics in Software Engineering 3(3+0) 
New trends and research directions in the area of software engineering including: software requirements, software project management, software cost, software quality, software testing, software measurements, and software risk management. 
CSC 657: Pervasive Computing Architecture & Design 3(3+0) 
This course covers pervasive computing principles and applications in depth. The topics include: sensor networks; primitive data types for sensor networks; programming sensor networks; mobility support; MANETs; middleware systems; context modeling and awareness; software engineering principles for pervasive computing; usability aspects of pervasive computing; wireless security and privacy. 
CSC 661: Emergent Computing & Swarm Intelligence 3(3+0) 
Evolutionary algorithms – Swarm Intelligence  Artificial Immune Systems – Evolving Connectionist systems – Cellular Automata – Collective Intelligence – Reverse Emergence – Cellular neural network – Amorphous computing – DNA Computing – Quantum Computing. 
CSC 662: Artificial Intelligence 3(3+0) 
AI problem solving  Knowledge representation  Automatic theorem proving  Learning by example  Learning by analogy  Learning by discovery  Selfreference and Selfproduction  Reasoning: causal reasoning  commonsense reasoning  default reasoning  measurebased approaches  reasoning with uncertainty  Confirmation theory  Belief theory  Necessity and possibility theory  Theory of endorsements  Spatial and temporal reasoning. 
CSC 663: Machine Learning 3(3+0) 
This course covers the theory and practice of machine learning from a variety of perspectives (including Design, analysis, implementation and applications of learning algorithms). The course covers theoretical concepts such as induction, deduction, reinforcement and interaction. Topics include learning decision trees, neural network learning, statistical learning methods, genetic algorithms, Bayesian learning methods, explanationbased learning, and reinforcement learning, support vector machines, decision trees, Bayesian networks, association rules, dimensionality reduction, feature selection and visualization. 
CSC 668: Selected Topics in Artificial Intelligence 3(3+0) 
New trends and research directions in the area of artificial intelligence, including: knowledge representation, searching, reasoning and uncertain reasoning, planning, and applications. 
CSC 669: Selected Topics in Image Processing & Pattern Recognition 3(3+0) 
New trends in the area of digital image processing and pattern recognition including: Images enhancement  Images segmentation  Representation of objects – Pattern Classes – Recognition based on Decision Theoretic and Structural Methods. 
CSC 677: Selected Topics in Computer Graphics 3(3+0) 
New trends in the area of Computer Graphics: Three dimensional Modeling and viewing  Surfaces and curves in three dimensions  Solid bodies modeling  Three dimensional viewing  Visible surface  Illumination and shades  Texture mapping  Animation techniques. 
CSC 678: Selected Topics in Virtual Reality & Computer Vision 3(3+0) 
New trends and developments in the area of Virtual Reality and Computer Vision including developments in stereoscopic perception and rendering, sensor fusion, human perception, and virtual reality technology. 
CSC 679: Human Computer Interaction 3(3+0) 
Design of user interfaces based on the capabilities of computer technology and the needs of human factors. Design process. Implementation support. Evaluation. User models. Task models and dialogues. Virtual and augmented reality . Hypertext and multimedia. Approaches and developments in the field. 
CSC 687: Data Warehouse & Mining Systems 3(3+0) 
Decision Support Systems (DSS)  Development of DSS  Data Modeling Techniques and Development of Data Warehouse in an architectured Environment  Study of different Data Warehouse Architectures and Development Techniques  UserInterface for Data Warehouses  Data Mining  Application Domains for Data Warehouse and Mining  Project: Development of a Prototypical Data Warehouse/Mining System. 
CSC 688: Selected Topics in Database Systems 3(3+0) 
New trends and developments in the area of Database Systems including: Developments in object oriented, deductive, spatial, temporal and constraint database management systems  New database applications and architectures such as multidatabases and their applications in multimedia and mobility domains. 
CSC 691: Bioinformatics 3(3+0) 
Bioinformatics is a rapidly evolving field that studies biological systems and biological data (such as DNA/protein sequences, macromolecular structures and functional genomics data) using analytic theory and practical tools of computer science, mathematics and statistics. The topics include concepts of molecular genetics, biological databases, database searching, sequence alignments, phylogenetic trees, structure prediction, and microarray data analysis. 
CSC 696: Independent Research Study 1 2(2+0) 
The student selects a research topic and conducts a literature review in relation to the topic. 
CSC 697: Independent Research Study 2 2(2+0) 
The student selects a research topic and conducts a literature review in relation to the topic. 
CSC 698: Advanced Topics in Computer Science 3(3+0) 
In this course, students study some advanced topics in Computer Science. The content and syllabi of this course is designed by a member of staff and approved by the department. 
CSC 699: Thesis Proposal Preparation 1(1+0) 
Identify an original research topic. Formulate a problem statement. Understand the background of the research project. Study related work. Develop or adapt potential research directions. Summarize the state of the project as a thesis proposal. 
CSC 700: Thesis (12) thesis units [Prerequisite: CSC 699] 
Complete the research work proposed (thesis proposal). Publish the results of the research. Write a dissertation which describes the research work and presents the results. Final defense. 
STAT503: Probability & Mathematical Statistics 3(3+0) 
Probability. Random Variable. Expectation. Some Distributions. Functions of R.V. Sampling distributions. Estimation. Hypothesis, Testing, Correlation and Regression. Analysis of Experiments. 
MATH505: Numerical Linear Algebra 3(3+0) [Prerequisite: MATH242, MATH244, MATH253, MATH254] 
Direct & Iterative methods for solving system of linear equations (including cases with special matrices) along with error convergences analysis. Numerical methods for solving least square problems and approximation of functions. Various methods for computing the Eigen values and Eigenvectors for symmetric and nonsymmetric matrices. Applications. 
MATH507: Advanced Operation Research 3(3+0) [Prerequisite: MATH253, MATH254] 
Linear optimization models. Geometric interpretation. Simplex, two phase, revised simplex and Karmarkar's methods for solving linear programming. Duality and sensitivity analysis. Parametric programming. Applications. Introduction to the nonlinear programming. 
CENX621: Advanced Computer Architecture 3(3+0) 
Instruction set principles, Pipelining, pipelining hurdles. Instruction level parallelism, Data hazards avoidance, Dynamic Scheduling, Dynamic Hardware prediction. Memory Hierarchy Design, Cache design, Storage systems, Busses, I/O performance measures. Interconnection Networks, Introduction Multiprocessors architectures. 
CENX631: Advanced Computer Networks 3(3+0) 
Review of OSI layered Architecture, TCP/IP Protocols, Data link layer: HDLC, Window flow control, Network layer: Datagram and virtual circuit, Transport protocol: Errordetection and recovery, Presentation layer: Security, Privacy, Text compression, Application layer: Distributed computing, Network operating systems. 
CENX643: Digital Signal Processing 3(3+0) 
Discrete time signals, Ztransforms. Discrete Fourier transform (DFT). Fast Fourier transform (FFT). Design of finite impulse response filter (FIR) and Infinite impulse response filter (IIR), Effects of finite word length. 
IS 601: Enterprise Resources & Planning 3(3+0) 
Basic elements and considerations of an enterprise computing solution, including systems integration issues, people versus technology issues, plus project management and implementation issues. Concepts of production planning and control with ERP systems, relationship with manufacturing and logistics strategies. Other ERP related topics, including technical, management, and global issues common to a typical business and manufacturing environment. 
IS 602: IT Project Management 3(3+0) 
Introduction to Project Management. The nine project management knowledge areas – project, integration, scope, time, cost, quality, human resource, communications, risk, and procurement management. The five process groups – initiating, planning, executing, controlling, and closing. Project Management and Information Technology Context, Project Integration Management, Project Scope Management, Project Time Management, Project Cost Management, Project Quality Management, Human Resource Management, Project Communications Management, and Project Risk Management. 
IS 603: Systems Analysis & Design 3(3+0) 
Approaches used by information system developers to discover and model the requirements. Construct an acceptable design to implement a successful system solution. Tools and techniques that the programmer or analyst uses to develop information systems. 