ICS 101: Computer Programming
(2-3-3)
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. Note: Not to be taken by ICS/SWE students. Co-requisite: MATH 101: Calculus I
|
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. Note: ICS 103 cannot be taken by ICS/SWE students. Co-requisite: MATH 101: Calculus I
OR
MATH 132: Applied Calculus
|
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. Prerequisites: ICS 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). Prerequisites: ICS 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. Prerequisites: COE 202: Digital Logic DesignICS 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 and 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. Prerequisites: ICS 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. Prerequisites: ICS 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. Eligibility Requirements: Junior 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: Data Structures
|
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: Not to be taken for credit with COE 344. Prerequisites: ICS 201: Introduction to Computing II
|
ICS 350: Begin Cooperative Work
(0-0-0)
|
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: Major GPA >= 2.0, Completion of at least 85 credit hours, Departmental Approval Prerequisites: ENGL 214: Academic & Professional CommunicationICS 324: Database SystemsSWE 311: Principles of Software Engineering
|
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. Prerequisites: ICS 202: Data StructuresICS 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. Prerequisites: ICS 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, Expert systems and real AI applications. Prerequisites: ICS 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. Eligibility Requirements: Departmental Approval, Junior Standing Prerequisites: ENGL 214: Academic & Professional CommunicationICS 324: Database SystemsSWE 311: Principles of Software Engineering
|
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: 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. Eligibility Requirements: Senior Standing Prerequisites: ENGL 214: Academic & Professional CommunicationICS 324: Database SystemsSWE 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. Prerequisites: ICS 202: Data StructuresICS 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. Prerequisites: ICS 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. Prerequisites: ICS 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. Prerequisites: ICS 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. Prerequisites: ICS 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. Prerequisites: COE 344: Computer Networks
OR
ICS 343: Fundamentals of Computer Networks
|
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; 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. Prerequisites: COE 344: Computer Networks
OR
ICS 343: Fundamentals of Computer Networks
|
ICS 352: End Cooperative Work
(0-0-0)
|
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. Prerequisites: ICS 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: Not be taken for credit with SWE 421. Only 1 of the listed pre-requisites for this course is needed either ICS 343 or COE 344. Prerequisites: COE 344: Computer Networks
OR
ICS 343: Fundamentals of Computer Networks
|
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/Programming assignments. Eligibility Requirements: Junior Standing Prerequisites: ICS 202: Data Structures
|
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; High-speed access technologies; 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. Prerequisites: COE 344: Computer NetworksICS 343: Fundamentals of Computer Networks
|
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. Prerequisites: ICS 254: Discrete Structures IIICS 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). Eligibility Requirements: Senior 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. Eligibility Requirements: Senior 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), Shape representation and object recognition, Motion analysis, Case studies (object recognition / object tracking). Note: Not to be taken for credit with COE 487 or EE 410. Eligibility Requirements: Senior 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. Eligibility Requirements: Senior 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. Eligibility Requirements: Senior 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). Prerequisites: ICS 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). Eligibility Requirements: Senior Standing Prerequisites: 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. Eligibility Requirements: Senior Standing
|
ICS 491: Special Topics II
(3-0-3)
State-of-the-art topics in Computer Science and Information Systems. Eligibility Requirements: Senior Standing
|