ICS Courses

ICS 104:  Introduction to Programming in Python and C (2-3-3)
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.
Prerequisites: None

ICS 108: Object-Oriented Programming (3-3-4)
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. 
Prerequisites: ICS 104

ICS 202: Data Structures and Algorithms (3-3-4)
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).
Prerequisites: ICS 108

ICS 253: Discrete Structures (3-0-3)
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.
Prerequisites: ICS 104

ICS 321: Database Systems (3-0-3)
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. 
Prerequisites: ICS 202

ICS 343: Fundamentals of Computer Networks (3-3-4)
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.
Prerequisites: ICS 108

ICS 344: Information Security (3-0-3)
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
Prerequisites: ICS 343 or COE 344

ICS 353: Design and Analysis of Algorithms (3-0-3)
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
Prerequisites: ICS 202, ICS 253 

ICS 355: Theory of Computing (3-0-3)
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- June 2009 CS Student Guide Page 17 of 19 machine; Undecidability: Recursively enumerable and recursive languages, undecidability, problem reduction, undecidable problems of CFG's, RE's and TM's.
Prerequisites: ICS 253

ICS 381: Principles of Artificial Intelligence (3-0-3)
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)
Co-requisites: STAT 319
Prerequisites: ICS 253

ICS 398: Internship (0-0-6)
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 86 hours, Major and Cumulative GPA of at least 2.0.

ICS 399: Summer Training (0-0-0)
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

ICS 410: Programming Languages (3-0-3)
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.
Prerequisites: ICS 202

ICS 411: Senior Project (1-6-3)
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. 
Prerequisites: ICS 398 or ICS 399 

ICS 412: Compiler Construction Techniques (3-0-3)
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.
Prerequisites: ICS 202, ICS 253

ICS 415: Computer Graphics (3-0-3)
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.
Prerequisites: ICS 202

ICS 424: Advanced Database Systems (3-0-3)
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.
Prerequisites: ICS 321

ICS 433: Operating Systems (3-1-3)
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.
Prerequisites: COE 233 or COE 301

ICS 437: Distributed Systems (3-0-3)
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.
Prerequisites: ICS 343 or COE 344 

ICS 439: Cryptography in Quantum Era (3-0-3)
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. 
Note: Cannot be taken for credit with ICS 440
Prerequisites: COE 466

ICS 440: Cryptography and Blockchain Applications (3-0-3)
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.
Prerequisites: MATH 208 and STAT 319

ICS 441 Digital Forensics Techniques (3-0-3)
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

ICS 442: Penetration Testing and Ethical Hacking (3-0-3)
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
Prerequisites: ICS 343 or COE 344 or COE 353

ICS 443: Network Design & Management (3-0-3)
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.
Prerequisites: ICS 343 or COE 344

ICS 445: Network Management and Security (3-0-3)
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, provies. 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. 
Note: Cross-listed with COE 555.
Prerequisites: ICS 343 or COE 344 or EE 400

ICS 446: Cluster Computing (3-0-3)
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.
Prerequisites: ICS 202 and Junior Standing 

ICS 447: Computer Network Technologies (3-0-3)
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.
Prerequisites: ICS 343 or COE 344

ICS 448: Network and Security Administration (2-3-3) 
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

ICS 471: Artificial Neural Networks and Deep Learning (3-0-3)
The course will review linear models and stochastic optimization. It will develop an in-depth understanding of Feedforward networks, Loss functions, Back-propagation training, Regularization, Convolutional neural networks, Recurrent and recursive networks, Vanishing gradient problem, Long-short term memory (LSTM) model, Gated recurrent units (GRUs), Processing sequences, images, and hierarchical structures, Auto-encoders, Transfer learning, and Generative adversarial networks. The course will develop models for several domain problems such as automatic speech recognition, image recognition, drug discovery, and recommendation systems, etc.
Prerequisites: (COE 292 or ICS 381) and (MATH 208 or MATH 260 or ICS 254) and STAT 319

ICS 472: Natural Language Processing (3-0-3)
Foundations of natural language processing (NLP); Different algorithms and techniques for NLP: Word-level, syntactic, and semantic; Quantitative NLP using large corpora, statistical models for acquisition, disambiguation, parsing and the construction of representative systems.
Prerequisites: ICS 381 or Consent of Instructor

ICS 473: Bioinformatics Mining and Algorithms (3-0-3)
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

ICS 474: Big Data Analytics (3-0-3)
Introduction and foundation of big-data analytic. Sources of big data. Smart clouds. Hadoop file system and Apache Sparl. Storage management for big data. Machine learning and visualization with big data. Applications of big data. Big data security, privacy, and its societal impacts.
Prerequisites: (MATH 101 or MATH 106), (ISE 205 or STAT 201 or STAT 211 or STAT 212 or STAT 319 or EE 315)

ICS 483: Computer Vision (3-0-3)
Image acquisition, Digital image and its properties, Image preprocessing, Segmentation (Thresholding, edge- and regionbased 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.
Prerequisites: Senior Standing

ICS 484: Arabic Computing (3-0-3)
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

ICS 485 Machine Learning (3-0-3) 
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.
Prerequisites: COE 292 and MATH 208 and STAT 319

ICS 486: Agent-Based Systems and Swarm Intelligence (3-0-3)
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).
Prerequisites: ICS 381

ICS 487: Intelligent Decision Support-Systems (3-0-3)
Introduction and need for Decision Support Systems (DSS). Nature of Decision problems and the elements of the decision process with examples. Essential elements of decision-making. Evolution of DSS: management information systems, decision support systems (DSS), intelligent decision support systems (IDSS). IDSS architecture, data collection, data analysis & exploration, design and implementation. IDSS techniques: case-based reasoning, decision trees, knowledge representation. Case studies and projects: e-commerce, knowledge management, recommender systems and action.
Prerequisites: ISE 205 or STAT 319 or EE 315

ICS 488: Knowledge Based System and Soft Computing (3-0-3)
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 June 2009 CS Student Guide Page 20 of 19 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.
Prerequisites: ICS 381

ICS 489: Applications of Machine Learning (3-0-3)
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.
Prerequisites: ICS 485

ICS 490: Special Topics I (3-0-3)
State-of-the-art topics in Computer Science and Information Systems.
Prerequisites: Senior Standing

ICS 491: Special Topics II (3-0-3)
State-of-the-art topics in Computer Science and Information Systems.
Prerequisites: Senior Standing

ICS 497: Directed Undergraduate Research (3-0-3) 
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