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 352: End Cooperative Work
(0-0-0)
|
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 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
|
ICS 500: Research Methods and Experiment Design in Computing
(3-0-3)
Integrated treatment to the models and practices of experimental computer science. Topics include scientific methods applied to computing, computational problem/solution characterization, quality metrics and performance estimation of computation systems, uses of analytic and simulation models, design of experiments, interpretation and presentation of experimental results, hypothesis testing, and statistical analyses of data. Note: Prerequisite is STAT 319 or equivalent. Prerequisites: STAT 319: Probability and Statistics for Engineers and Scientists
|
ICS 531: Advanced Operating Systems
(3-0-3)
Advanced concepts in operating systems design; multiprocessing model, interprocess communication; synchronization mechanisms; resource management and sharing; scheduling in multiprocessor system; Process migration; Operating system-level virtualization; Special-purpose operating systems: Real-time, Distributed and network operating systems; Distributed deadlock handelling; Distributed file system; Distributed shared memory; Replication & consistency; In addition, students will be exposed to recent developments in operating systems through research projects and papers. Note: Prerequisite is Consent of Instructor.
|
ICS 532: Performance Analysis and Evaluation
(3-0-3)
Performance measures. Modeling methodologies: queuing models, graph models, dataflow models, and Petrinet models. Mathematical models of computer systems: CPU and computer subsystems such as memory and disks. Bottleneck analysis. Modeling multi-server systems. Model validation methods. Case studies. Project(s). Note: This course is equivalent to COE 587. Prerequisite is STAT 319 or equivalent. Prerequisites: STAT 319: Probability and Statistics for Engineers and Scientists
|
ICS 533: Modeling and Simulation of Computing Systems
(3-0-3)
Basic probability and statistics. Review of discrete-event simulation tools and methodologies. Simulation languages. Random Number generation. Developing Simulation Models. Simulation Validation. Output Data Analysis. Applications to computer systems. Project(s). Note: This course is equivalent to COE 588. Prerequisite is STAT 319 or equivalent. Prerequisites: STAT 319: Probability and Statistics for Engineers and Scientists
|
ICS 535: Theory and Design of Programming Languages
(3-0-3)
Fundamentals of type systems, type inference, control structures, and storage management. Formal syntax specification. Semantic specification models: axiomatic, operational and denotational. Project(s) to design a programming language. Note: Prerequisite is ICS 410 or equivalent. Prerequisites: ICS 410: Programming Languages
|
ICS 541: Database Design and Implementation
(3-0-3)
Database development life cycle. Data modeling. Database design theory. Query processing. Concurrency control and transaction management. Recovery. Security. Database applications: data warehousing, data mining, web pages, and others. Various types of database systems: object relational, object-oriented, distributed, client/server, and others. Current trends in database research. Project(s). Note: Prerequisite is ICS 324 or equivalent. Prerequisites: ICS 324: Database Systems
|
ICS 545: Arabic Computing
(3-0-3)
Contemporary concepts and research in the field of Arabic Computing. Arabic characteristics and standardization. Arabic systems and tools. Arabic programming languages. Arabic character recognition. Arabic speech synthesis and recognition. Natural Arabic processing. Note: Consent of Instructor required.
|
ICS 546: Multimedia Information Management
(3-0-3)
Multimedia data representation and management in the context of contentbased retrieval, audio, image and video data representation, Information retrieval from text. Content based retrieval of audio, image and video data, Similarity measures. Query formulation and evaluation, Multi-dimensional indexing algorithms and data structures. Multimedia compression. Multimedia data mining. Note: Consent of Instructor required.
|
ICS 547: Digital Image Processing
(3-0-3)
Continuous Image. Mathematical Characterization. Psychovisual Properties. Photometry and Colorimetry. Superposition and Convolution. Image Transforms. Linear Processing Techniques. Image Enhancement. Morphological Image Processing. Edge Detection. Image Feature Extraction. Image Segmentation. Shape Analysis. Note: Consent of Instructor required. Not to be taken for credit with EE 663 or SE 662.
|
ICS 553: Algorithms and Complexity
(3-0-3)
Computational complexity: P-space and EXP classes, Reduction, NP-complete problems, Cook’s theorem, Randomized algorithms, Approximation algorithms, Branch-and-Bound, Amortized analysis; Max flow, Bipartite matching; Geometric algorithms: Convex hull, Closest pairs; Computability: Turing machines, Church-Turing thesis, Rice’s theorem, Undecidability. Note: Prerequisite is ICS 353 or equivalent. Prerequisites: ICS 353: Design and Analysis of Algorithms
|
ICS 555: Crytography and Data Security
(3-0-3)
Mathematical principles of cryptography and data security. A detailed study of conventional and modern cryptosystems. Zero knowledge protocols. Information theory, Number theory, complexity theory concepts and their applications to cryptography. Note: Prerequisite is Consent of Instructor.
|
ICS 557: Advanced Machine Learning
(3-0-3)
Linear and logistic regression. Regularization. Generalized linear models. Learning theory. Support vector machines. Kernel methods. Principal component analysis. Independent component analysis. Hidden Markov models. Random forests. Design of learning systems. Recommender systems. Online Learning. Ensemble learning models. Bootstrapping techniques. Note: Prerequisite is ICS 485 OR Consent of Instructor. Prerequisites: ICS 485: Machine Learning
|
ICS 558: Introduction to Bioinformatics and Biomedicine
(3-0-3)
This course offers an introduction to bioinformatics with an emphasis on biomedical aspects. Topics include bioinformatics databases, sequence alignments, protein domains, protein-protein interaction, gene expression, gene ontology, pathways, disease state analysis, and computational methods in biomedicine. Note: Consent of Instructor required.
|
ICS 570: Computer Communication Networks
(3-0-3)
Examination of modern computer networking and data communications. Contemporary concepts, facilities, practices, implementations, and issues. Data Link and media access layer protocols. Introduction to Gigabit Ethernet, ATM and Frame Relay. Protocols of TCP/IP suite. IP routing, flow and congestion control. Application Layer. Introduction to modeling and analysis of data networks: Queueing theory, Little's Law, Single Queues, and Jackson Networks. Note: This course is equivalent to COE 540 or EE 674. Prerequisite is ICS 343 or equivalent. Prerequisites: ICS 343: Fundamentals of Computer Networks
|
ICS 571: Client Server Programming
(3-0-3)
Introduction to Clients, Servers, and Protocols. Client-Server Architectures. Software Architectures for Clients and Servers. Network and Operating System Support for Client-Server Applications. Programming language support. Standard interfaces and API. Examples of clients and servers for several popular protocols such as X, POP3, news, ftp, and http. Project(s). Note: Prerequisite is (ICS 570 and ICS 431) or Consent of Instructor. Prerequisites: ICS 431: Operating SystemsICS 570: Computer Communication Networks
|
ICS 572: Distributed Computing
(3-0-3)
Introduction to parallel and distributed computation models. Mapping a parallel solution to a distributed computing platform. Programming issues. Operating system support for distributed computing. Message passing environments such as PVM and MPI. Load balancing. Migration. Agent architectures. Performance and complexity measures. Services. Service driven design of distributed applications. Timing and Synchronization. Remote procedure invocation. Project(s). Note: Prerequisite is (ICS 570 and ICS 431) or Consent of Instructor. Prerequisites: ICS 431: Operating SystemsICS 570: Computer Communication Networks
|
ICS 573: High Performance Computing
(3-0-3)
Theory and practice of parallel computing. Analytical models of parallelism and performance evaluation. Parallel architectures. Software tools for parallel programming. Design and implementation methodologies for parallel high performance applications. Design, analysis, and implementation of parallel solutions for various scientific problems such as linear algebraic problems, fast Fourier transform, Monte Carlo techniques, boundary value problems, finite element techniques, and iterative systems. Project(s). Note: Prerequisite is (ICS 353 or Equivalent) or Consent of Instructor. Prerequisites: ICS 353: Design and Analysis of Algorithms
|
ICS 575: Application Development for Internet Based Services
(3-0-3)
Application Development for Deployment over the WWW. Application protocols. Connection and Session Objects. Authentication Services. Integrating Database Services. Component Architectures. Scripting Languages. Modern applications and application architectures such as Digital Cash and E-Commerce. Making use of the state-of-art tools, a major project will be developed by the students. Prerequisites: ICS 571: Client Server Programming
|
ICS 576: Concurrent and Parallel Processing
(3-0-3)
Concepts and foundation of parallel processing. Computational models. Parallel algorithms. parallelization techniques. Parallel software characteristics and requirements: languages, compilers, operating systems, and inter-process communication support. Parallel computer architectures. Case studies. Project(s). Note: Prerequisite is ICS 431 or equivalent. Prerequisites: ICS 431: Operating Systems
|
ICS 582: Natural Language Processing
(3-0-3)
Components of a natural languages processing system. Natural language models: Mathematical, psychological. Lexical, syntactic, and semantic analysis. Phrase-structured grammars. Transformational grammars. Transition networks. Semantic networks. Conceptual parsing Conceptual dependency. Systemic and case grammars. Scripts, plans and goals. Knowledge representation. Sentence generation. Recent trends. Note: Prerequisite is ICS 381 or equivalent. Prerequisites: ICS 381: Principles of Artificial Intelligence
|
ICS 583: Pattern Recognition
(3-0-3)
Various methods of pattern recognition, extraction methods, statistical classification, minmax procedures, maximum likelihood decisions, data structures for pattern recognition, case studies. Note: Consent of Instructor required.
|
ICS 590: Special Topics in Computer Science I
(3-0-3)
Advanced topics selected from current literature that deals with theoretical foundations and advances in computer science. The specific content of an offering of the course should focus on a specific area of computer science. Note: Consent of Instructor required.
|
ICS 592: Special Topics in Computer Science II
(3-0-3)
Advanced topics selected from current literature that deals with theoretical foundations and advances in computer science. The specific content of an offering of the course should focus on a specific area of computer science. Note: Consent of Instructor required.
|
ICS 599: Seminar
(1-0-0)
Graduate students are required to attend the seminars given by faculty members, visiting scholars, and fellow graduate students. Additionally, each student must give at least presentation on a timely research topic. Among other things, this course is designed to give the student an overview of research, research methodology, journals and professional societies. Graded on a Pass or Fail basis. Prerequisites: ICS 500: Research Methods and Experiment Design in Computing
|
ICS 606: Independent Research
(0-0-3)
This course is intended to allow the student to conduct research in advanced problems in his MS research area. The faculty offering the course should submit a research plan to be approved by the Graduate Program Committee at the academic department. The student is expected to deliver a public seminar and a report on his research outcomes at the end of the course. Graded on a Pass or Fail basis. Note: Consent of Instructor required.
|
ICS 610: Master Thesis
(0-0-6)
The Student has to undertake and complete a research topic under the supervision of a faculty member in order to probe in depth a specific problem in Computer Science. Prerequisites: ICS 599: Seminar
|
ICS 611: Combinatorial, Approximation, and Probabilistic Algorithms
(3-0-3)
Representation and generation of combinatorial objects, Graph algorithms, Greedy method and the theory of matroids. Graph matching and applications. Network flows and applications. Approximation algorithms to combinatorial problems like scheduling, bin-packing, knapsack, vertex cover, TSP, clique partitioning, graph compression, Steiner problem on networks. Randomized algorithms: Monte-Carlo, Las-Vegas, algorithms, occupancy problems, randomized sorting and pattern matching, Markov chains and random walks. Note: Prerequisite is ICS 553 or Consent of Instructor. Prerequisites: ICS 553: Algorithms and Complexity
|
ICS 614: Advanced Pattern Recognition
(3-0-3)
The course covers advanced topics in pattern recognition and machine learning. Recent conference and journal papers will be discussed in depth. Tentative topics: Classification and discriminant analysis, feature generation using transformations. Feature selection, data transformation and dimensionality reduction, Classifier evaluation, Kernel methods, error rate estimation techniques and performance evaluation. Actual topics covered will depend on time available and students’ interests. Note: Prerequisite is ICS 583 or equivalent. Prerequisites: ICS 583: Pattern Recognition
|
ICS 615: Advanced Computer Vision
(3-0-3)
This course intends to provide an in-depth overview of the current state-ofthe-art of computer vision by covering a set of advanced topics that are actively investigated. Recent conference and journal papers will be discussed in depth. Tentative topics: Low level vision: Image Segmentation, Stereo, Optical flow, de-noising and texture analysis; Higher level vision: Object Detection and Recognition/Pose Estimation; geometrical and 3D vision, stereo, 3D scene reconstruction, motion analysis, visual tracking, object recognition and human motion analysis, capturing and recognition. Actual topics covered will depend on time available and students’ interests. Note: Prerequisite is ICS 547 or Consent of Instructor. Prerequisites: ICS 547: Digital Image Processing
|
ICS 630: Distributed Systems
(3-0-3)
Taxonomy of distributed systems: Client-server, cluster systems, Grid systems, P2P systems, cloud systems, volunteer-based systems. Distributed systems service models. Modeling, performance, scalability, elasticity and trust/reputation issues in distributed systems. Project(s). Note: Prerequisite is ICS 531 or Consent of Instructor. Prerequisites: ICS 531: Advanced Operating Systems
|
ICS 633: Semantics of Programming Languages
(3-0-3)
Formal methods for the description of programming languages. Advanced semantics models, attribute grammar, two-level grammars, fixed-point theory of computation, Program verification techniques. Note: Prerequisite is ICS 535 or Consent of Instructor. Prerequisites: ICS 535: Theory and Design of Programming Languages
|
ICS 654: Advanced Topics in Computer Networking
(3-0-3)
This course explores recent research trends and developments in computer networks and their applications covering state-of-the-art topics and case studies. Note: Prerequisite is ICS 570 or equivalent. Prerequisites: ICS 570: Computer Communication Networks
|
ICS 690: Special Topics in Computer Science III
(3-0-3)
Advanced topics selected from current literature that deals with theoretical foundations and advances in computer science. The specific content of an offering of the course should focus on a specific area of computer science. Note: Consent of Instructor required.
|
ICS 691: Special Topics in Computer Science IV
(3-0-3)
Advanced topics selected from current literature that deals with theoretical foundations and advances in computer science. The specific content of an offering of the course should focus on a specific area of computer science. Note: Consent of Instructor required.
|
ICS 699: Seminar
(1-0-0)
Graduate students are required to attend the seminars given by faculty members, visiting scholars, and fellow graduate students. Additionally, each student must give at least presentation on a timely research topic. Among other things, this course is designed to give the student an overview of research, research methodology, journals and professional societies. Graded on a Pass or Fail basis. Eligibility Requirements: Graduate Standing
|
ICS 701: Directed Research I
(3-0-3)
This course is intended to allow students to conduct research in advanced problems in their PhD area of specialization. Among other things, this course is designed to give the students an overview of research in computer science, and a familiarity with research methodology, journals and professional societies in his discipline. At the end of the course, the student must deliver a public seminar to present his work and findings. The course is graded on a Pass or Fail basis. Note: Consent of Instructor required.
|
ICS 702: Directed Research II
(3-0-3)
This course is intended to allow students to conduct research in advanced problems in their PhD area of specialization. Among other things, this course is designed to give the students an overview of research in computer science, and a familiarity with research methodology, journals and professional societies in his discipline. At the end of the course, the student must deliver a public seminar to present his work and findings. The course is graded on a Pass or Fail basis. Note: Consent of Instructor required.
|
ICS 711: PhD Pre-Dissertation
(0-0-3)
This course enables the student to submit his PhD Dissertation Proposal and defends and defends it in public. The student passes the course if the PhD Dissertation committee accepts the submitted dissertation proposal report and upon successfully passing the Dissertation proposal public defense. The course grade can be NP, NF, or IP. Eligibility Requirements: PhD candidacy Co-requisite: ICS 699: Seminar
|
ICS 712: PhD Dissertation
(0-0-9)
This course enables the student work on his PhD Dissertation as per submitted dissertation proposal, submit its final report and defend it in public. The student passes this course if the PhD Dissertation committee accepts the submitted final dissertation report and upon successfully passing the Dissertation public defense. The course grade can be NP, NF, or IP. Prerequisites: ICS 711: PhD Pre-Dissertation
|
SEC 511: Principles of Information Assurance and Security
(3-0-3)
Introduction to security and information assurance. Information confidentiality, availability, protection, and integrity. Security systems lifecycle. Risks, attacks, and the need for security. Legal, ethical, and professional issues in information security. Risk management including identification and assessment. Security technologies and tools. Security laws, audit and control. Cryptography foundations, algorithms and applications. Physical security, security and personnel, security implementation and management. Securing critical infrastructure. Trust and security in collaborative environments. Eligibility Requirements: Graduate Standing
|
SEC 521: Network Security
(3-0-3)
Network infrastructure security issues, including perimeter security defences, firewalls, virtual private networks, intrusion detection systems, wireless security, and network security auditing tools. Secure network applications. Network security protocols such as SSL, SSL/TLS, SSH, Kerberos, IPSec, IKE. Network threats and countermeasures. Network auditing and scanning. VoIP Security. Remote exploitation and penetration techniques. Network support for securing critical infrastructure. Design and development of software-based network security modules and tools based on hands-on experiences and state-of-the-art technologies. Note: SEC 521 cannot be taken for credit with CSE 551. Prerequisites: ICS 555: Crytography and Data Security
|
SEC 524: Computer and Network Forensics
(3-0-3)
Methodical approaches for collecting and preserving evidence of computer crimes, laws/regulation, and industry standards. Hands-on experience on identifying, analyzing, recreating, and addressing cyber based crimes. Ethical issues associated with information systems security. Foundational concepts such as file system structures, MAC times, and network protocols. Use of tools for evidence recovery. Use of established forensic methods in the handling of electronic evidence. Rigorous audit/logging and date archival practices. Prevention, detection, apprehension, and prosecution of security violators and cyber criminals, and general legal issues. Prerequisites: SEC 521: Network Security
|
SEC 528: Security in Wireless Networks
(3-0-3)
Security of wireless networks such as cellular networks, wireless LANs, mobile ad hoc networks, wireless mesh networks, and sensor networks. Overview of wireless networks. Study of threats and types of attacks, including attacks on MAC protocols. Selfish and malicious behavior in wireless routing protocols. Countermeasures/solutions and their limitations. Encryption and authentication. Secure hand-off techniques. Energy-aware security mechanisms. Secure multicasting. Key pre-distribution and management in wireless networks. Prerequisites: SEC 521: Network Security
|
SEC 531: Secure Software
(3-0-3)
Software security development lifecycle including security requirements analysis, design, coding, review, and testing. Construction of secure and safe C/Unix programs. Vulnerabilities in C source code. Stack and heap buffer overflows. Overview of secure web application development with consideration for SQL injection, cookies, and forceful browsing. Techniques for software protection, such as code obfuscation, tamper-proofing, and water-marking. Analysis of software based attacks and defenses, timing attacks and leakage of information. Type safety and capability systems. Numerous hands-on exercises and projects on writing secure code and unbreakable code and other related topics. Note: Equivalent to SWE 531. Eligibility Requirements: Graduate Standing
|
SEC 534: Database Security
(3-0-3)
Study of database security and auditing issues, challenges and protection methods. A review of relational and object database concepts. Database security and auditing issues. Authentication methods. Authorization based on privileges, roles, profiles, and resource limitations, and role-based authorization constraints. A study of access control mechanisms for current DBMSs, content-based and fine-grained access control, access control systems for object-based design and XML. Data confidentiality and privacy for databases. Secure statistical databases. Integrating databases and applications security. Database security protection via inference detection. Security implementation and administration, with applications to ecommerce, and emerging research in database security. Prerequisites: SEC 511: Principles of Information Assurance and Security
|
SEC 536: Web Application Security
(3-0-3)
Web applications security requirements, threats and countermeasures. Contemporary web application vulnerabilities and exploitation techniques, based on the Open Web Application Security Project (OWASP). Web defacement and server penetration techniques. Content-based attacks and effective countermeasures. Intellectual property protection and watermarking. Auditing and scanning Web applications and infrastructure for security weaknesses. Analysis of Web applications for key vulnerabilities and attacks. Security mechanisms and protocols and their roles in securing Web applications. Secure Web programming mechanisms in ASP.NET, Java, PHP, XML and SQL. Secure Web applications for e-commerce, e-banking and e-government transactions. Numerous hands-on exercises and projects on using tools and writing secure Web applications. Prerequisites: SEC 511: Principles of Information Assurance and Security
|
SEC 538: Trusted Computing
(3-0-3)
A comprehensive overview of trusted computing technology and its applications, TPM chips, secure boot, attestation, DRM, sealed storage, nature of trust, methods for characterizing, establishing, and attesting trust of a system. Trusted Virtualization. Operating system and hardware support for TC. Key management. Code signing. Identity management. Implications of certification. Trusted Mobile Platforms. Trust negotiation, transitive trust, trust evaluation and reputation systems. Trust computing architectures and modeling. Trust computing in P2P and cloud computing paradigms. Design and development of software applications and components to utilize trust computing for protecting information providers and end users. Prerequisites: ICS 555: Crytography and Data SecuritySEC 511: Principles of Information Assurance and Security
|
SEC 544: Biometric Systems
(3-0-3)
Theory of signal processing, especially image and sound processing, for purposes of biometric system design. An introduction to basic methods and techniques for the study of authentication based on static biometric features such as fingerprints, hand geometry, facial features, thermograms, iris and retina, voice, and handwriting. Study of recognition based on dynamic features including lip movements, typing, and gait, study of standards and applications of biometry. Eligibility Requirements: Graduate Standing
|
SEC 546: Embedded Systems Security
(3-0-3)
Study of various security models and techniques for embedded systems both from a hardware as well as a software perspective. Smart card security. RFID attack models (including power analysis, side channel, and timing attacks), and security techniques. Security in wireless sensor networks (key management techniques, attack models, detection and prevention techniques). eHealth (embedded medical systems) security. Cryptographic hardware. Industrial control systems (SCADA). Physical hardware. Security for System-on-chip, and Internet-devices such as Internet thermostats and automated doors. Eligibility Requirements: Graduate Standing
|
SEC 548: Watermarking and Steganography
(3-0-3)
Study of enabling technologies for digital watermarking and steganography including the history of information hiding, basic principles and techniques such as still images, video, and 3-D video objects, and their applicability to owner authentication, content authentication, information embedding and communication with side information. Evaluation and benchmarking of watermarking and steganography mechanisms. Study of malicious attacks inclusive of bit rate limitation, counterfeiting marks and removal attacks. Overview of attempts to formalize watermarking. Steganography vs. watermarking. Applications of steganography. software for steganography, and steganalysis techniques. Eligibility Requirements: Graduate Standing
|
SEC 595: Special Topics in Information Assurance and Security
(3-0-3)
Advanced topics selected from current journals of Information Assurance & Security and that deal with theoretical development or applications in the field. Eligibility Requirements: Graduate Standing
|
SEC 599: Graduate Seminar
(1-0-0)
Graduate students are required to attend seminars given by faculty members, visiting scholars, and fellow graduate students. Additionally, each student must deliver at least one presentation on a contemporary research topic. Among other things, this course is designed to give the student an overview of how to conduct research, research methodology, journal specifications and submission requirements, and on professional societies. The course grade is a Pass or Fail. Eligibility Requirements: Graduate Standing
|
SEC 606: Independent Research (Pass/Fail)
(3-0-3)
This course is intended to allow the student to conduct research on advanced topics in his area of research for his Master degree. The faculty offering the course should submit a research plan to be approved by the graduate program committee of the ICS Department. The student is expected to deliver a public seminar and a report on his research outcomes at the end of the course. Eligibility Requirements: Graduate Standing
|
SEC 610: Master Thesis
(0-0-6)
The student has to undertake research at an in-depth level under the supervision of a faculty member for a specific problem in the area of Security & Information Assurance. Prerequisites: SEC 599: Graduate Seminar
|
SEC 611: Cryptographics Computations
(3-0-3)
Review of number theory, set algebra and finite fields. Computations in finite fields using standard and non-standard bases. High performance algorithms and architectures for cryptographic applications. Side channel analysis attack resistant computations. Prerequisites: ICS 555: Crytography and Data Security
|
SEC 621: Advanced Network Security
(3-0-3)
Intrusion detection and prevention systems. Security engineering processes. Advanced firewall considerations. Honeynets. Network forensics. Distributed denial of service attacks (Botnet, Rootkits, Zero-Day Exploits). Cyber crime and cyber war. Enterprise security policy development. Complex enterprise security infrastructure design and integration. Web and email security. P2P network security, and trust management. Prerequisites: SEC 521: Network Security
|
SEC 631: Security in Operating Systems and Cloud Computing
(3-0-3)
Advanced security research topics in operating systems and emerging computing paradigm such as grid and cloud computing. Secure operating system requirements, fundamentals and definitions. Security in traditional and popular operating systems such as Unix, Linux, OpenBS,D and Windows. Security kernels. Verifiable security goals, trusted processes, and information flow integrity. Secure capability systems. Security in virtualization and secure virtual machine systems. Security issues and countermeasures in cloud computing. Data security and storage in the Cloud. Security management in the cloud services: PaaS, SaaS, and IaaS. Case Studies of secure systems, design, and evaluation: SELinux and Solaris. Prerequisites: SEC 521: Network Security
|
STAT 319: Probability and Statistics for Engineers and Scientists
(2-3-3)
Presentation and interpretation of data, elementary probability concepts, random variables and probability distributions, binomial, Poisson, exponential, Weibull, normal and lognormal random variables. Estimation, tests of hypotheses for the one sample problem. Simple and multiple linear regression, application to engineering problems. The lab session will be devoted to problem solving using statistics software. (The course is not open for credit to Statistics or Mathematics Majors and cannot be taken for credit with SE 205 or STAT 201). Note: This course is offered by the Department of Mathematics and Statistics. More information about the course can be found on their website.
|
SWE 205: Introduction to Software Engineering
(3-0-3)
Introduction to software engineering and software processes. Construction techniques and principals. Concepts of Programming Languages: Syntax and semantics. Analysis and Design Modes. Ethical and professional responsibilities. Prerequisites: ICS 102: Introduction to Computing I
|
SWE 215: Software Requirements Engineering
(2-3-3)
Requirements engineering process. Methods, tools and techniques for eliciting, organizing and documenting software requirements. Analysis and validation techniques, including need, goal, and use case analysis. Requirements documentation standards. Traceability. Requirements management. Handling requirements changes. Students participate in a group project on software requirements. Prerequisites: ICS 201: Introduction to Computing IISWE 205: Introduction to Software Engineering
|
SWE 311: Principles of Software Engineering
(3-3-4)
History and overview of software engineering. Software processes. Software project management. Software requirements and specification. Software design. Software testing and validation. Software metrics. Software quality assurance. Software evolution. Using APIs. Software tools and environments. Note: Not to be taken by SWE students. Prerequisites: ICS 202: Data Structures
|
SWE 312: User Interface Design
(3-0-3)
Study of both theoretical and practical issues in human-computer interfaces. User interface design process. Usability engineering. Development, programming, and evaluating interface designs. Design of windows, and menus. Commands and natural languages I/O. Visual prototyping. User manuals, online help and tutorials. Students participate in a group project on software user interface design. Prerequisites: SWE 205: Introduction to Software Engineering
|
SWE 316: Software Design and Architecture
(3-0-3)
Study of design concepts and notations. Architecture, middleware architectures, design patterns, frameworks and components. Designing for qualities such as performance, security, reusability, reliability. Metrics and measurement. Basics of software evolution, re-engineering, and reverse engineering. Students participate in a group project on software design. Prerequisites: ICS 202: Data StructuresSWE 215: Software Requirements Engineering
|
SWE 321: Formal Methods and Models in Software Engineering
(3-0-3)
Mathematical foundations for formal methods. Formal languages and techniques for specification and design, including specifying syntax using grammars and finite state machines. Analysis and verification of specifications and designs. Use of assertions and proofs. Automated program and design transformation. Prerequisites: ICS 202: Data StructuresICS 253: Discrete Structures I
|
SWE 326: Software Testing and Quality Assurance
(3-0-3)
Concept of software quality, and software quality metrics. Software quality assurance planning & implementation. Quality process standards. Validation & verification. Reviews, walkthroughs, & inspections. Mechanisms for validating software systems. Techniques for generating and validating test data. Students participate in a group project on software validation and verification. Prerequisites: SWE 215: Software Requirements EngineeringSWE 312: User Interface Design
|
SWE 344: Internet Protocols and Client-Server Programming
(2-3-3)
Principles of inter-network architecture and communication protocols. Open systems and interoperability. Case studies of particular protocols from network layer and above. Socket programming. Remoting. Selected examples of networked client-server applications such as e-mail, news, file-transfer, HTTP. Client-Server Programming Project(s). Using APIs. Software tools and environments. Prerequisites: ICS 202: Data Structures
|
SWE 363: Web Engineering and Development
(3-0-3)
Web Engineering fundamentals: requirements, analysis modeling, design modeling, testing. Internet basics for web applications. Technologies and tools for developing web applications: markup languages, styling, data description and transformation, client and server side programming. Web services. Advances in web engineering. Eligibility Requirements: Junior Standing
|
SWE 387: Software Project Management
(3-0-3)
Introduction project management concepts, tools, and techniques: integration management and project planning, scope management, scheduling, budget control, human resource management, communication management, risk analysis and management, project quality management, and procurement management. Eligibility Requirements: Junior Standing
|
SWE 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: Department Approval Prerequisites: ENGL 214: Academic & Professional CommunicationSWE 363: Web Engineering and Development
|
SWE 416: Software Architecture
(3-0-3)
Study the concepts, principles, methods, and best practices in software architecture. Different architectural styles, patterns and product lines are presented and compared. Methods to analyze, evaluate and document software architectures are also discussed. Students participate in a group project on software architecture design. Prerequisites: SWE 316: Software Design and Architecture
|
SWE 417: Software Engineering Project I
(1-6-3)
This is the first part of a two-semester senior-year capstone project. Student teams employ knowledge gained from courses throughout the program such as development of requirements, design, implementation, and quality assurance to develop a software solution to a real-world problem from conception to completion. In this part students develop project plan, software requirement specification and software design document. Prerequisites: SWE 387: Software Project ManagementSWE 316: Software Design and Architecture
|
SWE 418: Software Engineering Project II
(0-6-2)
This is the second part of a two-semester, senior-year capstone project. Student teams employ knowledge gained from courses throughout the program such as development of requirements, design, implementation, and quality assurance to develop a software solution to a real-world problem from conception to completion. In this part, students implement the design they produced in SWE 417, test their code, and evaluate their final product. Prerequisites: SWE 417: Software Engineering Project ISWE 326: Software Testing and Quality Assurance
|
SWE 436: Object-Oriented Design Patterns
(3-0-3)
A depth study of object-oriented design patterns. How design patterns solve design problems? How to select a design pattern? How to use a design pattern? Detailed study of creational patterns, structural patterns, and behavioral patterns. Case studies. Prerequisites: SWE 316: Software Design and Architecture
|
SWE 469: Software Metrics
(3-0-3)
|
SWE 487: Software Processes and Process Improvements
(3-0-3)
Software process models. Software process analysis. Life cycle process models and standards. Process implementation at various levels like organization, project, team, or individual. Measurement and analysis of software process. Process improvements. Prerequisites: SWE 326: Software Testing and Quality Assurance
|
SWE 490: Special Topics I
(3-0-3)
In-depth study of a selected special topic relevant to software engineering. Eligibility Requirements: Senior Standing
|
SWE 491: Special Topics II
(3-0-3)
In-depth study of a selected special topic relevant to software engineering. Eligibility Requirements: Senior Standing
|
SWE 505: Principles of Software Engineering
(3-0-3)
Software Requirements: Modern SRS for Enterprise Application, Software Process: Personal and Team Software Process, Traditional Software Processes and Agile Processes. Software Design: Architecture Tradeoff Analysis and patterns. Software Project Management: project initiation, planning, executing, monitoring control and closing. Software Engineering Measurement and Analysis, Software Quality Assurance: 6-Sigma. Software Integration: Enterprise Application Integration, COTS Integration. Note: This course is for non SWE students, it cannot be taken for credit toward an MS degree by SWE graduate students.
|
SWE 515: Software Requirements Engineering
(3-0-3)
The course gives state of the art and state of the practice in software requirements engineering. In-depth research-oriented study of methods, tools, notations, and validation techniques for the analysis, specification, prototyping, and maintenance of software requirements. Topics include study of object-oriented requirements modeling, using state of the art modeling techniques such as the Unified Modeling Language (UML). The course work includes a project investigating or applying approaches to requirements engineering. Note: SWE 515 cannot be taken for credit with ICS 512.
|
SWE 516: Software Design
(3-0-3)
Concepts and methods for the architectural design of large-scale software systems. Fundamental design concepts and design notations are introduced. Several design methods are presented and compared. In-depth research-oriented study of object-oriented analysis and design modeling using state of the art modeling techniques such as Unified Modeling Language (UML). Students participate in a group project on object-oriented software design. Note: SWE 516 cannot be taken for credit with ICS 513.
|
SWE 526: Software Testing and Quality Assurance
(3-0-3)
In-depth research-oriented study of verification and validation throughout the development lifecycle. Techniques for validation and verification, quality assurance at the requirements and design phases, software testing at the unit, module, subsystem, and system levels. Automatic and manual techniques for generating and validating test data. Testing process: static vs. dynamic analysis, functional testing, inspections, and reliability assessment. Note: SWE 526 cannot be taken for credit with ICS 514.
|
SWE 531: Secure Software
(3-0-3)
Software security development lifecycle including security requirements analysis, design, coding, review, and testing. Construction of secure and safe C/Unix programs. Vulnerabilities in C source code. Stack and heap buffer overflows. Overview of secure web application development with consideration for SQL injection, cookies, and forceful browsing. Techniques for software protection, such as code obfuscation, tamper-proofing, and water-marking. Analysis of software based attacks and defenses, timing attacks and leakage of information. Type safety and capability systems. Note: Equivalent to SEC 531.
|
SWE 532: Web Application Security
(3-0-3)
Study of contemporary web application vulnerabilities, based on the OWASP (Open Web Application Security Project). Study of exploitation techniques for server and client web applications, and techniques that lead to web defacement and server penetration. Auditing and scanning web applications and servers for security weaknesses and vulnerabilities. Contemporary attack scenarios exploiting web vulnerabilities such as cross-site scripting, SQL injection, cookies, and forceful browsing. Content-based attacks and effective countermeasures. Secure programming for the following technologies: .NET, ASP.NET, ActiveX, JAVA, Secure Sockets, and XML, and a study of web security protocols such as SSL and HTTPS.
|
SWE 536: Software Architecture
(3-0-3)
Advanced principles, methods and best practices in building software architecture and the architecture design process are discussed. Architectural styles and patterns are presented and compared. Software architecture analysis and evaluation methods such as ATAM and CBAM, tradeoffs among conflicting constraints in building high quality architecture are also discussed. Architecture documentation is also presented.
|
SWE 539: Software Metrics
(3-0-3)
Software metrics history and current practice, basics of measurement theory for software metrics, framework for software measurement, product, application, and process metrics. The course includes introduction to foundations of measurement theory, models of software engineering measurement, software products metrics, software process metrics and measuring management.
|
SWE 566: Software Agents
(3-0-3)
Agent-based programming; elements of distributed artificial intelligence; beliefs, desires and intentions; component based technology; languages for agent implementations; interface agents; information sharing and coordination; KIF; collaboration; communication; ontologies; KQML; autonomy; adaptability; security issues; mobility; standards; agent design issues and frameworks; applications in telecommunications. Note: Consent of Instructor required.
|
SWE 585: Empirical Software Engineering
(3-0-3)
The course discusses how empirical studies are carried out in software engineering. The distinction between analytical techniques and empirical techniques is reviewed. Other topics include empirical studies required in software engineering, kinds of problems that can be solved empirically, methods used to control variables and eliminate bias in empirical studies, and analysis and presentation of empirical data for decision making.
|
SWE 587: Software Project Management
(3-0-3)
Lifecycle and process models; process metrics; planning for a software project; mechanisms for monitoring and controlling schedule, budget, quality, and productivity; and leadership, motivation, and team building. Topics cover quantitative models of the software lifecycle, process improvement techniques, cost-effectiveness analysis in software engineering, multiple-goal decision analysis, uncertainty and risk analysis, software cost estimation, software engineering metrics; and quantitative lifecycle management techniques. Note: SWE 587 cannot be taken for credit with ICS 515.
|
SWE 588: Global Software Development
(3-0-3)
Evolution of software development, Essentials of global software development, Software development outsourcing, Global software project management concepts, tools, and techniques, Emerging topics in global software development, Cross-cultural collaboration, Global project leadership, Measuring organizations readiness for global software development, Software quality in global software development (CMMI, ISO 9001:2000), Global software development challenges, and Professional practices for global software development (i.e., copyright, intellectual property rights etc).
|
SWE 595: Special Topics in Software Engineering
(3-0-3)
Advanced topics selected from current journals of software engineering that deal with theoretical development or applications in the field. Topic include: Reusable Software Architectures, Software Engineering, Experimentation, Concurrent Software Systems, Software Metrics, Web Engineering or Formal Methods and Models in Software Engineering, etc. Note: Consent of Instructor required.
|
SWE 599: Seminar
(1-0-0)
Graduate students are required to attend the seminars given by faculty members, visiting scholars, and fellow graduate students. Additionally, each student must give at least presentation on a timely research topic. Among other things, this course is designed to give the student an overview of research, research methodology, journals and professional societies. Graded on a Pass or Fail basis Eligibility Requirements: Graduate standing
|
SWE 606: Independent Research
(3-0-3)
This course is intended to allow the student to conduct research in advanced problems in his MS research area. The faculty offering the course should submit a research plan to be approved by the Graduate Program Committee at the academic department. The student is expected to deliver a public seminar and a report on his research outcomes at the end of the course. Graded on a Pass or Fail basis Eligibility Requirements: Prior arrangement with an instructor
|
SWE 610: Master Thesis
(0-0-6)
The student has to undertake and complete a research topic under the supervision of a faculty member in order to probe in depth a specific problem in Computer Science. Note: Prerequisite is SWE 599 or Consent of Instructor. Prerequisites: SWE 599: Seminar
|
SWE 634: Real-Time and Distributed Software with Reusable Components
(3-0-3)
Advanced object-oriented design and programming of real-time and distributed systems using C++ and/or Java. Object-oriented features: inheritance, polymorphism, templates, exception handling and Concurrency issues. Design patterns and frameworks for distributed systems, with examples from communication applications. Design issues for reusable software. Note: Consent of Instructor required.
|
SWE 638: Software Maintenance and Re-Engineering
(3-0-3)
Software evolution and reengineering approaches and abstraction techniques to extract specifications and design from existing code are discussed. Major maintenance activities are presented including estimating maintenance costs, managing change and predicting maintainability with software quality metrics. Organizational issues relative to product maintenance are discussed. Principles of reverse engineering techniques are also presented. Note: Consent of Instructor required.
|
SWE 670: Formal Methods and Models in Software Engineering
(3-0-3)
In-depth advanced formal mechanisms for specifying, validating, and verifying software systems. Program verification. Formal specification via algebraic specifications and abstract model specifications, including initial specification and refinement toward implementation. Integration of formal methods with existing programming languages, and the application of formal methods to requirements analysis, testing, safety analysis, and object-oriented approaches. Model-driven architectures. Formal methods using the Object Constraint Language (OCL). Note: Consent of Instructor required.
|
SWE 671: Global Software Engineering
(3-0-3)
Topics include: Essentials of global software engineering, Software engineering outsourcing (Onshore outsourcing, Nearshore Outsourcing, Offshore outsourcing), Outsourcing models (Simple Dyadic Outsourcing, Multi-Vendors Outsourcing, Co-Sourcing and Complex Outsourcing), Global software project management concepts, tools, and techniques, Managing virtual teams, Crosscultural collaboration, Global project leadership, Measuring organizations readiness for global software development, Software quality in global software development (CMMI, ISO 9001:2000), Global software engineering challenges, Professional practices for global software engineering Intellectual Property Rights, Group working, conflict and negotiations management, Presentations, writing and referencing) Note: Consent of Instructor required.
|