COMPUTER SCIENCE Courses

CS 112. Information Literacy for Former Engineering Majors. 1 Credit.

The objective of this course is to enhance the ability of students to locate, manage, critically evaluate, and use information for problem solving, research, and decision making in a complex digital world. Emphasis in this course will be on information security, laws, regulations, institutional policies and ethical issues surrounding the access and use of information. Prerequisites: CEE 111 or ECE 111 or ENGT 111 or MAE 111 or MSIM 111.

CS 120G. Introduction to Information Literacy and Research. 3 Credits.

Students will learn to locate, manage, critically evaluate and use information for problem solving, research and decision making. Includes collaborative tools for document development and office productivity tools for presentation. Information security, laws and etiquette related to use and access of information are covered.

CS 121G. Introduction to Information Literacy and Research for Scientists. 3 Credits.

Students will learn to locate, manage, critically evaluate and use information for scientific problem solving and research. Includes mathematical tools for data analysis and presentation and office and collaborative tools, as well. Information security, laws and etiquette related to use and access of information are covered.

CS 126G. Honors: Introduction to Information Literacy and Research. 3 Credits.

Open only to students in the Honors College. A special honors version of CS 120G.

CS 133. Introduction to Programming in Java. 4 Credits.

Laboratory work required. Introduction to computer-based problem solving and programming in Java. Topics include problem solving methodologies, program design, algorithm development, and testing. Java language concepts include variables, data types and expressions, assignment, control-flow statements, functions, arrays, and classes. Algorithms covered include sorting, searching, and linked list manipulations. Prerequisite: MATH 102M or MATH 103M.

CS 150. Problem Solving and Programming I. 4 Credits.

Laboratory work required. Introduction to computer-based problem solving and programming in C++. Topics include problem solving methodologies, program design, algorithm development, and testing. C++ language concepts include variables, data types and expressions, assignment, control-flow statements, functions, arrays, pointers, structs, and classes. Prerequisite: MATH 102M or MATH 103M or equivalent.

CS 170. Introduction to Computer Architecture I. 3 Credits.

Fundamentals of the architecture and operation of modern computers. Basic computer logic: logic equations; gates; combinatorial logic. Basic computer arithmetic: binary numbers; floating point representation. System hierarchy, overview of a computer; integrated circuit technology. Performance: metrics; choosing benchmarks; Amdahl's law. Instruction Sets and Operations: assembly language; machine language; examples of other instruction sets. Prerequisite: MATH 102M or MATH 103M and a grade of C or better in CS 150.

CS 195. Topics. 1-3 Credits.

Special topics in computer science that are not part of the current curriculum at the freshman/sophomore level.

CS 250. Problem Solving and Programming II. 4 Credits.

Laboratory work required. Design issues arising in software systems and C++ programming techniques aiding in their solution. Topics include the software life cycle, methods of functional decomposition, design documentation, abstract data types and classes, common data structures, dynamic data structures, algorithmic patterns, and testing and debugging techniques. Term project required. Prerequisites: MATH 162M and a grade of C or better in CS 150. Corequisite: CS 252.

CS 252. Introduction to Unix for Programmers. 1 Credit.

Laboratory work required. Available for pass/fail grading only. An introduction to Unix with emphasis on the skills necessary to be a productive programmer in Unix, Linux, and related environments. Topics include command line shells, files and directories, editing, compiling and common command line utilities. Prerequisites: A grade of C or better in CS 150, CS 333, or IT 205.

CS 270. Introduction to Computer Architecture II. 3 Credits.

Fundamentals of the architecture and operation of modern computers. Building an ALU. The cache-Ram interaction. The virtual memory system. The Fetch/Execute cycle. Implementing a set of the ALU, Load/Store and Branch instructions in a single cycle implementation. Basics of microprogramming. Design of the control unit. A pipelined implementation. Multicores, multiprocessors and clusters. Prerequisites: A grade of C or better in CS 170 and in either CS 150 or CS 333.

CS 295. Topics in Computer Science. 1-3 Credits.

Special topics in computer science which are not part of the current curriculum at the freshman/sophomore level.

CS 300T. Computers in Society. 3 Credits.

Covers changes in the world's society due to continuing implementation of computing technologies. Evaluation of technological expansions in areas of governments, business/industry, education, medicine, transportation, communication and entertainment. Topics include: intellectual property, software piracy, computer crimes and ethics. Students must research a societal topic and present in written and oral forms. Prerequisites: ENGL 110C.

CS 312. Internet Concepts. 3 Credits.

Laboratory work required. An in-depth introduction to the Internet and the World Wide Web for CS or similar majors as a basis for more advanced studies in Web programming. Topics include: historical and current development of the Internet Web document publishing. Internet design, communication, and application protocols and the tools that use them. Internet search tools and their design. Internet issues such as netiquette, copyright, spam, computer viruses, cookies, security, and future of the Internet. Prerequisites: CS 252.

CS 330. Object-Oriented Programming and Design. 3 Credits.

Laboratory work required. The techniques and idioms of object-oriented programming in C++ and Java. Methods of object-oriented analysis and design with the Unified Modeling Language. Multi-thread programs and synchronization. Prerequisites: MATH 163, CS 252 and a grade of C or better in CS 250 or CS 333.

CS 333. Programming and Problem Solving in C++. 4 Credits.

Laboratory work required. Topics include C++ syntax and semantics, principles of design and basic software engineering skills. This course satisfies the requirements of both CS 150 and 250. It is intended for the student who has already been introduced to programming, possibly in another language. This web-based course requires considerable maturity and independent responsibility on the part of the student. Prerequisites: MATH 163 and a grade of C or better in CS 150 or IT 210 (or an equivalent course in a high level language). Corequisite: CS 252.

CS 334. Computer Architecture Fundamentals. 4 Credits.

Topics include: number representation, base conversion, Boolean algebra, combinatorial circuits, arithmetic units, registers, memory, hardwired and microprogrammed control units, architecture of typical microcomputers, and the development of systems from basic components. The performance of competing architectures will be a major concern. This course satisfies the requirements of both CS 170 and CS 270. This web-based course requires considerable maturity and independent responsibility on the part of the student. Prerequisites: MATH 163 and a grade of C or better in CS 150 (or an equivalent course in a high level language).

CS 350. Introduction to Software Engineering. 3 Credits.

Laboratory work required. An exploration of the software development process, with an emphasis on the tools and techniques that support project teams. Topics include: software development process models, requirements, automated testing, documentation, build, version and configuration management, issue tracking, and agile methods. The course requires each student to participate as a member of a project team and to demonstrate proficiency with a variety of development tools. Prerequisites: CS 252 and a grade of C or better in CS 330 or CS 361.

CS 355. Principles of Programming Languages. 3 Credits.

Survey of significant features of programming languages. Language types including imperative, functional, logical, and object-oriented are covered. Concepts include lexical and syntactic analysis, type systems, flow control, modularity, and parallel programming. Small programs in several languages required. Laboratory work required. Prerequisites: CS 252 and a grade of C or better in CS 250 or CS 333.

CS 361. Advanced Data Structures and Algorithms. 3 Credits.

Laboratory work required. Common abstract data types, including vectors, lists, stacks, queues, sets, maps, heaps, and graphs. Standard C++ interfaces for these ADTs. Generic programming via iterators and templates. Choosing data structures and algorithms to implement ADTs, via analysis of their time and space complexity. Prerequisites: MATH 163, CS 252 and a grade of C or better in CS 250 or CS 333.

CS 367. Cooperative Education. 1-3 Credits.

Available for pass/fail grading only. Student participation for credit based on the academic relevance of the work experience, criteria, and evaluative procedures as formally determined by the department and Career Development Services prior to the semester in which the work experience is to take place. Written report required. (qualifies as a CAP experience) Prerequisites: approval by the CS Department and Career Development Services in accordance with the policy for granting credit for Cooperative Education programs.

CS 368. Computer Science Internship. 1-3 Credits.

Available for pass/fail grading only. Academic requirements will be established by the department and will vary with the amount of credit desired. Allows students to gain short duration career-related experience. An academic project may be required by the department to enhance the value of the educational experience. Written report required. (qualifies as a CAP experience) Prerequisites: approval by CS Department and Career Development Services.

CS 381. Introduction to Discrete Structures. 3 Credits.

Topics include propositional and predicate logic, rules of inference, methods of proof, set operations, functions, complexity of algorithms, growth of functions, induction, counting, relations, equivalence relations and graphs. Prerequisites: MATH 163 and a grade of C or better in CS 150 or CS 333.

CS 382. Introduction to JAVA. 1 Credit.

Laboratory work required. An introduction to the Java programming language for students who are familiar with programming in C++. Topics include basic language syntax, data structures, control flow, classes, exception handling, and basic elements of the Java API. This web-based class requires independent responsibility and online communication skills on the part of the student. Prerequisites: A grade of C or better in CS 250 or CS 333.

CS 390. Introduction to Theoretical Computer Science. 3 Credits.

Elementary study of theoretical aspects of computer science. Topics in formal languages and automata theory are covered including regular languages, regular expressions, finite automata, context-free languages, pushdown automata, grammars, Turing machines, and unsolvable problems. Prerequisites: A grade of C or better in CS 381 and CS 250 or CS 333.

CS 395. Topics in Computer Science. 1-3 Credits.

Special topics. Prerequisites: permission of the instructor.

CS 410/510. Professional Workforce Development I. 3 Credits.

Laboratory work required. Provides students with challenges of business environments in developing a technology based project. Students identify a societal problem, identify solutions, define project solutions, develop project objectives, conduct feasibility analysis, establish organizational group structure to meet project objectives and develop formal specifications. Students make formal technical project presentations and develop web documentation. Students prepare a draft grant proposal. Prerequisites: A grade of C or better in CS 300T and CS 350.

CS 411W/511. Professional Workforce Development II. 3 Credits.

Laboratory work required. Students write professional and non-technical documents and continue the development of the project defined in CS 410. Written work is reviewed and returned for corrective rewriting. Students will design and develop a project prototype, and demonstrate the prototype to a formal panel along with delivering the formal product specifications and a draft formal grant proposal. (qualifies as a CAP experience) (This is a writing intensive course.) Prerequisites: A grade of C or better in ENGL 211C or ENGL 221C or ENGL 231C and a grade of C or better in CS 330 and CS 410.

CS 417/517. Computational Methods and Software. 3 Credits.

Laboratory work required. Algorithms and software for fundamental problems in scientific computing. Topics: properties of floating point arithmetic, linear systems of equations, matrix factorizations, stability of algorithms, conditioning of problems, least-squares problems, eigenvalue computations, numerical integration and differentiation, nonlinear equations, iterative solution of linear systems. Prerequisites: MATH 316 and a grade of C or better in CS 250 or CS 333.

CS 418/518. Web Programming. 3 Credits.

Laboratory work required. Overview of Internet and World Wide Web; web servers and security, HTTP protocol; web application and design; server side scripts and database integration, and programming for the Web. Prerequisites: A grade of C or better in CS 312 and CS 330.

CS 431/531. Web Server Design. 3 Credits.

Laboratory work required. Extensive coverage of the hypertext transfer protocol (HTTP), specifications and commentary (IETF RFCs), and implications for servers and clients. Students will develop a web server providing common HTTP functionality and implementing all HTTP (including unsafe and conditional) methods, content negotiation, transfer and content encoding, basic & digest authentication, and server-side execution of programs (i.e., dynamic resources). Frequent in-class demonstrations of progress and protocol conformance will be required. Prerequisites: CS 150, familiarity with Internet and network (including socket) programming.

CS 432/532. Web Science. 3 Credits.

Provides an overview of the World Wide Web and associated decentralized information structures, focusing mainly on the computing aspects of the Web: how it works, how it is used, and how it can be analyzed. Students will examine a number of topics including: web architecture, web characterization and analysis, web archiving, Web 2.0, social networks, collective intelligence, search engines, web mining, information diffusion on the web, and the Semantic Web. Prerequisites: A grade of C or better in CS 361 and CS 330.

CS 441/541. App Development for Smart Devices. 3 Credits.

Laboratory work required. Project-oriented coverage of the principles of application design and development for Android platform smart devices. Topics include user interface; input methods; data handling; network techniques; localization and sensing. Students are required to produce a professional-quality mobile application. Prerequisite: CS 330 or CS 382.

CS 450/550. Database Concepts. 3 Credits.

Laboratory work required. Three level database architecture. The relational database model and relational algebra. SQL and its use in database procedures and with conventional programming languages. Entity relationship modeling. Functional dependencies and normalization. Transactions, concurrency and recovery. Prerequisites: CS 252 and a grade of C or better in CS 381 and either CS 330 or CS 361.

CS 451/551. Software Engineering Survey. 3 Credits.

Laboratory work required. Evaluation of software development methodologies. Topics include: software life cycle models, software specification and design methodologies, informal specification techniques, formal specifications, design tools, software analysis, quality assurance, life cycle management, software costing models and complexity. Prerequisites: A grade of C or better in CS 330 or CS 361.

CS 454/554. Network Management. 3 Credits.

Laboratory work required. The administration of computer networks and their interaction with wide area networks: network topologies for local and wide area networks, common protocols and services, management of distributed file services, routing and configuration, security, monitoring and trouble-shooting. Prerequisites: A grade of C or better in CS 455.

CS 455/555. Introduction to Networks and Communications. 3 Credits.

Internet and the 5-layered protocol architecture for the Internet, applications built on top of data networks, specifically the Internet, the web, the transport layer, TCP and UDP protocols, the network layer, the data link layer, also some of the technologies for the physical layer. Prerequisites: CS 250 or CS 333, CS 252, CS 270.

CS 458/558. Unix System Administration. 3 Credits.

Laboratory work required. Aspects of administering a SOLARIS/UNIX operating system in a networked environment are covered. Topics covered include installation, file system management, backup procedures, process control, user administration, device management, Network File Systems (NFS), Network Information Systems (NIS), UNIX security, Domain Name Services (DNS), and integration with other operating systems. Prerequisites: experience with UNIX.

CS 460/560. Computer Graphics. 3 Credits.

Laboratory work required. An introduction to graphical systems and methods. Topics include basic primitives, windowing, transformations, hardware, interaction devices, 3-D graphics, curved surfaces, solids, and realism techniques such as visible surface, lighting, shadows, and surface detail. Requires project involving OpenGL programming. Prerequisites: A grade of C or better in CS 361.

CS 462/562. Cybersecurity Fundamentals. 3 Credits.

Introduction to networking and the Internet protocol stack; Vulnerable protocols such as HTTP, DNS, and BGP; Overview of wireless communications, vulnerabilities, and security protocols; Introduction to cryptography; Discussion of cyber threats and defenses; Firewalls and IDS/IPS; Kerberos; Transport Layer Security, including certificates; Network Layer Security. Prerequisites: MATH 162M.

CS 463/563. Cryptography for Cybersecurity. 3 Credits.

This course covers mathematical foundations, including information theory, number theory, factoring, and prime number generation; cryptographic protocols, including basic building blocks and protocols; cryptographic techniques, including key generation and key management, and applications; and cryptographic algorithms--DES, AES, stream ciphers, hash functions, digital signatures, etc. Prerequisites: MATH 162M.

CS 464/564. Networked Systems Security. 3 Credits.

Authentication in cyber systems including password-based, address-based, biometrics-based, and SSO systems; Authorization and accounting in cyber systems; Securing wired and wireless networks; Secured applications including secure e-mail services, secure web services, and secure e-commerce applications; Security and privacy in cloud environments. Prerequisites: MATH 162M.

CS 465/565. Information Assurance. 3 Credits.

Introduction to information assurance. Topics to be covered include metrics, planning and deployment; identity and trust technologies; verification and evaluation, and incident response; human factors; regulation, policy languages, and enforcement; legal, ethical, and social implications; privacy and security trade-offs; system survivability; intrusion detection; and fault and security management. Prerequisites: MATH 162M and familiarity with computer security area.

CS 471. Operating Systems. 3 Credits.

Laboratory work required. Operating system structures. Multiprogramming and multiprocessing. Process management. Memory and other resource management. Storage management, I/O systems, distributed systems. Protection and security. The concepts will be illustrated through example systems such as Unix and Windows. Prerequisites: A grade of C or better in CS 270 and CS 361.

CS 472. Network and Systems Security. 3 Credits.

Laboratory work required. Basic protocols, techniques and programming issues to secure network and computer systems. Topics include: cryptographic algorithms and concepts (Secret Key Cryptography, Hashes and Message Digests, Public Key and Authentication); Security Standards (Kerberos, Public Key Infrastructure, IPsec, SSL/TLS); Security applications (PEM, S/MIME, PGP, HTTP, Firewalls); Hands-on programming using OpenSSL. Prerequisites: A grade of C or better in CS 361.

CS 475/575. Introduction to Computer Simulation. 3 Credits.

Laboratory work required. Efficient implementation methods. Time management. Planning and design of simulation experiments. Statistical issues in simulation. Generation of random numbers and stochastic variates. Programming with graphically- and text-based simulation languages. Verification and validation of simulation models. Distributed simulation. Special topics such as HLA will be discussed. Prerequisites: STAT 330 and a grade of C or better in CS 330 or CS 361.

CS 476/576. Systems Programming. 3 Credits.

Laboratory work required. This course is to help students fully understand and utilize the internal workings and capabilities provided by modern computing, networking and programming environments. Topics include: Shell Script Programming, X Windows (Xlib and Motif), UNIX internals (I/O, Processes, Threads, IPC and Signals), Network Programming (UDP/TCP Sockets and Multicasting) and Java Systems Programming (SWING, Multithreading and Networking). Prerequisites: A grade of C or better in CS 330 and CS 361.

CS 478/578. Computational Geometry, Methods and Applications. 3 Credits.

The discipline of Computational Geometry is devoted to the study of algorithms which are formulated in terms of spatially embedded arrangements of objects, such as points, lines, surfaces, and solids. This course covers fundamental algorithms including convex hulls, polygon triangulations, point location, Voronoi diagrams, Delaunaytriangulations, binary space partitions, quadtrees, and other topics. Prerequisites: CS 361 and MATH 211.

CS 480/580. Introduction to Artificial Intelligence. 3 Credits.

Laboratory work required. Introduction to concepts, principles, challenges, and research in major areas of AI. Areas of discussion include: natural language and vision processing, machine learning, machine logic and reasoning, robotics, expert and mundane systems. Prerequisites: A grade of C or better in CS 361.

CS 486/586. Introduction to Parallel Computing. 3 Credits.

Laboratory work required. The motivation for and successes of parallel computing. A taxonomy of commercially available parallel computers. Strategies for parallel decompositions. Parallel performance metrics. Parallel algorithms and their relation to corresponding serial algorithms. Numerous examples from scientific computing, mainly in linear algebra and differential equations. Implementations using public-domain network libraries on workstation clusters and computers. Prerequisites: MATH 316; knowledge of a high level language.

CS 487. Applied Parallel Computing. 3 Credits.

Laboratory work required. Fundamental concepts of parallel computing: Machine models, architectures, parallel topologies and languages, parallel algorithm design and parallel programming, architecture independent message passing interface (MPI) communication library, and scaled-speedup. Group project required. Prerequisites: A grade of C or better in CS 270 and either CS 361 or CS 330; CS 417 or linear algebra is recommended.

CS 488/588. Principles of Compiler Construction. 3 Credits.

Laboratory work required. Theoretical and practical aspects of compiler design and implementation. Topics will include lexical analysis, parsing, translation, code generation, optimization, and error handling. Prerequisites: A grade of C or better in CS 361.

CS 495/595. Topics in Computer Science. 1-3 Credits.

Special topics. Prerequisite: permission of the instructor.

CS 497/597. Independent Study in Computer Science. 1-3 Credits.

Independent study under the direction of an instructor. Prerequisites: permission of the instructor.

CS 500. Foundations of Computing. 3 Credits.

The course aims to provide students foundational training in computing. This includes topics in discrete mathematics, counting and combinatorics, probability, proofs methods, basic automata theory and algorithm design and analysis. Prerequisites: MATH 211 or equivalent, CS 250 or equivalent experience with C++ programming and basic data structures.

CS 510. Professional Workforce Development I. 3 Credits.

Laboratory work required. Provides students with challenges of business environments in developing a technology based project. Students identify a societal problem, identify solutions, define project solutions, develop project objectives, conduct feasibility analysis, establish organizational group structure to meet project objectives and develop formal specifications. Students make formal technical project presentations and develop web documentation. Students prepare a draft grant proposal.

CS 511. Professional Workforce Development II. 3 Credits.

Lecture 3 hours; 3 credits. Laboratory work required. Students write professional and non-technical documents and continue the development of the project defined in CS 410. Written work is reviewed and returned for corrective rewriting. Students will design and develop a project prototype, and demonstrate the prototype to a formal panel along with delivering the formal product specifications and a draft formal grant proposal. (qualifies as a CAP experience) (This is a writing intensive course.).

CS 517. Computational Methods and Software. 3 Credits.

Lecture 3 hours; 3 credits. Laboratory work required. Algorithms and software for fundamental problems in scientific computing. Topics: properties of floating point arithmetic, linear systems of equations, matrix factorizations, stability of algorithms, conditioning of problems, least-squares problems, eigenvalue computations, numerical integration and differentiation, nonlinerar equations, iterative solution of linear systems.

CS 518. Web Programming. 3 Credits.

Lecture 3 hours; 3 credits. Laboratory work required. Overview of Internet and World Wide Web; web servers and security, HTTP protocol; web application and design; server side scripts and database integration, and programming for the Web.

CS 531. Web Server Design. 3 Credits.

Laboratory work required. Extensive coverage of the hypertext transfer protocol (HTTP), specifications and commentary (IETF RFCs), and implications for servers and clients. Students will develop a web server providing common HTTP functionality and implementing all HTTP (including unsafe and conditional) methods, content negotiation, transfer and content encoding, basic & digest authentication, and server-side execution of programs (i.e., dynamic resources). Frequent in-class demonstrations of progress and protocol conformance will be required. Prerequisites: Familiarity with Internet and network (including socket) programming.

CS 532. Web Science. 3 Credits.

An overview of the World Wide Web and associated decentralized information structures, focusing mainly on the computing aspects of the Web: how it works, how it is used, and how it can be analyzed. Students will examine a number of topics including: web architecture, web characterization and analysis, web archiving, Web 2.0, social networks, collective intelligence, search engines, web mining, information diffusion on the web, and the Semantic Web.

CS 541. App Development for Smart Devices. 3 Credits.

Laboratory work required. Project-oriented coverage of the principles of application design and development for Android platform smart devices. Topics include user interface; input methods; data handling; network techniques; localization and sensing. Students are required to produce a professional-quality mobile application. Prerequisites: Knowledge of Java.

CS 550. Database Concepts. 3 Credits.

Laboratory work required. Three level database architecture. The relational database model and relational algebra. SQL and its use in database procedures and with conventional programming languages. Entity relationship modeling. Functional dependencies and normalization. Transactions, concurrency and recovery. Prerequisites: Familiarity with elementary set theory, propositional logic, and any two programming languages are expected; a course in finite mathematics or discrete structures is recommended.

CS 551. Software Engineering Survey. 3 Credits.

Lecture 3 hours; 3 credits. Laboratory work required. Evaluation of software development methodologies. Topics include: software life cycle models, software specification and design methodologies, informal specification techniques, formal specifications, design tools, software analysis, quality assurance, life cycle management, software costing models and complexity.

CS 554. Network Management. 3 Credits.

Laboratory work required. The administration of computer networks and their interaction with wide area networks: network topologies for local and wide area networks, common protocols and services, management of distributed file services, routing and configuration, security, monitoring and trouble-shooting.

CS 555. Introduction to Networks and Communications. 3 Credits.

Internet and the 5-layered protocol architecture for the Internet, applications built on top of data networks, specifically the Internet, the web, the transport layer, TCP and UDP protocols, the network layer, the data link layer, also some of the technologies for the physical layer. Prerequisites: Familiarity with C++ or Java programming for Unix systems.

CS 558. Unix System Administration. 3 Credits.

Laboratory work required. Aspects of administering a SOLARIS/UNIX operating system in a networked environment are covered. Topics covered include installation, file system management, backup procedures, process control, user administration, device management, Network File Systems (NFS), Network Information Systems (NIS), UNIX security, Domain Name Services (DNS), and integration with other operating systems. Prerequisites: experience with UNIX.

CS 560. Computer Graphics. 3 Credits.

Laboratory work required. An introduction to graphical systems and methods. Topics include basic primitives, windowing, transformations, hardware, interaction devices, 3-D graphics, curved surfaces, solids, and realism techniques such as visible surface, lighting, shadows, and surface detail. Requires project involving OpenGL programming.

CS 562. Cybersecurity Fundamentals. 3 Credits.

Introduction to networking and the Internet protocol stack; Vulnerable protocols such as HTTP, DNS, and BGP; Overview of wireless communications, vulnerabilities, and security protocols; Introduction to cryptography; Discussion of cyber threats and defenses; Firewalls and IDS/IPS; Kerberos; Transport Layer Security, including certificates; Network Layer Security.

CS 563. Cryptography for Cybersecurity. 3 Credits.

This course covers mathematical foundations, including information theory, number theory, factoring, and prime number generation; cryptographic protocols, including basic building blocks and protocols; cryptographic techniques, including key generation and key management, and applications; and cryptographic algorithms--DES, AES, stream ciphers, hash functions, digital signatures, etc. Prerequisites: MATH 162M.

CS 564. Networked Systems Security. 3 Credits.

Authentication in cyber systems including password-based, address-based, biometrics-based, and SSO systems; Authorization and accounting in cyber systems; Securing wired and wireless networks; Secured applications including secure e-mail services, secure web services, and secure e-commerce applications; Security and privacy in cloud environments.

CS 565. Information Assurance. 3 Credits.

Introduction to information assurance. Topics to be covered include metrics, planning and deployment; identity and trust technologies; verification and evaluation, and incident response; human factors; regulation, policy languages, and enforcement; legal, ethical, and social implications; privacy and security trade-offs; system survivability; intrusion detection; and fault and security management. Prerequisites: MATH 162M or familiarity with computer security area.

CS 575. Introduction to Computer Simulation. 3 Credits.

Lecture 3 hours; 3 credits. Efficient implementation methods. Time management. Planning and design of simulation experiments. Statistical issues in simulation. Generation of random numbers and stochastic variates. Programming with graphically- and text-based simulation languages. Verification and validation of simulation models. Distributed simulation. Special topics such as HLA will be discussed.

CS 576. Systems Programming. 3 Credits.

Lecture 3 hours; 3 credits. Laboratory work required. This course is to help students fully understand and utilize the internal workings and capabilities provided by modern computing, networking and programming environments. Topics include: Shell Script Programming, X Windows (Xlib and Motif), UNIX internals (I/O, Processes, Threads, IPC and Signals), Network Programming (UDP/TCP Sockets and Multicasting) and Java Systems Programming (SWING, Multithreading and Networking).

CS 578. Computational Geometry, Methods and Applications. 3 Credits.

The discipline of Computational Geometry is devoted to the study of algorithms which are formulated in terms of spatially embedded arrangements of objects, such as points, lines, surfaces, and solids. This course covers fundamental algorithms including convex hulls, polygon triangulations, point location, Voronoi diagrams, Delaunaytriangulations, binary space partitions, quadtrees, and other topics.

CS 580. Introduction to Artificial Intelligence. 3 Credits.

Laboratory work required. Introduction to concepts, principles, challenges, and research in major areas of AI. Areas of discussion include: natural language and vision processing, machine learning, machine logic and reasoning, robotics, expert and mundane systems.

CS 586. Introduction to Parallel Computing. 3 Credits.

Laboratory work required. The motivation for and successes of parallel computing. A taxonomy of commercially available parallel computers. Strategies for parallel decompositions. Parallel performance metrics. Parallel algorithms and their relation to corresponding serial algorithms. Numerous examples from scientific computing, mainly in linear algebra and differential equations. Implementations using public-domain network libraries on workstation clusters and computers.

CS 588. Principles of Compiler Construction. 3 Credits.

Laboratory work required. Theoretical and practical aspects of compiler design and implementation. Topics will include lexical analysis, parsing, translation, code generation, optimization, and error handling.

CS 595. Topics in Computer Science. 1-3 Credits.

Special topics.

CS 597. Independent Study in Computer Science. 1-3 Credits.

Independent study under the direction of an instructor. Prerequisites: permission of the instructor.

CS 600. Algorithms and Data Structures. 3 Credits.

This course covers the following topics: (i) Basic introduction to algorithms, their design and analysis (ii) Asymptotic notation (iii) Recurrence Relations and their solutions (iv) Sorting and Order Statistics: various algorithms for sorting and their analysis, lower bounds for sorting, computing medians, modes and various order statistics (v) Paradigms for algorithm design and analysis: Dynamic Programming, Greedy Method, Amortized Analysis, and (vi) Graphs and Elementary Graph Algorithms: Breadth-first and Depth-first Search, Topological Sort, Minimum Spanning Trees and Shortest Paths Algorithms. Prerequisites: CS 361 or equivalent and CS 381 or equivalent.

CS 635. Parallel Computer Architecture. 3 Credits.

Lecture 3 hours; 3 credits. Prerequisite: CS 665. This is a first course in parallel architecture, with an emphasis on the description and evaluation of commercially available machines. Topics to be covered include: parallelization and performance metrics, scalability and the "laws" of Amdahl and Gustavson, computational similarity, models of computation, parallelization paradigms, networkcharacteristics and topology, communication calculus and templates, pipelining and parallelism, processor types, memory hierarchy, cache coherence protocols, latency-hiding mechanisms, routing algorithms, and languages and libraries to support parallel architecture.

CS 656. Database Methodology. 3 Credits.

Lecture 3 hours; 3 credits. Prerequisite: CS 550. Laboratory work required. Analysis, design and implementation of databases and database applications using modern software engineering methods. Database CASE tools. Analysis using process, function, and dataflow analysis in conjunction with entity relationship modeling. Database diagrams and database design. Application suite design and high level design of applications. Refining implementations.

CS 660. 3D Computer Graphics. 3 Credits.

Lecture 3 hours; 3 credits. Prerequisite: CS 560. Laboratory work required. The mathematical tools needed for the geometrical aspects of 3D computer graphics. Fundamentals: homogeneous coordinates, transformations and perspective. Theory of parametric and implicit curve and surface models: polar forms, Bezier arcs and de Casteljau subdivision, continuity constraints, B-splines, tensor product, and triangular patch surfaces. Representations of solids and conversions among them. Beometric algorithms for graphics problems, with applications to ray tracing, hidden surface elimination, etc.

CS 665. Computer Architecture. 3 Credits.

Lecture 3 hours; 3 credits. A detailed and quantitative study of the architecture of modern uni-processor computers. The major components are: the technology drivers, performance measures, instruction sets (including 80X86, VAX, and a generic RISC which is very similar to the MIPS series), processor implementation, advanced pipelining and superscalar features, cache and memory design, and I/O. The emphasis is on obtaining quantitative measures of performance, describing interactions of the various components, studying trade-offs between the components in commercial processors, and integration into a complete computer system including interaction of the software and hardware. (offered spring).

CS 667. Cooperative Education. 1-3 Credits.

CS 669. Practicum. 1-3 Credits.

CS 690. Colloquium. 1 Credit.

Lecture 1 hour; 1 credit. A one-hour weekly lecture given by faculty from Old Dominion and other institutions.

CS 695. Topics. 1-3 Credits.

CS 697. Independent Study in Computer Science. 1-3 Credits.

1-3 credits. Prerequisite: permission of the instructor.

CS 698. Master’s Project. 3 Credits.

3 credits. Departmental permission required.

CS 699. Thesis Research. 3 Credits.

3 credits. Departmental permission required.

CS 710. Applied Algorithms. 3 Credits.

Lecture 3 hours; 3 credits. Prerequisite: CS 600. Laboratory work required. The course will involve solving two or three comprehensive projects anchored in computer science and engineering. Possible topics for projects include: computational issues in network design and analysis; scheduling problems and applications; digital geometry and pattern recognition; image processing and computer vision applications; robotics. The basic thrust is to demonstrate the usefulness and power of algorithm design and analysis in solving real-life problems.

CS 711. Software Validation. 3 Credits.

Lecture 3 hours; 3 credits. Laboratory work required. The most common path to improved confidence in a program is via testing. This course explores divergent and sometimes conflicting approaches to conducting testing and to measuring the resulting confidence. Topics include the theoretical basis for testing, common testing methods, statistical measures of program reliability, and the relationship between correctness and reliability.

CS 712. Stochastic Modeling. 3 Credits.

Stochastic processes are ways of quantifying the dynamic relationship of sequences of random events. This course will expose the participants to standard concepts and methods of stochastic modeling, as well as the rich diversity of applications. Topics include, but not limited to, Markov chains in discrete and continuous time, Poisson processes, renewal theory and branching processes.

CS 713. Modeling and Simulation in Computational Biology. 3 Credits.

This course covers current problems and state of computations in bimolecular modeling, molecular mechanics including force field origin, composition, and evaluation techniques, and simulation techniques including conformational sampling, geometry optimization, molecular dynamics and Brownian dynamics.

CS 714. Monte Carlo Simulation. 3 Credits.

This course serves to illustrate important principles in Monte Carlo simulation methods and to demonstrate their power in applications. The course covers Metropolis-Hastings algorithm, Gibbs sampler, Markov Chain Monte Carlo, acceptance-rejection method, Monte Carlo integration, quasi-Monte Carlo, random walk, and random number generation.

CS 715. Medical Image Computing and Simulation. 3 Credits.

This course combines the theory and practices in medical imaging computing with emphasis on Image Guided Therapy (IGT). Topics include rigid registration, approximation/interpolation, segmentation, no-rigid registration, image-to-mesh conversion, real time parallel computing, software development for medical applications and solution of large sparse linear systems.

CS 716. Communication Networks Simulation and Evaluation. 3 Credits.

This course introduces the foundations and the application of computer network simulations. Topics include the modeling of real-world networks with specific devices and protocols, the identification of key performance parameters, the test of performance and the verification and optimization using comparisons of measured and simulated data.

CS 722. Machine Learning. 3 Credits.

This course presents both the foundational and the practical aspects of modeling, analyzing, and mining of computerized data sets, including classification, regression, clustering, semi-supervised learning, structured sparsity learning, etc. The course assignments are designed to contain both theoretical and programming components in order to train students to gain hands-on-experience.

CS 723. Introduction to Bioinformatics. 3 Credits.

This course introduces the fundamental knowledge in bioinformatics and the current advances in selected directions. The topics include: fundamental concepts and experimental techniques in molecular biology, computational methods in genomic sequence comparison and analysis, and computational methods in molecular structural modeling.

CS 724. High Performance Computing and Big Data. 3 Credits.

This course introduces parallel and distributed programming principles and has emphasis on hands-on programming and deploying high-performance computing applications with big data for different science and engineering disciplines. Topics includes programming on emerging technologies such as NVIDIA GPU, Hadoop Framework, and Apache Spark for large scale data analytics and mining applications.

CS 725. Information Visualization. 3 Credits.

This course covers the theory and application of information visualization. Research on graph design, visual perception, cognition, and interaction will be covered. Research and practical techniques for the display of graphs, networks, hierarchies, text, and complex multivariate data will be addressed. Course projects will require the development of interactive web-based visualizations.

CS 726. Application of Graphs in Bioinformatics. 3 Credits.

This course links the fundamental concepts and algorithms of graphs with the actual biological problems. Various biological problems will be selected to discuss the formulation of the graph, the graph algorithms, and the performance analysis.

CS 734. Introduction to Information Retrieval. 3 Credits.

Laboratory work required. Theory and engineering of information retrieval in the context of developing web-based search engines. Topics include issues related to crawling, ranking, query processing, retrieval models, evaluation, clustering, machine learning, and other aspects related to building web search engines. Students will perform a mix of hands-on development and coding, as well as theoretical exploration of the research literature.

CS 744. Performance Evaluation of Computer Systems and Networks. 3 Credits.

Lecture 3 hours; 3 credits. The course will introduce some of the commonly used techniques in the performance evaluation of computing systems. Students will be exposed to a variety of analytical and simulation tools used in this field. The applicability of the techniques will be illustrated through case studies.

CS 751. Introduction to Digital Libraries. 3 Credits.

Lecture 3 hours; 3 credits. Digital Libraries (DLs) are an increasingly popular research area that encompass more than traditional information retrieval or database methods and techniques. The course will cover a brief history of DL development, with emphasis on World Wide Web implementations. Case studies will be performed on various DLs. The class will focus heavily on project work. At the end of the course, students will be prepared to develop, evaluate, or apply digital library technologies in their work environment. Topics include: Repositories; Distributed Searching; Metadata Harvesting; Preservation, Reference Linking and Citation Analysis.

CS 752. Wireless Communications and Mobile Computing. 3 Credits.

Lecture 3 hours; 3 credits. This course looks at fundamental issues in the area of wireless networks and mobile computing. The course material is organized around the following broad themes: Basics of mobile and wireless communications; Cellular communications: Bandwidth allocation and reservation, Location management, Call admission strategies and QoS issues: Mobile IP and Mobile TCP; Mobile Ad-Hoc NETworks (MANET): Routing, Multimedia and QoS support; Sensor networks.

CS 762. Memory Analysis and Forensics. 3 Credits.

This course is based on the Intel processor architecture employed in Windows, Linux and MacOS operating systems. Students will learn how memory is assigned to processes and how it is addressed, how memory data structures can be exploited by malware, and what is available for forensic analysis of memory. The course involves several hands-on lab work on recognizing process data structures in memory, memory acquisition, and use of a set of tools to catch the malware while preserving evidence from live memory analysis. Course requires a set of assigned reading and lab work. Prerequisite: CS 270, CS 471, or instructor's permission.

CS 771. Advanced Operating Systems. 3 Credits.

Lecture 3 hours; 3 credits. This course covers principles, design decisions, design techniques, policies, and mechanisms in the design and implementation of general-purpose multiprogramming and distributed operating systems. Topics to be covered include: concurrency, interprocess communication, threads, access control, protection and authentication, multiprocessor operating systems.

CS 772. Network Security: Concepts, Protocols and Programming. 3 Credits.

Lecture 3 hours; 3 credits. This course deals with the basic protocols, techniques and programming issues to secure internet applications and traffic. Topics include: Cryptographic algorithms tools and concepts; Secure Socket Layer (SSL), Transport Layer Security (TLS) and IPSec protocols; Securing Internet Applications: HTTP, SMTP, UDP and multicast; Hands on socket programming using C and Java.

CS 773. Data Mining and Security. 3 Credits.

Introduction to data mining; Algorithms including naive Bayes, Decision Trees and Rules, Association Rules, Linear classification, and Clustering; Cross validation, Lift charts, ROC Curves; SVM, Bayesian networks, K-means clustering; Data transformation; PCA; Ensemble Learning; Application of data mining to security and privacy including authentication, authorization, and intrusion detection; Privacy-preserving data mining. Prerequisite: CS 471 and CS 455 or CS 555.

CS 774. Distributed System Security with .Net. 3 Credits.

The course provides detailed coverage of security aspects of ASP.Net. It examines distributed system architectures, ASP.Net security framework, cyber attacks, system vulnerabilities, C# and ADO.Net. It also discusses windows and forms authentication, authorization, impersonation, code obfuscation, and advanced concepts, including secure web services, runtime security, operating system security, code access security, role-based access control, and attribute-based access control. Finally, cryptography, XACML and security policies as implemented in ASP.Net are covered. Prerequisites: CS 471 and CS 555.

CS 775. Distributed Systems. 3 Credits.

Lecture 3 hours; 3 credits. This course deals with the design issues in distributed computing systems and will discuss the motivation for building distributed systems, various algorithms and protocols proposed in literature for system operability, and some of the experimental distributed systems that have been built in the last few years. Special attention will be paid to the fault-tolerant and performance aspects of these systems. The project component of this course will enable students to get hands-on experience of implementing some of the distributed algorithms.

CS 776. Architectural Support for Cloud Computing. 3 Credits.

Cloud computing requires a great deal of architectural support. This course investigates various types of architectural support that make cloud computing almost infinitely scalable while maintaining efficiency. The course will look at various types of support provided by Google, Amazon, Facebook, Yahoo! and others.

CS 778. Networked Multimedia Systems. 3 Credits.

Lecture 3 hours; 3 credits. This course will introduce some of the technical foundations for capturing, transmitting, presentation and storage of continuous multimedia. Students will explore the applications of multimedia and techniques in some areas such as group collaboration and network based education. Topics covered include: Architectures and issues for distributed Multimedia Systems Support for real-time multimedia applications, quality-of-service, synchronization, and presentation of multiple multimedia streams.

CS 779. Design of Network Protocols. 3 Credits.

Understanding the design, implementation and performance of network protocols using TCP/IP protocol suite as a case study. The students will have hands-on experience on low-level tools and will access and study the source code of these protocols and writing networking software applications. Topics include: socket interface, IPv4 and IPv6, routing, UDP, multicasting and IGMP, TCP specification, implementation and performance. Prerequisite: CS 455/CS 555 or equivalent.

CS 791. Graduate Seminar. 1-3 Credits.

1-3 credits. Prerequisite: permission of the instructor.

CS 795. Topics in Computer Science. 1-3 Credits.

Topics in computer science.

CS 796. Topics in Computer Science. 1-3 Credits.

1-3 credits. Prerequisite: permission of the instructor.

CS 810. Applied Algorithms. 3 Credits.

Lecture 3 hours; 3 credits. Prerequisite: CS 600. Laboratory work required. The course will involve solving two or three comprehensive projects anchored in computer science and engineering. Possible topics for projects include: computational issues in network design and analysis; scheduling problems and applications; digital geometry and pattern recognition; image processing and computer vision applications; robotics. The basic thrust is to demonstrate the usefulness and power of algorithm design and analysis in solving real-life problems.

CS 811. Software Validation. 3 Credits.

Lecture 3 hours; 3 credits. Laboratory work required. The most common path to improved confidence in a program is via testing. This course explores divergent and sometimes conflicting approaches to conducting testing and to measuring the resulting confidence. Topics include the theoretical basis for testing, common testing methods, statistical measures of program reliability, and the relationship between correctness and reliability.

CS 812. Stochastic Modeling. 3 Credits.

Stochastic processes are ways of quantifying the dynamic relationship of sequences of random events. This course will expose the participants to standard concepts and methods of stochastic modeling, as well as the rich diversity of applications. Topics include, but not limited to, Markov chains in discrete and continuous time, Poisson processes, renewal theory and branching processes.

CS 813. Modeling and Simulation in Computational Biology. 3 Credits.

This course covers current problems and state of computations in bimolecular modeling, molecular mechanics including force field origin, composition, and evaluation techniques, and simulation techniques including conformational sampling, geometry optimization, molecular dynamics and Brownian dynamics.

CS 814. Monte Carlo Simulation. 3 Credits.

This course serves to illustrate important principles in Monte Carlo simulation methods and to demonstrate their power in applications. The course covers Metropolis-Hastings algorithm, Gibbs sampler, Markov Chain Monte Carlo, acceptance-rejection method, Monte Carlo integration, quasi-Monte Carlo, random walk, and random number generation.

CS 815. Medical Image Computing and Simulation. 3 Credits.

This course combines the theory and practices in medical imaging computing with emphasis on Image Guided Therapy (IGT). Topics include rigid registration, approximation/interpolation, segmentation, no-rigid registration, image-to-mesh conversion, real time parallel computing, software development for medical applications and solution of large sparse linear systems.

CS 816. Communication Networks Simulation and Evaluation. 3 Credits.

This course introduces the foundations and the application of computer network simulations. Topics include the modeling of real-world networks with specific devices and protocols, the identification of key performance parameters, the test of performance and the verification and optimization using comparisons of measured and simulated data.

CS 822. Machine Learning. 3 Credits.

This course presents both the foundational and the practical aspects of modeling, analyzing, and mining of computerized data sets, including classification, regression, clustering, semi-supervised learning, structured sparsity learning, etc. The course assignments are designed to contain both theoretical and programming components in order to train students to gain hands-on-experience.

CS 823. Introduction to Bioinformatics. 3 Credits.

This course introduces the fundamental knowledge in bioinformatics and the current advances in selected directions. The topics include: fundamental concepts and experimental techniques in molecular biology, computational methods in genomic sequence comparison and analysis, and computational methods in molecular structural modeling.

CS 824. High Performance Computing and Big Data. 3 Credits.

This course introduces parallel and distributed programming principles and has emphasis on hands-on programming and deploying high-performance computing applications with big data for different science and engineering disciplines. Topics include programming on emerging technologies such as NVIDIA GPU, Hadoop Framework, and Apache Spark for large scale data analytics and mining applications.

CS 825. Information Visualization. 3 Credits.

This course covers the theory and application of information visualization. Research on graph design, visual perception, cognition, and interaction will be covered. Research and practical techniques for the display of graphs, networks, hierarchies, text, and complex multivariate data will be addressed. Course projects will require the development of interactive web-based visualizations.

CS 826. Application of Graphs in Bioinformatics. 3 Credits.

This course links the fundamental concepts and algorithms of graphs with the actual biological problems. Various biological problems will be selected to discuss the formulation of the graph, the graph algorithms, and the performance analysis.

CS 834. Introduction to Information Retrieval. 3 Credits.

Laboratory work required. Theory and engineering of information retrieval in the context of developing web-based search engines. Topics include issues related to crawling, ranking, query processing, retrieval models, evaluation, clustering, machine learning, and other aspects related to building web search engines. Students will perform a mix of hands-on development and coding, as well as theoretical exploration of the research literature.

CS 844. Performance Evaluation of Computer Systems and Networks. 3 Credits.

Lecture 3 hours; 3 credits. The course will introduce some of the commonly used techniques in the performance evaluation of computing systems. Students will be exposed to a variety of analytical and simulation tools used in this field. The applicability of the techniques will be illustrated through case studies.

CS 851. Introduction to Digital Libraries. 3 Credits.

Lecture 3 hours; 3 credits. Digital Libraries (DLs) are an increasingly popular research area that encompass more than traditional information retrieval or database methods and techniques. The course will cover a brief history of DL development, with emphasis on World Wide Web implementations. Case studies will be performed on various DLs. The class will focus heavily on project work. At the end of the course, students will be prepared to develop, evaluate, or apply digital library technologies in their work environment. Topics include: Repositories; Distributed Searching; Metadata Harvesting; Preservation, Reference Linking and Citation Analysis.

CS 852. Wireless Communications and Mobile Computing. 3 Credits.

Lecture 3 hours; 3 credits. This course looks at fundamental issues in the area of wireless networks and mobile computing. The course material is organized around the following broad themes: Basics of mobile and wireless communications; Cellular communications: Bandwidth allocation and reservation, Location management, Call admission strategies and QoS issues: Mobile IP and Mobile TCP; Mobile Ad-Hoc NETworks (MANET): Routing, Multimedia and QoS support; Sensor networks.

CS 862. Memory Analysis and Forensics. 3 Credits.

This course is based on the Intel processor architecture employed in Windows, Linux and MacOS operating systems. Students will learn how memory is assigned to processes and how it is addressed, how memory data structures can be exploited by malware, and what is available for forensic analysis of memory. The course involves several hands-on lab work on recognizing process data structures in memory, memory acquisition, and use of a set of tools to catch the malware while preserving evidence from live memory analysis. Course requires a set of assigned reading and lab work. Prerequisite: CS 270, CS 471, or instructor's permission.

CS 871. Advanced Operating Systems. 3 Credits.

Lecture 3 hours; 3 credits. This course covers principles, design decisions, design techniques, policies, and mechanisms in the design and implementation of general-purpose multiprogramming and distributed operating systems. Topics to be covered include: concurrency, interprocess communication, threads, access control, protection and authentication, multiprocessor operating systems.

CS 872. Network Security: Concepts, Protocols and Programming. 3 Credits.

Lecture 3 hours; 3 credits. This course deals with the basic protocols, techniques and programming issues to secure internet applications and traffic. Topics include: Cryptographic algorithms tools and concepts; Secure Socket Layer (SSL), Transport Layer Security (TLS) and IPSec protocols; Securing Internet Applications: HTTP, SMTP, UDP and multicast; Hands on socket programming using C and Java.

CS 873. Data Mining and Security. 3 Credits.

Introduction to data mining; Algorithms including naive Bayes, Decision Trees and Rules, Association Rules, Linear classification, and Clustering; Cross validation, Lift charts, ROC Curves; SVM, Bayesian networks, K-means clustering; Data transformation; PCA; Ensemble Learning; Application of data mining to security and privacy including authentication, authorization, and intrusion detection; Privacy-preserving data mining. Prerequisite: CS 471 and CS 455 or CS 555.

CS 874. Distributed System Security with .Net. 3 Credits.

The course provides a detailed coverage of security aspects of ASP.Net. It examines distributed system architectures, ASP.Net security framework, cyber attacks, system vulnerabilities, C# and ADO.Net. It also discusses windows and forms authentication, authorization, impersonation, and code obfuscation, and advanced concepts, including secure web services, runtime security, operating system security, code access security, role-based access control, and attribute-based access control. Finally, cryptography, XACML and security policies as implemented in ASP.Net are covered. Prerequisites: CS 471 and CS 555.

CS 875. Distributed Systems. 3 Credits.

Lecture 3 hours; 3 credits. This course deals with the design issues in distributed computing systems and will discuss the motivation for building distributed systems, various algorithms and protocols proposed in literature for system operability, and some of the experimental distributed systems that have been built in the last few years. Special attention will be paid to the fault-tolerant and performance aspects of these systems. The project component of this course will enable students to get hands-on experience of implementing some of the distributed algorithms.

CS 876. Architectural Support for Cloud Computing. 3 Credits.

Cloud computing requires a great deal of architectural support. This course investigates various types of architectural support that make cloud computing almost infinitely scalable while maintaining efficiency. The course will look at various types of support provided by Google, Amazon, Facebook, Yahoo! and others.

CS 878. Networked Multimedia Systems. 3 Credits.

Lecture 3 hours; 3 credits. This course will introduce some of the technical foundations for capturing, transmitting, presentation and storage of continuous multimedia. Students will explore the applications of multimedia and techniques in some areas such as group collaboration and network based education. Topics covered include: Architectures and issues for distributed Multimedia Systems Support for real-time multimedia applications, quality-of-service, synchronization, and presentation of multiple multimedia streams.

CS 879. Design of Network Protocols. 3 Credits.

Understanding the design, implementation and performance of network protocols using TCP/IP protocol suite as a case study. The students will have hands-on experience on low-level tools and will access and study the source code of these protocols and writing networking software applications. Topics include: socket interface, IPv4 and IPv6, routing, UDP, multicasting and IGMP, TCP specification, implementation and performance. Prerequisite: CS 455/CS 555.

CS 891. Graduate Seminar. 1-3 Credits.

1-3 credits. Prerequisite: permission of the instructor.

CS 895. Topics in Computer Science. 1-3 Credits.

Topics in computer science.

CS 896. Topics in Computer Science. 1-3 Credits.

1-3 credits. Prerequisite: permission of the instructor.

CS 899. Doctoral Dissertation. 1-9 Credits.

1-9 credits. Departmental permission required.

CS 998. Master's Graduate Credit. 1 Credit.

This course is a pass/fail course for master's students in their final semester. It may be taken to fulfill the registration requirement necessary for graduation. All master's students are required to be registered for at least one graduate credit hour in the semester of their graduation.

CS 999. Doctoral Graduate Credit. 1 Credit.

This course is a pass/fail course doctoral students may take to maintain active status after successfully passing the candidacy examination. All doctoral students are required to be registered for at least one graduate credit hour every semester until their graduation.