401-3 Computer Architecture. Review of logical circuit design. Hardware description languages. Algorithms for high-speed addition, multiplication and division. Pipelined arithmetic. Implementation and control issues using PLA's and microprogramming control. Cache and main memory design. Input/Output. Introduction to interconnection networks and multiprocessor organization. Prerequisite: CS 320 with a grade of C or better or graduate standing.
CS404 - Autonomous Mobile Robots
404-3 Autonomous Mobile Robots. This course is a comprehensive introduction to modern robotics with an emphasis on autonomous mobile robotics. Fundamentals of sensors and actuators as well as algorithms for top level control are discussed. Multi-robotics and human-robot interaction issues are explored. A group project is an integral part of this course. Prerequisite: CS 330 with a grade of C or better or graduate standing. CS fee: $125.
CS406 - Basic Linux System Admin
406-3 Basic Linux System Administration. This course will be an introduction to the administration of Linux systems, with emphasis on security for networked systems. Topics to be covered include: installation and configuration of Linux distributions, typical maintenance activities, and security measures for networked systems. Students will have access to lab machines for hands on practice. Prerequisite: CS 306 with a grade of C or better or graduate standing.
CS407 - Adv Linux/UNIX Programming
407-3 Advanced Linux/UNIX Programming. This course builds on the knowledge gained in CS 306, to prepare students to do advanced development on Linux/UNIX platforms. The topics studied are critical for achieving high performance in large-scale, high-load networked software systems. These topics include development techniques such as profiling, concurrent programming and synchronization, network programming for high-load servers, advanced I/O alternatives, and IPC such as shared memory. The course will involve the study of code from Open Source projects like Apache and Nginx. The focus will be on the C language, but other languages will also be considered. Students must complete a significant network software project. Prerequisites: CS 306 and CS 335, with grades of C or better, or graduate standing with C language and Linux system programming experience.
CS408 - Applied Cryptography
408-3 Applied Cryptography. This course is a comprehensive introduction to modern cryptography, with an emphasis on the application and implementation of various techniques for achieving message confidentiality, integrity, authentication and non-repudiation. Applications to Internet security and electronic commerce will be discussed. All background mathematics will be covered in the course. Prerequisite: CS 330 with a grade of C or better and MATH 221 or graduate standing.
CS409 - Ethical Hacking
409-3 Ethical Hacking. This course will explore the various means that an intruder has available to gain access to computer resources. We will investigate weaknesses by discussing the theoretical background, and whenever possible, actually performing the attack. We will then discuss methods to prevent/reduce the vulnerabilities. This course is targeted specifically for Certified Ethical Hacking (CEH) exam candidates, matching the CEH exam objectives with the effective and popular Cert Guide method of study. Prerequisite: CS 202 or graduate standing.
CS410 - Computer Security
410-3 Computer Security. A broad overview of the principles, mechanisms, and implementations of computer security. Topics include cryptography, access control, software security and malicious code, trusted systems, network security and electronic commerce, audit and monitoring, risk management and disaster recovery, military security and information warfare, physical security, privacy and copyrights, and legal issues. Prerequisite: CS 306 with a grade of C or better or graduate standing.
CS412 - Programming Distributed Apps
412-3 Programming Distributed Applications. This course uses advanced features of the Java programming language to develop networked, distributed, and web-based applications. Topics covered include, but are not limited to, sockets, datagrams, the Java security model, threads, multi-tier architectures, Java RMI, Java database connectivity, and Java-based mobile agents. Prerequisite: CS 306 with a grade of C or better or graduate standing.
CS413 - Digital Forensics
413-3 Digital Forensics. Cybersecurity has become a ubiquitous concern well beyond finding solutions to post-mortem threat analysis. The course provides a broad overview of security objectives and will cover fundamentals in confidentiality, integrity, and availability. Lectures will offer a broad range of topics on digital forensics. Students will be trained for an investigation mindset. Contemporary tools and techniques for digital forensics and investigations are reviewed. Security for stationary and mobile platforms are foci of current course in both forensic and active modes. There will be multiple hands-on homework and laboratories as well as a practical project as an integral part of this course. Prerequisite: CS 410 or graduate standing.
CS415 - Network Forensics
415-3 Network Forensics. With the proliferation of wireless networks, security is at odds with privacy and integrity. The course provides a broad overview of security strategies for wireless networks. Topics will range from intrusion detection and network security protocols to collaborative computing. Contemporary tools and techniques for wireless network security are reviewed. A hands-on project will be an integral part of this course. Prerequisite: CS 410 or graduate standing.
CS416 - Compiler Construction
416-3 Compiler Construction. Introduction to compiler construction. Design of a simple complete compiler, including lexical analysis, syntactical analysis, type checking, and code generation. Prerequisite: CS 306 and 311 each with a grade of C or better or graduate standing.
CS420 - Distributed Systems
420-3 Distributed Systems. A top-down approach addressing the issues to be resolved in the design of distributed systems. Concepts and existing approaches are described using a variety of methods including case studies, abstract models, algorithms and implementation exercises. Prerequisite: CS 335 or graduate standing.
CS425 - Prin Virtual & Cloud Computing
425-3 Principles of Virtualization and Cloud Computing. Cloud Computing (CC) represents a recent major strategic shift in computing and Information Technology. This course explores fundamental principles, foundational technologies, architecture, design, and business values of CC. Understanding will be reinforced through multiple angles including: analysis of real world case studies, hands-on projects and in-depth study of research developments. Prerequisites: CS 330 with a grade of C or better or graduate standing.
CS430 - Database Systems
430-3 Database Systems. The course concentrates on the relational model, database design, and database programming. Topics include relational model, relational algebra, SQL, constraints and integrity, transaction support, concurrency control, database design, normalization, backup, recovery, and security. A comprehensive product-like project is an integral part of the course. Prerequisite: CS 330 with a grade of C or better or graduate standing.
CS431 - Cyber-Physical Systems
431-3 Cyber-Physical Systems. The goal of this course is to introduce and develop an understanding of the computing and communication for Internet of Things as a subset of Cyber-Physical systems. Connectivity among devices in our daily lives such as WiFi-enabled thermostats, smarts grids, and driverless cars is ushering in an era of sociality that transcends human social networks to machine to machine networks. Prerequisites: CS 306 with a grade of C or better or graduate standing.
CS434 - Learning From Data
434-3 Learning From Data. An introduction to classical machine learning theory and practical techniques. Topics to be covered include computational learning theory (VC theory), linear classification and regression models, SVMs and kernel methods, decision trees, the bias-variance tradeoff, overfitting, and regularization. Prerequisites: CS 330 with a grade of C or better or graduate standing.
CS435 - Software Engineering
435-3 Software Engineering. Principles, practices and methodology for development of large software systems. Object-oriented principles, design notations, design patterns and coping with changing requirements in the software process. Experiences with modern development tools and methodologies. A team project is an integral part of this course. Prerequisite: CS 330 with a grade of C or better or graduate standing; CS 306 with a grade of C or better recommended.
CS436 - Artificial Intelligence I
436-3 Artificial Intelligence I. Search and heuristics, problem reduction. Predicate calculus, automated theorem proving. Knowledge representation. Applications of artificial intelligence. Parallel processing in artificial intelligence. Prerequisite: CS 311 and 330 each with a grade of C or better or graduate standing.
CS437 - Machine Learn & Soft Computing
437-3 Machine Learning and Soft Computing. An introduction to the field of machine learning and soft computing. It covers rule-based expert systems, fuzzy expert systems, artificial neural networks, evolutionary computation, and hybrid systems. Students will develop rule-based expert systems, design a fuzzy system, explore artificial neural networks, and implement genetic algorithms. Prerequisite: CS 330 with a grade of C or better or graduate standing.
CS438 - Bioinformatics Algorithms
438-3 Bioinformatics Algorithms. This course is an introductory course on bioinformatics algorithms and the computational ideas that have driven them. The course includes discussions of different techniques that can be used to solve a large number of practical problems in biology. Prerequisite: CS 330 with a grade of C or better or graduate standing.
CS440 - Computer Networks
440-3 Computer Networks. Design and analysis of computer communication networks. Topics to be covered include queuing systems, data transmission, data link protocols, topological design, routing, flow control, security and privacy, and network performance evaluation. Prerequisite: CS 330 with a grade of C or better or graduate standing; CS 306 recommended.
CS441 - Mobile & Wireless Computing
441-3 Mobile and Wireless Computing. Concepts of mobile and wireless systems are presented. These concepts include, but are not limited to, Routing and Medium Access for Mobile Ad hoc and Wireless Sensor Networks, Mobile IP, Wireless LAN and IEEE 802.11. Hands-on group lab experience is an integral component in the course. Prerequisite: CS 330 with a grade of C or better, or graduate standing or consent of the instructor.
CS447 - Introduction to Graph Theory
447-3 Introduction to Graph Theory. (Same as MATH 447) Graph theory is an area of mathematics which is fundamental to future problems such as computer security, parallel processing, the structure of the World Wide Web, traffic flow and scheduling problems. It also plays an increasingly important role within computer science. Topics include: trees, coverings, planarity, colorability, digraphs, depth-first and breadth-first searches. Prerequisite: MATH 349 with C or better.
CS449 - Intro to Combinatorics
449-3 Introduction to Combinatorics. (Same as MATH 449) This course will introduce the student to various basic topics in combinatorics that are widely used throughout applicable mathematics. Possible topics include: elementary counting techniques, pigeonhole principle, multinomial principle, inclusion and exclusion, recurrence relations, generating functions, partitions, designs, graphs, finite geometry, codes and cryptography. Prerequisite: MATH 349 with C or better.
CS451 - Theory of Computing
451-3 Theory of Computing. The fundamental concepts of the theory of computation including finite state acceptors, formal grammars, Turing machines, and recursive functions. The relationship between grammars and machines with emphasis on regular expressions and context-free languages. Prerequisite: CS 311 and 330 each with a grade of C or better or graduate standing.
CS455 - Adv Alg Design & Analysis
455-3 Advanced Algorithm Design and Analysis. An in-depth treatment of the design, analysis and complexity of algorithms with an emphasis on problem analysis and design techniques. Prerequisites: CS 330 with a grade of C or better or graduate standing.
CS471 - Optimization Techniques
471-3 Optimization Techniques. (Same as MATH 471) Introduction to algorithms for finding extreme values of nonlinear multivariable functions with or without constraints. Topics include: convex sets and functions; the arithmetic-geometric mean inequality; Taylor's theorem for multivariable functions; positive definite, negative definite, and indefinite matrices; iterative methods for unconstrained optimization. Prerequisite: MATH 221 and MATH 250 with C or better.
CS472 - Linear Programming
472-3 Linear Programming. (Same as MATH 472) Introduction to finding extreme values of linear functionals subject to linear constraints. Topics include: recognition, formulation, and solution of real problems via the simplex algorithm; development of the simplex algorithm; artificial variables; the dual problem and duality theorem; complementary slackness; sensitivity analysis; and selected applications of linear programming. Prerequisite: MATH 221 with C or better.
CS475 - Numerical Analysis I
475-3 Numerical Analysis I. (Same as MATH 475) Introduction to theory & techniques for computation with digital computers. Topics include: solution of nonlinear equations; interpolation & approximation; solution of systems of linear equations; numerical integration. Students will use MATLAB to study the numerical performance of the algorithms introduced in the course. Prerequisites: MATH 221 and MATH 250 with C or better.
CS476 - Numerical Analysis II
476-3 Numerical Analysis II. (Same as MATH 476) Continuation of CS 475. Topics include: solution of ordinary differential equations; computation of eigenvalues and eigenvectors; and solution of partial differential equations. Students will use MATLAB to study the numerical performance of the algorithms introduced in the course. Prerequisites: MATH 305 and MATH 475 with C or better.
CS480 - Computational Statistics II
480-3 Computational Statistics II. This course utilizes computational and graphical approaches to solve statistical problems. A comprehensive coverage on modern and classical methods of statistical computing will be given. Case studies in various disciplines such as science, engineering and education will be discussed. Various topics such as numerical integration and simulation, optimization and maximum likelihood estimation, density estimation and smoothing as well as re-sampling will be presented. Students will be able to create graphical and numerical display based on their data analysis results using R programming language. Prerequisite: MATH 250 and CS 306 or CS 330 with a grade of C or better or graduate standing.
CS484 - User Interface Dsgn & Devlpmnt
484-3 User Interface Design and Development. Problems and processes in the design of highly usable systems. Understanding stakeholders, requirements, tasks, prototyping, evaluation, guidelines and design process and heuristics. Interactive software concepts and implementation considerations. A group project is an integral part of this course. Prerequisite: CS 306 with a grade of C or better or graduate standing.
CS485 - Computer Graphics
485-3 Computer Graphics. Principles and techniques of computer graphics. Interactive graphics software development using a modern graphics standard. Topics include: primitives, transforms, clipping, modeling, viewing, rendering, texture, animation and ray tracing. A group project is an integral part of this course. Prerequisite: CS 306 with a grade of C or better or graduate standing; MATH 150 and 221 are recommended.
CS487 - Software Game Development
487-3 Software Aspects of Game Development. This course focuses on software implementation and development aspects of game production including: software process, system architecture, frameworks, entity management and interaction design, game design, production and business issues as well as technical foundations in graphics modeling and rendering, collision detection, physics, artificial intelligence, and multiplayer techniques. Prerequisite: CS 330 with a grade of C or better or graduate standing.
CS491 - Special Topics
491-1 to 6 (1 to 3 per topic) Special Topics. Selected advanced topics from the various fields of computer science.
CS492 - Special Problems
492-1 to 6 (1 to 3 per semester) Special Problems. Individual projects involving independent work. Special approval needed from the instructor.
CS493 - Seminar
493-1 to 4 Seminar. Supervised study. Preparation and presentation of reports. Special approval needed from the instructor.
CS501 - Adv Computer Architecture
501-3 Advanced Computer Architecture. Hardware and software elements of multiprocessors, multicomputers, pipeline and array machines, data flow architecture and other state-of-the-art architectures. Design principles related to machine structures, interconnection networks, control software and hardware, data storage and access. Prerequisite: CS 401.
CS503 - Fault Tolerant Compt Systems
503-3 Fault-Tolerant Computing Systems. An introduction to different aspects of fault-tolerance in computing systems. Redundancy techniques with an emphasis on information redundancy, software fault-tolerance, coding techniques, algorithm-based fault-tolerance, fault-tolerant interconnection network architecture, DFT techniques, and quantitative evaluation methods. Prerequisite: CS 401.
CS510 - Wireless and Network Security
510-3 Wireless and Network Security. Advanced security concepts of distributed systems and wireless networks are presented. Topics include IEEE 802.11 security, Wireless Encryption and Authentication, Key Management in Networks, Distributed Denial of Service Attacks, Routing Security, Intrusion Detection and Mobile Code Security. Prerequisite: CS 410 with a grade of C or better or consent of the instructor.
CS511 - Forml Spec Progrmmng Lang
511-3 Formal Specification of Programming Languages. A survey of modeling techniques and Meta languages for the formal specification of the syntax and semantics of high-level programming languages. Prerequisite: CS 311.
CS512 - Declarative Programming
512-3 Declarative Programming. An advanced level course on nonprocedural programming with emphasis on logic programming, pure functional programming, and the characteristics of the declarative style common to these two paradigms. Topics include logic programming, functional programming, implementation consideration for each along with current research topics in the areas. Prerequisite: CS 311.
CS514 - Advanced Operating Systems
514-3 Advanced Operating Systems. Rigorous treatment of advanced topics in operating systems. Multiprocessors and distributed operating systems. Highly concurrent machines. Performance analysis of memory management and scheduling algorithms. Recovery techniques in distributed computation. Security in operating systems. Prerequisite: CS 335 with a grade of C or better.
CS516 - Advanced Compilers
516-3 Advanced Compilers. A continuation of 416 including advanced topics in lexical and syntax analysis, error recovery, sematic analysis, code optimization and compiler compilers. Prerequisite: CS 416.
CS520 - Adv Topic Parallel Distrb Comp
520-3 Advanced Topics in Parallel & Distributed Computing. An advanced treatment of parallel and distributed computing; review of hardware and software considerations for parallel computation; development and analysis of parallel algorithms (with particular attention to the communication and synchronization costs associated with parallel algorithms); effect of granularity on performance; a comparison of the parallel and distributed programming paradigms including a detailed study of the central features of each approach; software systems for distributed computing including exposure to one or more distributed programming environments; the direction of parallel computing as suggested by recent, high level parallel languages; parallelizing serial programs; parallelizing compilers; future directions of parallel and distributed computing systems. The course will include a student project. Prerequisite: CS 420.
CS525 - Security Issues Cloud Comp
525-3 Security Issues in Cloud Computing. This course offers a survey of security and privacy issues in Cloud Computing systems along with an overview of current best practices and available technologies. Threat model as well as practical applications of secure Cloud Computing are explored. Prerequisite: CS 410 or graduate standing.
CS530 - Advanced Database Systems
530-3 Advanced Database Systems. A detailed treatment of advanced topics in data base systems including, but not limited or restricted to, relational database theory, query optimization, recovery techniques, concurrency control, distributed database systems, security and integrity and database machines. Prerequisite: CS 430.
CS531 - Security Cyber-Phys Systems
531-3 Security in Cyber-Physical Systems. The course covers introductory topics in cyber-physical systems security. The goal is to expose students to fundamental security primitives specific to cyber-physical systems and to apply them to a broad range of current and future security challenges. Various tools and techniques used by hackers to compromise computer systems or otherwise interfere with normal operations are explored using tools that are unique to interacting with cyber-physical systems. Restricted to graduate standing or consent of the instructor.
CS532 - Topics in Information Systems
532-3 to 6 Topics in Information Systems. A detailed study of two or three topics relevant to information systems. Topics may include but are not limited to sorting, searching, information retrieval and automatic text processing, database security and encryption, distributed databases and data communication. Prerequisite: CS 430. Special approval needed from the instructor.
CS533 - Data Mining/Big Data Analysis
533-3 Data Mining and Big Data Analysis. This course provides a series of comprehensive and in-depth lectures on the core techniques in data mining and knowledge discovery; addresses the unique issues of big data; and discusses potential applications of data mining particularly on big data analysis. Major topics include: data preparation, association mining, classification (and prediction), clustering, characteristics and challenges of big data, and strategies of big data mining and analysis. Prerequisites: CS 330 and CS 430 with grades of C or better or consent of instructor.
CS534 - Big Data Management/Analytics
534-3 Big Data Management and Analytics. This course provides comprehensive and in-depth discussions of big data management and analytics. Main subjects include computation and programming models, management and analytics algorithms, and platforms/frameworks especially designed for big data. The objective of this course is to equip students with the ability to understand, use, and build big data management and analytics systems or tools. Prerequisites: CS 430 with a grade of C or better or graduate standing.
CS536 - Artificial Intelligence II
536-3 Artificial Intelligence II. Theorem proving, the Resolution Principle, strategies, and achievements. Program verification. Natural language processing. Other selected topics. Prerequisite: CS 436.
CS537 - Adv Topics in Expert Systems
537-3 Advanced Topics in Expert Systems. This course is designed to provide students with advanced topics in expert systems theory. Topics covered include: knowledge representation, methods of inference, reasoning under uncertainty, and inexact reasoning (fuzzy logic). A practical introduction to expert systems programming serves to reinforce and clarify the theoretical concepts. Prerequisite: CS 330 or consent of instructor.
CS538 - Game Theory in Networks
538-3 Game Theory in Networks. Game theoretic concepts apply whenever actions of several players are interdependent. This course will provide an introduction to classic game theory and strategic thinking including dominance, Nash equilibrium, and stability. Social choice, social learning, and online mechanism design are then discussed. We will examine how game theoretic concepts can be used in developing reasoning strategies, i.e., algorithms. Application of game theoretic framework to telecommunication and human networks is an integral part of this course. Restricted to graduate standing or consent of instructor.
CS539 - Agents & Multiagent Systems
539-3 Agents and Multiagent Systems. This is an advanced treatment of fundamental concepts in the design of intelligent autonomous agents and agent systems. Classic agent theories, architectures, algorithms, and languages are discussed. An agent-based project is an integral part of this course. Restricted to graduate standing or consent of instructor.
CS540 - Adv Comp Networks
540-3 Advanced Computer Networks. Topics include routing protocols used in internet; data compression techniques; telecommunication systems - its services, architecture and protocols; high speed networks; routing protocols in mobile ad-hoc networks; and a detailed performance analysis of different window flow control and congestion control mechanisms using queuing theory. Prerequisite: CS 440 with a grade of C or better, or consent of the instructor.
CS553 - Formal Languages & Automata
553-3 Formal Languages and Automata. The Chomsky hierarchy of formal grammars and the corresponding classes of automata. Turing machines and basic concepts of computability. Recursive and recursively enumerable languages. Closure properties. Undecidable problems about Turing machines and context-free languages. Deterministic context-free languages and the construction of LR parsers. Prerequisite: CS 451.
CS555 - Computability & Complexity
555-3 Computability and Complexity. Turing machines and other models of computation. Computable functions. Church's thesis. Solvable and unsolvable problems. Introduction to complexity theory including the classes P and NP. Polynomial time approximation algorithms for NP-complete problems. Prerequisite: CS 451.
CS572 - Adv Topics in Num Analysis
572-1 to 12 Advanced Topics in Numerical Analysis. (Same as MATH 572) Selected advanced topics in Numerical Analysis chosen from such areas as: approximation theory; spline theory; special functions; wavelets; numerical solution of initial value problems; numerical solution of boundary value problems; numerical linear algebra; numerical methods of optimization; and functional analytic methods. Special approval needed from the instructor.
CS585 - Adv Top in Computer Graphics
585-3 Advanced Topics in Computer Graphics. Study of computer graphics for realistic image synthesis. Object modeling and associated date structures. Advanced rendering techniques such as raytracing and radiosity. Efficiency considerations. Image composition and compression. Current advances and research problems in realistic computer graphics. Prerequisite: CS 485.
CS586 - Pattern Recognition
586-3 Pattern Recognition. An introduction to the area of pattern recognition and data science. This course will cover basic and advanced theories, algorithms, and practical solutions of statistical pattern recognition. It covers bayesian learning, parametric and non-parametric learning, data clustering, component analysis, boosting techniques, sequential data, reinforcement learning, and deep learning with neural networks.
CS590 - Readings
590-1 to 6 Readings. Supervised readings in selected subjects. Graded S/U only. Special approval needed from the instructor.
CS591 - Special Topics
591-1 to 9 (1 to 3 per topic) Special Topics. Selected advanced topics from the various fields of computer science. Repeatable on different topics toward degree credit.
CS593 - Seminar
593-1 to 4 Seminar. Preparation and presentation of reports. Graded S/U only. Special approval needed from the instructor.
CS598 - Graduate Project
598-3 to 9 Graduate Project. A practical exercise in the design, implementation, documentation and deployment of a project. A project may be completed through internship, work/study, or a supervised project. For Ph.D. students only, an internship could include face-to-face or online teaching.
CS599 - Thesis
599-3 to 9 Thesis. Special approval needed from the instructor.
CS600 - Doctoral Dissertation
600-1 to 24 (1 to 9 per semester) Doctoral Dissertation. Dissertation research. Hours and credit to be arranged by the student's academic advisor. Graded S/U only. Restricted to admission to Ph.D. in computer science program.
CS601 - Continuing Enrollment
601-1 per semester Continuing Enrollment. For those graduate students who have not finished their degree programs and who are in the process of working on their dissertation, thesis, or graduate project. The student must have completed a minimum of 24 hours of dissertation research, or the minimum thesis or graduate project hours before being eligible to register for this course. Concurrent enrollment in any other course is not permitted. Graded S/U or DEF only.