Computer Science
Total Credit Hours: 66
Applied Sciences (Mandatory)
39 CreditsAdvanced Data Structures
Dynamic optimality and memory hierarchy hashing dynamic graphs and strings (searching for phrases in giant text). Indexing of unstructured data Btree, B+ tree, B* tree.
Concepts of Programming Languages
Different types of programming languages, implementation methods - Declarative programming - Functional Programming. Describing Syntax and Semantics, BNF notations and Parse Trees, denotational and operational semantics- names, Binding, Lifetime and scope - Data Types, type checking - Expressions and Assignment Statements - side effect, short-circuit evaluation. Subprograms, Parameter passing, lambda expressions - concurrency.
Computer Organization and Architecture
Computer organization fundamentals. Modern processor memory and peripherals design and organization - Modern computer design principles and levels of abstraction - Instruction set architecture design and implementation. Computer hardware-software interface - Computer performance-based design. Computer processor design data path and control. Instruction pipelining. Parallel computer paradigms, instruction set architectures and design. Architecture-oriented programming. Power and energy aware computing. Tools and simulation for computer design and performance enhancement.
Advanced Operating Systems
Operating system for different platforms: cell phones, multi-core, parallel systems, distributed systems. System support for Internet-scale computing, clouds.
Advanced Software Engineering
Software architecture, Architectural styles, Service oriented architectures. Advanced design patterns - Software quality assurance. Reviews - Refactoring. Testing. Software Configuration management. Software evolution and maintenance.
Artificial Intelligence
Knowledge Representations: Predicate Calculus - Structured Representations, Network Representations. State Space Search: simple search - heuristic search - reasoning with uncertain or incomplete knowledge constraints satisfaction problem.
High performance computing
The need for parallel processing and the limitations of uniprocessors. Basic concepts of parallel processing and their impact on computer architecture. Various kinds of system architectures - design methodologies - communication networks for parallel computers, various programming models - performance evaluation, parallelizing techniques, parallel algorithms and resource management of parallel and distributed systems.
Information Theory and Data Compression
Introduction to Data Compression Approaches - Dictionary based compression approach. Introduction to information theory and Entropy calculation. Shannon theorem and its applications. Huffman Coding approaches. Arithmetic Coding Approaches. Quantization with application. Prediction Coding techniques. Transform Coding and DCT. Compression of Color images- JPEG Compression and its building blocks - Video basics, MPEG Compression and its building blocks - Motion Estimation and compensation in Video.
Computer Graphics
Introduction to Computer Graphics. Overview of Graphics systems. Line drawing algorithms - Circle drawing algorithms - Ellipse drawing algorithms. Area filling algorithms - Polygon filling algorithms - Line clipping algorithms. Polygon clipping algorithms - Two dimensional transformations - (translation, rotation, scaling, general transformations, composite transformations). Three dimensional object representation and Projections. Three dimensional modeling and transformations (translation, rotation, scaling, sheer, reflection - composite). Three dimensional Viewing and Camera Model.
Compilers
Basic concepts. Lexical analysis. Regular expressions. Context-free grammars. Parsing - Top-down parsers, Predictive parsers, LR parsers, Shift-reduce parsers. Semantic analysis - Intermediate code generation - Code generation - Code optimization.
Theory of Computation
Regular languages - Regular expressions Properties of regular expressions. Proofs. Finite automata Non-deterministic finite automata Deterministic finite automata. Transformation of regular expressions to finite automata. Transformation of DFAs to NFAs. Transformation of finite automata to regular expressions - Context-free grammars - Push-down automata - Parsing - Turing machines - Complexity theory-down automata Parsing - Turing machines Complexity theory.
Machine Learning
Linear Regression, Polynomial Regression. Logistic Regression. Regularization. Machine Learning System Design. Naive Bayes. Support Vector Machines. Decision Trees. Unsupervised Learning - Recommender Systems. Application Examples such as (Recommender Systems) and Project.
Cloud Computing
Overview of Cloud Computing; Introduction to distributed systems, Advantages, History, Characteristics, concepts of cloud computing services. Service and Deployment Models- such as Infrastructure as a Service (IaaS), Platform as a Service (PaaS), and Software as a Service (SaaS). Virtualization Concepts. Migration Approaches - Resource Management.
Elective Courses
18 CreditsBig Data Analysis
Map Reduce. Clustering algorithms for high-dimensional data, predictive analytics. Dimensionality reduction. Application of machine learning algorithms for analyzing structure of large graphs like social network graphs. Technologies for extracting important properties of large datasets.
Bioinformatics Systems
Biological background related to bioinformatics -the genome, protein and motif databases DNA replication-motifs finding algorithms- local and global pairwise sequence alignment scoring matrices introduction to multiple sequence alignment genome assembly algorithms microarray gene expression databases- applications on microarrays datasets- genome compression.
Mobile Computing
Mobile systems and devices. Mobile operating systems - Types of mobile devices. Application development. Mobile application development with sensors of mobile and controllers of mobile - Mobile integration with embedded and internet of things systems - Mobile development project.
Software Testing and Quality Assurance
Quality: how to assure it and verify it, the need for a culture of quality. Avoidance of errors and other quality problems. Inspections and reviews. Testing: verification and validation techniques. Process assurance versus Product assurance. Quality process standards - Product and process assurance - Problem analysis and reporting.
Software security
Software design process choices of programming languages, operating systems, databases and platforms for building secure systems; common software vulnerabilities such as buffer overflows and race conditions, auditing software, proving properties of software, and the benefits of open and closed source development.
Human Computer Interaction
Relationship between people and machine, the role of human factors and psychology. Motivation for usability. Principles of interaction - interface design issues. Command languages, menus, windows, icons, error messages, response time. Physical interaction - devices - interaction styles and techniques. The design process and user models. Interface evaluation, rapid prototyping, iterative refinement. Natural language and voice interfaces, text-to-speech technology.
Software Design and Architecture
Study of design patterns. Frameworks and architectures. Survey of current middleware architectures. Design of distributed systems using middleware. Component based design - Measurement theory and appropriate use of metrics in design. Designing for software qualities attributes. Measuring internal qualities and complexity of software - Evaluation and evolution of designs. Basics of software evolution - reengineering - reverse engineering.
Selected Topics in Software Engineering
This course aims at introducing students to novel topics in software engineering that need to be identified in a responsive manner as technology evolve and develop.
Natural Language Processing
Introduction - Language Models - Text Classification - Information Retrieval. Information Extraction. Morphological Analysis and the Lexicon. Phrase Structure Grammars - Parsing - Context Free Grammar - Augmented grammar rules. Semantic interpretation. Machine Translation Systems. Statistical Machine Translation.
Semantic Web and Ontology
Introduction Semantic web. Descriptive logic. Describing web resources in RDF. Ontology development. Ontology development Ontology language. Web ontology language OWL - OWL API - Rule Interchange Format RIF. Query language. Semantic Portals - applying Semantic Web technologies to the Social Web.
Soft Computing
Genetic Algorithms, Population, Chromosomes, Fitness functions, Crossover, Mutation, Binary bit chromosomes, Floating point array chromosomes, Schema theory. Fuzzy logic, Fuzzy systems, Fuzzy operators - Fuzzy rule-based systems - Neural networks - Feed forward neural networks - Back propagation algorithm - Bias - Scaling - Proof of Delta rule. Performance issues. Hybrid systems. Feature selection. Training of NNs with GAs - Evolution of fuzzy rule-based systems. Genetic programming. Immune systems - Evolution strategy.
Knowledge Discovery
Basic principle of knowledge discovery in large dataset - Data pre-processing, transformation techniques, classification, deviation detection, fuzzy rule prediction - association rules generation techniques - evaluation of patterns from data. Knowledge discovery in unstructured texts. Techniques for evaluating methods.
Selected Topics in Artificial Intelligence
This course aims at introducing students to novel topics in artificial intelligence that need to be identified in a responsive manner as technology evolve and develop.
Advanced High performance computing
Quick Overview about Parallel Processing Concepts. Fundamental Design Issues in Parallel Computing - Synchronization, Scheduling - Job Allocation, Job Partitioning - Dependency Analysis. Mapping Parallel Algorithms onto Parallel Architectures - Performance Analysis of Parallel Algorithms - Parallel programming Models shard Memory, Message Passing. Fundamental Limitations Facing Parallel Computing. Bandwidth Limitations, Latency Limitations, Latency Hiding/Tolerating Techniques and their limitations. Power-Aware Computing and Communication.
Selected Topics in High Performance Computing
This course aims at introducing students to novel topics in High Performance Computing that need to be identified in a responsive manner as technology evolve and develop.
Selected Topics in Computer Science - 1
This course aims at introducing students to novel topics in computer science that need to be identified in a responsive manner as technology evolve and develop.
Selected Topics in Computer Science - 2
This course aims at introducing students to novel topics in computer science that need to be identified in a responsive manner as technology evolve and develop.
Field Training
3 CreditsField Training
Particular emphasis is placed on the importance of practical experience and all teaching involves industry standard hardware, software, methods and techniques. Students asked to complete training on chosen area of specialization to be familiar with the industry.
Graduation Project
6 CreditsGraduation Project
This course will continue for two semesters. In the first semester; a group of students will select one of the projects proposed by the department and analyze the underlying problem. In the second semester; the design and implementation of the project will be conducted.