Sign In

 CS Courses List [Old Program]

ICS 102: Introduction to Computing I   (2-3-3)
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 Calculus I or MATH 132: Applied Calculus

 ICS 103: Computer Programming in C   (2-3-3)
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 Calculus I or MATH 132: Applied Calculus
Note: ICS 103 cannot be taken by ICS/SWE students.
ICS 201: Introduction to Computing II   (3-3-4)
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.
PrerequisitesICS 102: Introduction to Computing I
ICS 202: Data Structures   (3-3-4)
Review of object-oriented concepts; Introduction to design patterns; Basic algorithms analysis; Fundamental data structures - implementation strategies for stacks, queues and linked lists; Recursion; Implementation strategies for tree and graph algorithms; Hash tables; Applications of data structures (e.g. data compression and memory management).
PrerequisitesICS 201: Introduction to Computing II
ICS 233: Computer Architecture & Assembly Language (3-3-4)
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.
PrerequisitesCOE 202: Digital Logic Design / ICS 201: Introduction to Computing II
ICS 253: Discrete Structures I   (3-0-3)
Propositional Logic, Predicate Logic, Sets, Functions, Sequences and Summation, Proof Techniques, Mathematical Induction, Inclusion-exclusion and Pigeonhole principles, Permutations and Combinations (with or without repetitions), The binomial Theorem, Recurrence Relations; Graphs terminology and applications, Connectivity, Isomorphism, Euler and Hamilton paths and Circuits, Planarity and Coloring; Trees terminology and applications.
PrerequisitesICS 102: Introduction to Computing I
ICS 254: Discrete Structures II   (3-0-3)
Number Theory: Modular Arithmetic, Integer Representation, Fermat’s Little Theorem. Chinese Remainder Theorem, RSA., Applications from Number Theory; Recursive Definitions; Algorithm Correctness; Relations: Closures and Equivalence Relations, Partial Orderings and Lattices, Hasse Diagrams; Automata Theory: Finite State Machines, Regular Expressions, DFA, NFA and their equivalence, Grammars and Chomsky Hierarchy; Abstract Algebra: Groups, Homomorphism and Lagrange's Theorem, Applications.
PrerequisitesICS 253: Discrete Structures I
ICS 309: Computing and Society   (2-0-2)
Impact of Computing on Society; Ethical Foundations; Governance and Regulation; Freedom of Speech; Intellectual Property; Privacy; Security; Professional Responsibility; Leadership challenge.
PrerequisitesJunior Standing

ICS 324: Database Systems                                                                                                            (3-3-4)
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.
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, socket programming and network security; Transport layer: TCP and UDP, congestion control; Network layer: internetworking, addressing and routing algorithms and protocols; Data link layer: framing, flow and error control protocols, PPP, MAC and LANs; Physical layer: principles of data communications, circuit switching, coding, multiplexing and transmission media.
Note: This course cannot be taken for credit with COE 344.
PrerequisitesICS 201: Introduction to Computing II
ICS 350: Cooperative Work   (0-0-0)
Beginning of Coop in summer. See course syllabus of ICS 351 for complete information.
PrerequisitesENGL 214: Academic & Professional Communication / ICS 324: Database Systems / SWE 311: Principles of Software Engineering
ICS 351: Cooperative Work   (0-0-9)
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 Eligibility Requirements: GPA above 2.0, Completion of at least 85 credit hours, Departmental Approval.
PrerequisitesENGL 214: Academic & Professional Communication / ICS 324: Database Systems / SWE 311: Principles of Software Engineering, Department Approval

ICS 352: Cooperative work       (0-0-9)
End of coop in summer. Description as given in ICS 351
Prerequisites:  ICS 351

ICS 353: Design and Analysis of Algorithms   (3-0-3)
Algorithms and Problem Solving Basic Algorithmic Analysis; Advanced Algorithmic Analysis; Advanced Data Structures Algorithms Strategies & Analysis of Fundamental Computing Algorithms; Basic Computability; The Complexity Classes P and NP.
PrerequisitesICS 202: Data Structures / ICS 253: Discrete Structures I
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 Machine: programming techniques for Turing machines, equivalence of one-tape and multitape TM's, universal Turing-machine. Undecidability: recursively enumerable and recursive languages, undecidability, problem reduction, undecidable problems of CFG's, RE's and TM's.
PrerequisitesICS 253: Discrete Structures I
ICS 381: Principles of Artificial Intelligence   (3-0-3)
Introduction to Artificial Intelligence (AI) history and applications; First order logic; State space representation; Blind and heuristic search; Constraint satisfaction and planning; Knowledge representation; Reasoning in uncertain situations; Machine learning; Prolog programming; Natural language processing, Advanced AI applications.
PrerequisitesICS 253: Discrete Structures I
ICS 399: Summer Training (0-0-0)
A summer period of 8 weeks spent as a trainee in industry, business, or government agencies for the purpose of familiarizing the student with the real job world and enabling him to apply and relate his academic knowledge to a real work environment.
The student is required to participate in computer science related activities and use his time to get acquainted with the computer science related functions and resources used by his employing organization. Besides progress reports, the student is required to submit a final report and do a presentation on his experience and the knowledge he gained during his summer training program. The student receives a zero-credit pass/fail grade.
PrerequisitesENGL 214: Academic & Professional Communication / ICS 324: Database Systems SWE 311: Principles of Software Engineering / Junior Standing and Departmental Approval
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.
PrerequisitesICS 202: Data Structures
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.
PrerequisitesENGL 214: Academic & Professional Communication / ICS 324: Database Systems / Senior Standing / SWE 311: Principles of Software Engineering
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.
PrerequisitesICS 202: Data Structures / ICS 254: Discrete Structures II
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.
PrerequisitesICS 202: Data Structures
ICS 424: Advanced Database Systems   (3-0-3)
Advanced data models: object-oriented model, and object-relational model, conceptual database design. Transaction processing: transactions, failure and recovery, and concurrency control techniques. Database backup and recovery. Query processing and optimization. Database security. Distributed databases: distributed data storage, distributed query processing, distributed transaction processing and concurrency control. Homogeneous and heterogeneous solutions, client-server architecture. XML and relational databases. Introduction to data warehousing, introduction to other current trends in database systems.
PrerequisitesICS 324: Database Systems
ICS 426: Data Warehousing and Data Mining (3-0-3)
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.
PrerequisitesICS 324: Database Systems
ICS 431: Operating Systems   (3-3-4)
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.
PrerequisitesICS 233: Computer Architecture & Assembly Language
ICS 436: Systems and Network Administration   (2-3-3)
Install and upgrade different popular operating systems. Managing File Systems. Managing User Accounts. Setting up X Windows System. Configuring Printing Services. Upgrading and installing software packages. Backing up data. Tuning kernel parameters. Configuring and managing various protocols: DNS, DHCP, Routing, Electronic Mail, and Network File System. Managing and troubleshooting computer systems and networks. Network and System Security.
Note:Only 1 of the listed pre-requisites for this course is needed either ICS 343 or COE 344.
PrerequisitesICS 343: Fundamentals of Computer Networks OR COE 344
ICS 437: Distributed System   (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; Synchronization; Distributed Coordination and Agreement;  Distributed Transactions;  Distributed Replication; Distributed Multimedia Systems, Distributed Shared Memory; Case Studies such as CORBA, MACH, DCOM, and GLOBE.
Note:Only 1 of the listed pre-requisites for this course is needed either ICS 343 or COE 344.
PrerequisitesICS 343: Fundamentals of Computer Networks OR COE 344
ICS 443: Network Design and 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.
PrerequisitesICS 343: Fundamentals of Computer Networks
ICS 444: Computer and Network Security   (3-0-3)
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.
Note: ICS 444 is Equivalent to SWE 421. Students can take credit for only one of them. Only 1 of the listed pre-requisites for this course is needed either ICS 343 or COE 344.
PrerequisitesICS 343: Fundamentals of Computer Networks OR COE 344

ICS 446: Cluster Computing   (3-0-3)
Introduction to high performance computing: types of parallel computers, system architectures, 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; Project/Programmingassignments.
PrerequisitesICS 202: Data Structures / Junior Standing
ICS 447: Computer Network Technologies    (3-0-3)
Various advanced topics on LANs and internetworking technologies will be addressed. Topics include: 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:Only 1 of the listed pre-requisites for this course is needed either ICS 343 or COE 344.
PrerequisitesICS 343: Fundamentals of Computer Networks OR COE 344
ICS 454: Principles of Cryptography (3-0-3)
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.
PrerequisitesICS 254: Discrete Structures II / ICS 353: Design and Analysis of Algorithms
ICS 481: Artificial Neural Networks   (3-0-3)
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).
PrerequisitesSenior Standing
ICS 482: Natural Language Processing   (3-0-3)
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
PrerequisitesSenior Standing
ICS 483: Computer Vision (3-0-3)
Image acquisition, The digital image and its properties, Image preprocessing, Segmentation (thresholding, edge- and region-based segmentation), Shap representation and object recognition, Motion analysis, Case studies (object recognition / object tracking).
Note: ICS 483 cannot be taken for credit with COE 487 or EE 410
PrerequisitesSenior Standing
ICS 484: Arabic Computing   (3-0-3)
This course examines a range of issues concerning computer concepts related to Arabic. Among the issues to be discussed are: Arabic Language Characteristics, Arabic Character Sets, Standardization, Unicode, Arabization systems, Arabic software tools, Arabic programming languages and Introduction to Arabic Computations.
PrerequisitesSenior Standing
ICS 485: Machine Learning   (3-0-3)
Introduction to machine learning; Concept learning; Supervised learning - decision tree learning; Unsupervised learning - clustering. Artificial neural networks. Evaluating hypotheses; Bayesian learning; Computational learning theory; Instance based learning. Genetic algorithms; Learning sets of rules - Inductive Logic Programming; Reinforcement learning; Analytical learning;
PrerequisitesSenior Standing
ICS 486: Multi-Agent Systems (3-0-3)
Agents, agent definitions and classification; Multi-agent systems (MAS) and their characteristics; Models of agency, architectures and languages, logics for MAS, deductive and practical reasoning agent, reactive and hybrid agents; Distributed problem solving and planning; Coordination mechanisms and strategies; Learning in MAS; Interaction, negotiation and coalition formation; Applications of agent technology (agents in electronic commerce and information retrieval.
PrerequisitesICS 381: Principles of Artificial Intelligence
ICS 488: Soft Computing (3-0-3)
Introduction to Soft Computing, Fuzzy Sets Theory, Fuzzy Logic, Artificial Neural Networks, Probabilistic Reasoning, Genetic Algorithms, Neuro-Fuzzy Technology, Combination of Genetic Algorithms with Neural Networks, Combination of Genetic Algorithms and Fuzzy Logic, Applications of Soft Computing (three to four real life applications).
PrerequisitesSenior Standing / STAT 319: Probability and Statistics for Engineers and Scientists
ICS 490: Special Topics I    (3-0-3)
State-of-the-art topics in Computer Science and Information Systems.
PrerequisitesSenior Standing
ICS 491: Special Topics II   (3-0-3)
State-of-the-art topics in Computer Science and Information Systems.
PrerequisitesSenior Standing