Undergraduate Courses

Information & Computer Science

Overview of computer hardware and software; Programming in FORTRAN with emphasis on modular and structured programming technique; Problem solving and algorithm development; simple engineering and scientific problems. Co-requisite: MATH 101 Note: ICS 101 cannot be taken by CS students.

Pre-Requisites: MATH101*

Co-Requisites: MATH 101

Overview of computers and computing. Introduction to a typical object-oriented programming language. Basic data types and operators. Basic object-oriented concepts. Wrapper classes. Console input/output. Logical expressions and control structures. Classes and methods. Arrays and strings. Co-requisite: MATH 101 or MATH 132

Pre-Requisites: MATH101* Or MATH132* Or MATH106*

Co-Requisites: MATH 101 , MATH 106 , MATH 132

Overview of computer hardware and software; Programming in C with emphasis on modular and structured programming technique; Problem solving and algorithm development; Simple engineering and scientific problems. Co-requisite: MATH 101 or MATH 132 Note: ICS 103 cannot be taken by ICS/SWE students.

Pre-Requisites: MATH101* Or MATH132* Or MATH106*

Co-Requisites: MATH 101 , MATH 106 , MATH 132

Overview of computer hardware and software. Programming in Python with emphasis on basic program constructs: variables, assignments, expressions, decision structures, looping, functions, lists, files and exceptions; Introduction to objects and classes. Programming in C with emphasis on pointers and functions with output parameters. Simple multidisciplinary problem solving in science, engineering and business.

Advanced object-oriented programming; Inheritance; Polymorphism; Abstract classes and interfaces; Generic and collection classes; File input and output; Exception handling; GUI and event-driven programming; Recursion; Searching and sorting.

Pre-Requisites: ICS104

Advanced object-oriented programming; inheritance; polymorphism; abstract classes and interfaces, container and collection classes, packages, object-oriented design, software modeling, event-driven programming, recursion, use of stacks, queues and lists from API, searching and sorting. Prerequisite: ICS 102

Pre-Requisites: ICS102

Review of object-oriented concepts; Basic algorithms analysis; Fundamental data structures - implementation strategies for stacks, queues and linked lists; Recursion; Implementation strategies for tree and graph algorithms; Greedy Algorithms; Hash tables; Applications of data structures (e.g. data compression and string matching).

Pre-Requisites: ICS108

Machine organization; assembly language: addressing, stacks, argument passing, arithmetic operations, decisions, modularization; Input/Output Operations and Interrupts; Memory Hierarchy and Cache memory; Pipeline Design Techniques; Super-scalar architecture; Parallel Architectures. Prerequisite: COE 202, ICS 201

Pre-Requisites: (COE202 Or COE200 Or EE200) And ICS201

Propositional Logic, Propositional Equivalence, Predicates and Quantifiers, Nested Quantifiers, Rules of Inference, Introduction to Proofs; Sets, Set Operations, Functions, Sequences and Summations; Mathematical Induction, Strong Induction, Recursive Definitions and Structural Induction; Basics of Counting, Pigeonhole Principle, Permutations and Combinations, Binomial Coefficients, Discrete Probability, Probability Theory; Recurrence Relations, Solving Linear Recurrence Relations, Generating Functions, Inclusion-Exclusion.

Pre-Requisites: ICS104 Or ICS102

Number Theory: Modular Arithmetic, Integer Representation, Fermat?s Little Theorem, Chinese Remainder Theorem, RSA.; Proof Techniques: Methods of Proofs, Applications from Number Theory, Recursive Definitions; Algorithm Correctness; Relations: Closures and Equivalence Relations, Partial Orderings and Lattices, Hasse Diagrams; Recurrence Relations and Generating Functions; Automata Theory: Finite State Machines, Regular Expressions, DFA, NDFA and their equivalence, Grammars and Chomsky Hierarchy, Introduction to Turing Machines.; Abstract Algebra: Groups, Homomorphisms and Lagrange's Theorem, Applications. Prerequisite: ICS 253

Pre-Requisites: ICS253 Or ICS252

Impact of Computing on Society; Ethical Foundations; Governance and Regulation; Freedom of Speech; Intellectual Property; Privacy; Security; Professional Responsibility; Leadership challenge. Prerequisite: Junior Standing

Basic database concepts; Conceptual data modeling; Relational data model; Relational theory and languages; Database design; SQL; Introduction to query processing and optimization; Introduction to concurrency and recovery.

Pre-Requisites: ICS202

Basic database concepts, conceptual data modeling, relational data model, relational theory and languages, database design, SQL, introduction to query processing and optimization, and introduction to concurrency and recovery. Prerequisite: ICS 202

Introduction to computer networks and layered architectures: Connectivity, topology, circuit and packet switching, TCP/IP and ISO models; Application layer: C/S model, DNS, SMTP, FTP, WWW; Transport layer: TCP and UDP, ARQ, congestion and flow control; Network layer: Internetworking, addressing and routing algorithms and protocols; Data link layer: Framing, error detection and correction, medium access control and LANs; Physical layer: Principles of data communications, circuit switching, encoding, multiplexing and transmission media; Introduction to network security. Note: This course cannot be taken for credit with COE 344.

Pre-Requisites: ICS201 Or ICS108

Security properties; Confidentiality, integrity, authentication, non-repudiation; Attack vectors, malicious software and countermeasures; Risk management and analysis; Security mechanisms; Secure software development; Defensive programming; Input sanitization; Symmetric and public-key cryptography; User authentication and access control; Internet security: Email and web security, network security protocols and standards such as IPSec and SSL/TLS; Security technologies and systems: Firewalls, VPNs and IDSs/IPSs; Information security process, ethical and legal issues.

Pre-Requisites: ICS343 Or COE344

Beginning of Coop in summer. Description is as given in ICS 351. Prerequisite: ICS 324, SWE 311, ENGL 214, Major GPA >= 2, Completion of at least 85 hours, Department Approval

A continuous period of 28 weeks spent as a normal employee in industry, business, or government agencies with the purpose of familiarizing students with the real world of work and enabling them to integrate their classroom learning to a real work environment. During this period, a student is exposed to a real-life work in the field. Each student is required to participate with at least one project. Students are required to submit progress reports during the work period. Students are also required to give a presentation and submit a final report on their experience and the knowledge they gained during their cooperative. Prerequisite: ICS 324, SWE 311, ENGL 214, Major GPA >=2, Completion of at least 85 hours, Department Approval

End of coop in summer. Description as given in ICS 351. Prerequisite: ICS 351

Basic algorithmic analysis; Analysis of iterative and recursive algorithms; Advanced algorithmic design techniques (induction, divide and conquer, dynamic programming, backtracking); The complexity classes P and NP; Basic computability; Parallel algorithms.

Pre-Requisites: ICS202 And ICS253

Regular grammars: Equivalence of DFA, NDFA and regular expressions, pumping lemma, emptiness and membership; Context-Free Grammars: parsing and ambiguity, normal forms, applications, equivalence of PDA's and CFG's, pumping lemma, emptiness and membership; Turing machines: Programming techniques for Turing machines, universal Turing-machine; Undecidability: Recursively enumerable and recursive languages, undecidability, problem reduction, undecidable problems of CFG's, RE's and TM's.

Pre-Requisites: ICS253

AI history and applications; Intelligent agents and expert systems; Introduction to AI programming; Problem solving agents by uninformed, heuristic and local search; Constraint satisfaction and programming, games and adversarial search; Knowledge-based agents: Propositional and first-order logic, Forward and backward chaining and inference; Planning and reasoning in uncertain situations; Basics of machine learning; Natural language processing; Exposure to other applications of AI (e.g. Vision and Robotics)

Pre-Requisites: ICS253 And STAT319*

Co-Requisites: STAT 319

A continuous period of 16 weeks spent as a normal “new” employee in industry, business, or government agencies with the purpose of familiarizing students with the real world of work and enabling them to integrate their learning to a real work environment. During this period, a student is exposed to a real-life work in the field and work as a normal employee. Each student is required to participate with at least one project. Students are required to submit progress reports during the work period. Students are also required to give a presentation and submit a final report on their experience and the knowledge they gained during their work. Prerequisites: ENGL 214, ICS 321, SWE 206, SWE 363, Completion of at least 85 hours, Major and Cumulative GPA of at least 2.0.

Pre-Requisites: ENGL214 And ICS321 And SWE206 And SWE363

A continuous period of 8 weeks spent as a normal employee in industry, business, or government agencies with the purpose of familiarizing students with the real world of work and enabling them to integrate their classroom learning to a real work environment. During this period, a student is exposed to a real-life work in the field. Students are required to submit progress reports during the work period. Students are also required to give a presentation and submit a final report on their experience and the knowledge they gained during their Training. Prerequisites: ENGL 214, ICS 321, SWE 206, SWE 363, Completion of at least 85 hours, Major and Cumulative GPA of at least 2.0.

Pre-Requisites: ENGL214 And ICS321 And SWE206 And SWE363

Programming paradigms: Object-oriented, imperative, functional, and logic; Application development in these paradigms; Fundamentals of Language Design: Syntax and semantics; Language implementation: virtual machines; Compilation, interpretation, and hybrid.

Pre-Requisites: ICS202

Project-oriented course in which students work in teams on an applied real-world problem of their interest, go through its software development lifecycle in order to develop a prototype software solution for the problem at hand. The senior project offers the opportunity to integrate the knowledge acquired in preceding courses, as well as promote and instill communication skills, writing skills, and lifelong self-learning.

Pre-Requisites: ICS398 Or ICS399

Compiler techniques and methodology; Organization of compilers; Lexical and syntax analysis; Parsing techniques; Object code generation and optimization, detection and recovery from errors; Contrast between compilers and interpreters.

Pre-Requisites: ICS202 And ICS253

This is the first of two courses for the multidisciplinary, capstone project. Multidisciplinary teams will be formed, projects will be defined, and project management discussed.

This is the second of two courses for the multidisciplinary, capstone project. After the multidisciplinary team was formed and the project and its management were defined and detailed, the students embark on executing their tasks going through the project’s software development lifecycle in order to develop the prototype software solution component of the problem at hand. The senior project offers the opportunity to integrate the knowledge acquired in preceding courses, as well as promote and instill communication skills, writing skills, and lifelong self- learning.

Applications of computer graphics; Graphics systems and devices; Output primitives and their attributes; Geometric transformations; Window to viewport mapping and clipping; Curves and surfaces; Three-dimensional viewing; Hidden surface removal; illumination and color models; Animation.

Pre-Requisites: ICS202

Data preprocessing, data warehousing and OLAP; Security, transaction processing, concurrency control techniques, and backup and recovery of relational databases; Introduction to non-relational database systems such as NoSQL and NewSQL databases.

Pre-Requisites: ICS321

Review of relational databases and Conjunctive queries, Data Warehousing Concepts and OLAP, Data Warehouse Design and Development, Information and data Integration, OLAP Technology for Data Mining. Data Mining: Primitive, Languages and Application Developments. Prerequisite: ICS 324

This course introduces the fundamentals of operating systems design and implementation. Topics include history and evolution of operating systems; Types of operating systems; Operating system structures; Process management: processes, threads, CPU scheduling, process synchronization; Memory management and virtual memory; File systems; I/O systems; Security and protection; Distributed systems; Case studies. Prerequisite: ICS 233.

Pre-Requisites: ICS233 Or COE205 Or ICS232 Or COE301

History and evolution of operating systems; Types of operating systems; Operating system structures; Process management: processes, threads, CPU scheduling, process synchronization; Memory management and virtual memory; File systems; I/O systems; Security and protection; Distributed systems; Case studies.

Pre-Requisites: COE233 Or COE301

Introduction to Distributed Systems; Distributed Systems Architecture; Computer Networks for distributed systems; Distributed Objects and Remote Invocation; Distributed Naming; Distributed File Systems; Security; Synchronization; Distributed Coordination and Agreement; Distributed Transactions; Distributed Replication; Distributed Multimedia Systems, Distributed Shared Memory; Case Studies such as CORBA, MACH, DCOM, and GLOBE. Prerequisite: ICS 343 or COE 344

Introduction to distributed systems; Distributed systems architecture; Computer networks for distributed systems; Distributed objects and remote invocation; Distributed naming; Distributed file systems; Security and synchronization in distributed systems; Distributed coordination and agreement; Distributed transactions; Distributed replication; Distributed multimedia systems, distributed shared memory; Case studies. Note: It cannot be taken for credit with COE 423.

Pre-Requisites: ICS343 Or COE344

The difference between quantum cryptography and existing conventional cryptography, Integer Algorithms, Modular Arithmetic , Symmetric-key Cryptography, Perfect Secrecy, Stream and Block cipher, Group Theory, Public Key Cryptography, Quantum cryptography and cryptanalysis, Key distribution protocols, Quantum money, quantum one-time pad.

Pre-Requisites: COE466

Secret key encryption; Block and stream ciphers, Encryption standards; Number theory: Divisibility, Modular arithmetic, Group theory and Finite fields; Public key encryption: RSA, ElGamal and Rabin cryptosystems; Diffie-Hellman key exchange; Cryptographically secure hashing; Authentication and digital signatures; Digital signature standard (DSS), Randomized encryption; Cryptocurrency, Blockchain models and applications. Security issues and their solutions in Blockchain models and applications. Blockchain payment networks.

Pre-Requisites: (MATH208 Or MATH202 Or MATH260 Or ICS254) And STAT319

Major phases of digital investigation; Data acquisition of physical storage devices; Study of file systems with a main focus on Microsoft Windows and Linux systems; File system analysis and file recovery; File carving and document analysis; Information hiding and steganography; Time, registry and password recovery; Email and database forensics; Memory acquisition. Prerequisites: ICS 253 or Consent of Instructor

Pre-Requisites: ICS253

Introduction to penetration testing and ethical hacking, requirements and legal issues, setting up virtual lab; Exploring Kali Linux and Metasploit framework, hacking and penetration testing phases; Information gathering through passive and active reconnaissance, footprinting, social engineering, port scanning; Advanced fuzzing techniques; Exploitation, password attacks and gaining access to remote services; Web penetration testing and web-based exploitation; Maintaining access with backdoors and rootkits; Bypassing defense applications; Wireless and mobile device hacking techniques; Writing penetration testing report; Tools and programming available for penetration testers in both Windows and Linux platforms such as Kali Linux, OpenVAS, Burp, NMAP, Netcat, Python, etc.

Pre-Requisites: ICS343 Or COE344 Or COE353

Overview of network design and management; Design methodologies; Network management strategies; Network configuration management; Network management protocols: SNMP, and RMON; Network management tools and systems; Network management applications; Desktop and web-based network management; Network troubleshooting. Note: This course cannot be taken for credit with COE 444.

Pre-Requisites: ICS343 Or COE344

Introduction to computer and network security; Security services: confidentiality, integrity, availability, accountability; Hacker techniques and attack types; Public and private key encryption; Authentication; Digital signature; User identification and access control; Computer viruses, Trojans and worms; Risk management and analysis; Information security process; Internet security: security protocols such as IPSec, SSL, TLS, email and web security; Security technologies and systems: Firewalls, VPN and IDS. Prerequisite: ICS 343 or COE 344 Note: ICS 444 is Equivalent to SWE 421. Students can take credit for only one of them.

Pre-Requisites: ICS343 Or COE344

Network Management Standards, Models, and protocols. Network Management Applications, Tools, and Systems. Remote Monitoring and Management (RMM). Large scale network management techniques and systems. Security of LANs, wireless LANs, and cellular networks. Authentication, authorization, accountability, and access controls of computer networks. Network protection tools: Firewalls, Intrusion Detection and Prevention Systems, Sandboxing, proxies. Study of diverse attack types: DDoS, spoofing, flooding, hijacking, poisoning, DNS, replay attacks and their countermeasures. Hands-on experiences in network security using Kali Linux. Hands-on experiences in implementing secure, manageable networks.

Pre-Requisites: COE344 Or ICS343 Or EE400

Introduction to high performance computing: Types of parallel computers, system architectures and performance measures; Message passing programming; Complexity analysis of parallel algorithms; Embarrassingly parallel computations; Partitioning and divide-and-conquer strategies; Pipelined computations; Synchronous computations; Load balancing and termination detection; Programming with shared memory; Parallel sorting algorithms; Numerical algorithms; Parallel image processing; Searching and optimization. Note: It cannot be taken for credit with COE 420.

Pre-Requisites: ICS202

Performance measures and evaluation techniques; Advanced network architectures and differentiated services in IP networks; Switched, fast and gigabit Ethernet; VLANs; Wireless LANs; ISDN and ATM; Frame relay; Mobile computing and mobile IP; VPN and enterprise networks; Emerging network trends and technologies. Note: It cannot be taken for credit with COE 446.

Pre-Requisites: ICS343 Or COE344

Installing, configuring, securing, and administering network services. Assessing tools for improving data/service protection; Securing remote and local network infrastructures; DNS servers, web servers, network file sharing, and other common network communication components; Practical experience through hands-on lab exercises. Prerequisites: ICS 344 or Consent of Instructor

Pre-Requisites: ICS344

Classical cryptography; Secret Key Encryption; Perfect Secrecy. Cryptanalysis; Block and Stream cipher; Data Encryption Standard (DES) and Advanced Encryption Standard (AES); Public Key Encryption; Diffie-Hellman Key Exchange; RSA, ElGamal and Rabin?s Cryptosystems; Authentication and Digital Signatures; One-time signatures; Randomized Encryption; Rabin and ElGamal signature schemes; Digital Signature Standard (DSS)' Cryptographically Secure Hashing; Message Authentication Codes; Network Security; Secure Socket Layer (SSL); IPsec. Prerequisite: ICS 254 and ICS 353.

Feedforward networks, Loss functions, Back-propagation training, Regularization, Convolutional neural networks (CNN), Transfer learning, Recurrent and recursive networks (RNN), Vanishing gradient problem, Long-short term memory (LSTM) model, Gated recurrent units (GRUs), Auto-encoders, Transformers, and Generative adversarial networks.

Pre-Requisites: (COE292 Or ICS381*) And (MATH208 Or MATH260 Or MATH202 Or ICS254) And STAT319

Co-Requisites: ICS 381

Fundamentals of Natural language processing (NLP), linguistic representation levels, Language Modelling, Vector Space Semantics and Embedding, POS tagging, Sequence Labelling, Syntactic parsing, Semantic parsing, and key evolving applications (e.g., machine translation, question answering, summarization and information extraction).

Pre-Requisites: ICS471

Foundations of bioinformatics; Sequence alignment; Sequence motifs/patterns; Protein structures prediction; Microarray data analysis; Biological networks modeling and mining. Prerequisites: [ICS 202 and ICS 381] or Consent of Instructor

Pre-Requisites: ICS202 And ICS381

Introduction and foundation of big data and big-data analytics. Sources of big data. Smart clouds. Hadoop file system and Apache Spark. Storage management for big data. Machine learning and visualization with big data. Applications of big data. Big data security, privacy, and its societal impacts.

Pre-Requisites: (MATH101 Or MATH106) And (ISE205 Or STAT201 Or STAT212 Or STAT319 Or EE315)

Introduction to neural computing: Real vs. artificial neurons; Threshold logic; Training a linear threshold unit, the perceptron rule; Multilayer feed-forward networks and the back propagation algorithm; The Hopfield net; Self-organizing maps; Radial basis functions; Adaptive resonance theory; Applications of Neural Networks (ANN). Prerequisite: Senior Standing

This course examines a range of issues concerning computer systems that can process human languages. Among the issues to be discussed are morphological and syntactic processing, semantic interpretation, discourse processing and knowledge representation. Prerequisite: Senior Standing

Image acquisition, Digital image and its properties, Image preprocessing, Segmentation (Thresholding, edge- and region-based segmentation), Morphological image processing. Image feature extraction. Bag of words. Image segmentation. Object detection and classification. Shape analysis. Feature tracking. Motion analysis. Case studies (object recognition / object tracking). Note: It cannot be taken for credit with COE 487 or EE 410.

Pre-Requisites: ICS485

Arabic language characteristics; Arabic character sets; Standardization; Unicode; Arabization systems; Arabic software tools; Arabic programming languages and introduction to Arabic computations. Prerequisites: ICS 108 or Consent of Instructor

Pre-Requisites: ICS108

This course provides a thorough grounding in a wide range of machine learning methods, for classification, regression, conditional probability estimation, clustering, and dimensionality reduction. It provides the students with the essential foundations of machine learning and their applications to real world problems.

Pre-Requisites: (COE292 Or ICS381*) And STAT319 And (MATH208 Or ICS254 Or MATH202 Or MATH260)

Co-Requisites: ICS 381

Fundamental concepts and models of multi-agent systems (MAS) and their characteristics; Models of agency; Architectures and languages; Logics for MAS; Deductive and practical reasoning agents; Reactive and hybrid agents; Coordination, negotiation and coalition mechanisms; Learning in MAS; Agent and swarm-based models to solve an optimization problem using PSO, Ants, and GA; Implementing agent and swarm-based applications (e.g. in electronic commerce, semantic Web agents, and information retrieval).

Pre-Requisites: ICS381

None

Pre-Requisites: ISE205 Or STAT319 Or EE315

Introduction to knowledge and soft computing based systems; Handling imprecision and uncertainty; Probabilistic reasoning and rough sets; Structured approach to fuzzy reasoning; Machine learning and neuro computing; Evolutionary computation and genetic algorithms; Immunological computing; Hybrid computational intelligence methods; Neuro-fuzzy inference systems; Combination of genetic algorithms with neural networks; Combination of genetic algorithms with fuzzy based systems; Applications to real life applications for building expert systems and pattern recognition.

Pre-Requisites: ICS381

This is a multidisciplinary course that covers applications of artificial intelligence (AI) and machine learning (ML) in different domains. Students will use the knowledge earned from AI & ML concentration courses to develop industry-relevant solutions on electrical engineering, computer linguistics, embedded systems, and health domains. Students will work on several programming assignments and mini projects in signal processing, natural language processing and medical imaging. In addition, students will learn how to implement energy-efficient, real-time ML-based solutions.

Pre-Requisites: ICS485

State-of-the-art topics in Computer Science and Information Systems. Prerequisite: Senior Standing.

State-of-the-art topics in Computer Science and Information Systems. Prerequisite: Senior Standing

The course introduces students to research. Explains the differences between different publications channels like conferences, journals, books, and book chapters. Introduces students to metrics like impact factor and H-index. Teaches how to search and locate relevant literature on a given research topic. Introduces students to research methodology, experimentation design, and ways to conduct experiments and report the results. It also teaches students on how to prepare a research article. Prerequisites: Consent of Instructor