Course Descriptions

CS 5014 - Research Methods in Computer Science
Preparation for research in computer science. Technical communication skills. Design and evaluation of experiments. The research process. (3H,3C)

CS 5024 - Ethics and Professionalism in Computer Science
Ethical implications and consequences of computing technology applied to algorithmic decision making, security, privacy, autonomous systems. Ethical frameworks. Application of such frameworks to relevant current topics. Formulating, reasoning about, and communicating positions on ethical topics related to computing technology. Diversity and bias as it relates to information technology. Ethical conduct of research and development of intellectual property. Pre: Graduate standing. (3H,3C)

CS 5040 - Intermediate Data Structures and Algorithm Analysis
Data structures and analysis of data structure and algorithm performance.  Sorting, searching, hashing, and advanced tree structures and algorithms.  File system organization and access methods.  Course projects develop advanced problem-solving, design, and implementation skills. Pre: Graduate standing in Computer Science and an undergraduate second semester programming course. (3H,3C)

CS 5044 - Object-Oriented Programming with Java
Object-oriented programming concepts and the Java programming language. The application of design strategies, notations, and patterns related to object-oriented systems. Techniques and libraries for developing applications related to the World Wide Web. Credit will not be given for both 2704 and 5044. Not for Computer Science major or minor credit; not for graduate credit for CSA or INFS programs. Pre: Proficiency in a high-level programming language (e.g., FORTRAN, C, C++, or Java) equivalent to 1044 and prior course work, practical training, or work experience related to developing computer software and systems. (3H,3C)

CS 5045-6 - Computation for the Life Sciences
Fundamentals of computer science, including specific programming languages; programming language syntax and semantics; abstraction and object-oriented programming; data structures; algorithms and algorithm analysis; databases; software engineering; data preprocessing; and machine learning. Background in data sciences needed by STEM graduate students but not having a computer science background. Not for CS major or minor credit; not for graduate credit in CSA program. Pre: Graduate standing for 5045. Pre: 5045 for 5046. (3H,3C)

CS 5104 - Computability and Formal Languages
Formal theory of computability, the halting problem, models of computation, and Church's thesis, and formal languages. (3H,3C)

CS 5114 - Theory of Algorithms
Methods for constructing and analyzing algorithms. Measures of computational complexity, determination of efficient algorithms for a variety of problems such as searching, sorting and pattern matching. Geometric algorithms, mathematical algorithms, and theory of NP-completeness. (3H,3C) Pre: CS3114

CS 5124 - Algorithms in Bioinformatics
Algorithms to solve problems found in biology, especially molecular biology. A variety of current problems in computational molecular biology will be introduced, investigated, analyzed for computational complexity, and solved with efficient algorithms, when feasible. A number of such problems will be shown to be intractable or other evidence of their difficulty will be presented. (3H,3C) Pre: Graduate standing in CSA; CS 4104 OR CS 5046, PPWS 5314

CS 5204 - Operating Systems
Issues in the design and functioning of operating systems. Emphasis on synchronization of concurrent activity in both centralized and distributed systems. Deadlock, scheduling, performance analysis, operating system design, and memory systems including distributed file systems. (3H,3C) Pre: Graduate standing.

CS 5214 - Modeling and Evaluation of Computer Systems
An overview of modeling, simulation, and performance evaluation of computer systems, i.e., operating systems, database management systems, office automation systems, etc. Fundamentals of modeling, the life cycle of a simulation study, workload characterization, random number and variate generation, procurement, measurement principles, software and hardware monitors, capacity planning, system and program tuning, and analytic modeling. Duplication of subject matter of 4214 and 4224. Maximum of 6 hours credit may be obtained from 4214, 4224, 5214. (3H,3C) Pre: (CS 5024, STAT 4705) OR (STAT 4714, STAT 4105)

CS 5234 - Advanced Parallel Computation
Survey of leading high-end computing systems and their programming environments. Advanced models of parallel computation. Mapping of parallel algorithms to architectures. Performance programming and tools for performance optimization on parallel systems. Execution environments and system software for large-scale parallel computing. Case studies of parallel applications. Graduate standing required. (3H,3C) Pre: CS 4234

CS 5244 - Web Application Development
Languages and technologies needed to develop modern data- centric web applications. Commonly used protocols and standards. Client-side technologies such as HTML, CSS, and JavaScript; server-side technologies such as Servlets and JSP; and database access with SQL. Principles and technologies for web application architecture, electronic commerce, and web application security. (3H,3C) Pre: CS 5044

CS 5254 - Mobile Application Development
Languages and technologies needed to develop applications for modern mobile devices. Mobile infrastructure and devices. Interactive graphical user interfaces for mobile devices. Protocols and standards for using mobile device features such as sensors, networking, location, camera, and audio. Mobile app architecture, performance considerations, and asynchronous programming. Principles and technologies for mobile security. (3H,3C) Pre: CS 5044

CS 5304 - Translator Design and Construction
Fundamental theory of parsing and translation and practical applications of this theory. Lexical analysis, parsing techniques based on top-down (LL, Recursive Descent) and bottom-up (LR, Precedence), code generation, code optimization techniques, and runtime systems. (3H,3C) Pre: CS 4114 OR CS 5034

CS 5314 - Programming Languages
In depth investigation of the principles of programming systems, not necessarily restricted to programming languages, both from the point of view of the user and implementer. Algorithms of implementation, syntax and semantic specification systems, block structures and scope, data abstraction and aggregates, exception handling, concurrency, and applicative/functional/data-flow languages. (3H,3C) Pre: CS 3304

CS 5424 (BIOL 5424) (GBCB 5424) - Computational Cell Biology
Use of mathematical models (nonlinear ordinary differential equations and stochastic processes) and simulation algorithms to explore the complex feedback circuits that control the behavior of living cells. Concepts and techniques from dynamical systems theory, bifurcation analysis, numerical methods, SBML (systems biology makeup language) and Matlab programming. Applications in gene regulatory networks, cell cycle control, circadian rhythms, cell signaling. (3H,3C) Pre: MATH 5515

CS 5474 (MATH 5474) - Finite Difference Methods for Partial Differential Equations
Finite difference methods for initial and boundary value problems for partial differential equations. Consistency, stability, convergence, dispersion, and dissipation. Methods for linear and nonlinear elliptic and parabolic equations, first- and second-order hyperbolic equations, and nonlinear conservation laws. (3H,3C) Pre: CS 3414

CS 5484 (MATH 5484) - Finite Element Methods for Partial Differential Equations
Weak formulations of boundary-value problems for elliptic partial differential equations. Finite element spaces. Approximation theory for finite element spaces. Error estimates. Effects of numerical integration and curved boundaries. Nonconforming methods. Concrete examples of the application of the finite element method. Efficient implementation strategies. Time dependent problems. (3H,3C) Pre: CS 3414

CS 5485 (MATH 5485) - Numerical Analysis and Software
Presentation and analysis of numerical methods for solving common mathematical and physical problems. Methods of solving large sparse linear systems of equations, algebraic eigenvalue problems, and linear least squares problems. Numerical algorithms for solving constrained and unconstrained optimization problems. Numerical solutions of nonlinear algebraic systems. Convergence, error analysis. Hardware and software influences. Efficiency, accuracy, and reliability of software. Robust computer codes. (3H,3C) Pre: MATH 4445, MATH 4446

CS 5486 (MATH 5486) - Numerical Analysis and Software
Presentation and analysis of numerical methods for solving common mathematical and physical problems. Methods of solving large sparse linear systems of equations, algebraic eigenvalue problems, and linear least squares problems. Numerical algorithms for solving constrained and unconstrained optimization problems. Numerical solutions of nonlinear algebraic systems. Convergence, error analysis. Hardware and software influences. Efficiency, accuracy, and reliability of software. Robust computer codes. (3H,3C) Pre: MATH 4445, MATH 4446

CS 5504 (ECE 5504) - Computer Architecture
Advanced computer architectures, focusing on multiprocessor systems and the principles of their design. Parallel computer models, programming and interconnection network properties, principles of scaleable designs. Case studies and example applications of pipeline processors, interconnection networks, SIMD and MIMD processors. (3H,3C) Pre: CS 4504

CS 5510 (ECE 5510) - Multiprocessor Programming
Principle and practice of multiprocessor programming. Illustration of multiprocessor programming principles through the classical mutual exclusion problem, correctness properties of concurrency (e.g., linearizability), shared memory properties (e.g. register constructions), and synchronization primitives for implementing concurrent data structures (e.g., consensus protocols). Illustration of multiprocessor programming practice through programming patterns such as spin locks, monitor locks, the work-stealing paradigm and barriers. Discussion of concurrent data structures (e.g., concurrent linked lists, queues, stacks, hash maps, skiplists) through synchronization patterns ranging from coarse-grained locking to fine-grained locking to lock-free structures atomic synchronization primitives, elimination, and transactional memory. (3H,3C) Pre: ECE 4534 OR ECE 4550

CS 5525-6 (STAT 5525-6) - Data Analytics
5525: Basic techniques in data analytics including the preparation and manipulation of data for analysis and the creation of data files from multiple and dissimilar sources. The data mining and knowledge discovery process. Overview of data mining algorithms in classification, clustering, association analysis, probabilistic modeling, and matrix decompositions. Detailed study of classification methods including tree-based methods, Bayesian methods, logistic regression, ensemble, bagging and boosting methods, neural network methods, use of support vectors and Bayesian networks. Detailed study of clustering methods including k-means, hierarchical and self-organizing map methods.  (3H,3C) Pre: Graduate Standing required. 5526: Techniques in unsupervised and visualized learning in high dimension spaces. Theoretical, probabilistic, and applied aspects of data analytics. Methods include generalized linear models in high dimensional spaces, regularization, lasso and related methods, principal component regression (pca), tree methods, and random forests. Clustering methods including k-means, hierarchical clustering, biclustering, and model-based clustering will be thoroughly examined. Distance-based learning methods include multi dimensional scaling, the self organizing map, graphical/network models, and isomap. Supervised learning will consist of discriminant analyses, supervised pca, support vector machines, and kernel methods. (3H,3C) Pre: CS5525 or STAT5525

CS 5560 (ECE 5560) - Fundamentals of Info Security
Principles of information security and relevant mathematical concepts. Classical ciphers, relevant abstract algebra and number theory, symmetric-key ciphers, cipher modes of operation, and asymmetric-key ciphers. Cryptographic hash functions and message authentication codes. Elliptic curve cryptography and cryptosystems. Applications and standards relevant to network and computer security. (3H,3C) Pre: Graduate standing.

CS 5565-6 (ECE 5565, ECE 5560) - Network Architecture and Protocols
5565: Principles and concepts of networking and protocols, with emphasis on data link, network, and transport protocols. Contemporary and emerging networks and protocols to illustrate concepts and to provide insight into practical networks including the Internet. Quantitative and qualitative comparisons of network architectures and protocols. (3H, 3C) Pre: Graduate standing in EE, ECE, CS, or IT required; STAT 4714. 5566: Performance evaluation, design, and management of networks. Use of queuing and other analytical methods, simulation, and experimental methods to evaluate and design networks and protocols. Network management architectures and protocols. (3H,3C) Pre: CS 5565 or ECE 5565.

CS 5580 (ECE 5580) - Cryptographic Engineering
Implementation of cryptographic operations and protocols in contemporary computing platforms. Mapping of cryptographic operations, evaluation and optimization of performance and implementation cost, analysis of security against brute- force cryptanalysis and implementation-level attacks. Design of countermeasures against implementation-level attacks, security-testing procedures, and architectures to support a trusted computing base. (3H,3C) Pre: ECE 5560 OR CS 5560

CS 5584 (ECE 5584) - Network Security
Fundamentals of network security. Network security architecture, user and attacker perspective. Practical applications and security standards. Protocol design principles and their impact on computer and network security. Authentication systems. Email security. Firewalls and intrusion detection. Security for wireless systems. (3H,3C) Pre: CS 5560 OR ECE 5560

CS 5590 (ECE 5590) - System and Software Security
Secure software design, memory and file system security, operating system security for various platforms. Program classification, anomaly detection, malware detection and analysis. Technical challenges and problems in securing operating systems and software. Classic and modern algorithms, models, principles, and tools for system and application software security. Actual security examples. (3H,3C) Pre: CS 5560 OR ECE 5560

CS 5594 - Blockchain Technologies
Principles of an open, distributed ledger. Underlying data structures and algorithms such as crytographic hashing and Merkle trees, consensus algorithms, and Byzantine agreement. Bitcoin as an exemplar. Proof of work and proof of stake.  Applications including cryptocurrencies, financial ledgers, and smart contracts.  Pre: Graduate standing in computer science. (3H,3C)

CS 5604 - Information Storage and Retrieval
Analyzing, indexing, representing, storing, searching, retrieving, processing and presenting information and documents using fully automatic systems. The information may be in the form of text, hypertext, multimedia, or hypermedia. The systems are based on various models, e.g., Boolean logic, fuzzy logic, probability theory, etc., and they are implemented using inverted files, relational thesauri, special hardware, and other approaches. Evaluation of the systems' efficiency and effectiveness. (3H,3C) Pre: Graduate standing required.

CS 5614 - Database Management Systems
Emphasizes concepts, data models, mechanisms, and language aspects concerned with the definition, organization, and manipulation of data at a logical level. Concentrates on relational model, along with introduction to design of relational systems using Entity-relationship modeling. Functional dependencies and normalization of relations. Query languages, relational algebra, Datalog, and SQL. Query processing, logic and databases, physical database tuning. Concurrency control, OLTP, active and rule-based elements. Data Warehousing, OLAP. (3H,3C) Pre: CS 2604

CS 5644 - Machine Learning with Big Data
Basic principles and techniques for big data analytics, including methods for storing, searching, retrieving, and processing large datasets; introduction to basic machine learning libraries for analyzing large datasets; data visualization; case studies with real-world datasets. Not for graduate credit for degrees in Computer Science and Applications (CSA). (3H,3C) Pre: CS 5044

CS 5664 - Social Media Analytics
Social media platforms, media feeds, and data formats; machine learning and graph theory foundations of social media analytics; Forms of social media analytics - text analytics, network analytics, and action analytics; Forecasting models and applications, including in marketing, event tracking, surveying, and A/B testing. Not for graduate credit for degrees in Computer Science and Applications (CSA). (3H,3C) Pre: CS 5644

CS 5704 - Software Engineering
Study of the principles and tools applicable to the methodical construction and controlled evolution of complex software systems. All phases of the life cycle are presented; particular attention focuses on the design, testing, and maintenance phases. Introduction to software project management. Attention to measurement models of the software process and product which allow quantitative assessment of cost, reliability, and complexity of software systems. (3H,3C) Pre: CS 5044

CS 5714 (ISE 5714) - Usability Engineering
Design and evaluation of effective user interfaces, beginning with principles for designing the product. Development process for user interaction separate from interactive software development. Development process includes iterative life cycle management, systems analysis, design, usability specifications, design representation techniques, prototyping, formative user-based evaluation. Integrative and cross-disciplinary approach with main emphasis on usability methods and the user interaction development process. (3H,3C)

CS 5724 - Models and Theories of Human-computer Interaction
Survey of models and theories of users and their use of computer equipment; conditions of application for various approaches. Task analysis, task modeling, representations and notations. (3H,3C)

CS 5734 - Social Computing and Computer-Supported Cooperative Work
Social computing and cooperative work situations. Design, implementation, use, and analysis of computing systems concerned with multiple users and stakeholders. Analytic practices and application of human behavior theories for social computing. (3H,3C) Pre: Graduate standing.

CS 5744 - Software Design and Quality
This course focuses on critical aspects of the software lifecycle that have significant influence on the overall quality of the software system including techniques and approaches to software design, quantitative measurement and assessment of the system during implementation, testing, and maintenance, and the role of verification and validation in assuring software quality. (3H,3C) Pre: CS 5704

CS 5754 - Virtual Environments
Introduction to the theory and practice of three-dimensional virtual environments (VEs). 3D input and output devices, applications of VEs, 3D user interfaces and human-computer interaction, 3D graphics techniques for VEs, 3D modeling and level of detail, evaluation of VEs, VE software systems and standards, collaborative and distributed VEs. Includes hands-on experience with VE hardware and software. (3H,3C)

CS 5764 - Information Visualization
Examine computer-based strategies for interactive visual presentation of information that enable people to explore, discover, and learn from vast quantities of data. Learn to analyze, design, develop, and evaluate new visualizations and tools. Discuss design principles, interaction strategies, information types, and experimental results. Research-oriented course surveys current literature, and group projects contribute to the state of the art.  (3H,3C) Pre: Graduate standing.

CS 5774 - User Interface Software
Survey of software architectures to build user interfaces, particularly focused on graphical user interfaces. Includes the design and implementation of user interfaces, the use of object-oriented application frameworks, software architecture for command undo, document management, layout managers, customized components, and separation of concerns in user interface software architectures. Discussion of research and advanced topics in User Interface Software. (3H,3C) Pre: CS 2704

CS 5804 - Introduction to Artificial Intelligence
A graduate level overview of the areas of search, knowledge representation, logic and deduction, learning, planning, and artificial intelligence applications. (3H,3C) Pre: CS 2604

CS 5824 - Advanced Machine Learning
Algorithms and principles involved in machine learning; focus on perception problems arising in computer vision, natural language processing and robotics; fundamentals of representing uncertainty, learning from data, supervised learning, ensemble methods, unsupervised learning, structured models, learning theory and reinforcement learning; design and analysis of machine perception systems; design and implementation of a technical project applied to real-world datasets (images, text, robotics). (3H,3C) Pre: Graduate Standing.

CS 5834 - Introduction to Urban Computing
Computational approaches to address urban challenges; sensor network testbeds; algorithms for storing, processing, and mining data from urban settings; communicating patterns to decision makers; special focus on epidemiology, sustainability, transportation, social science, urban economics; case studies with applications. (3H,3C) Pre: Graduate Standing.

CS 5854 - Computational Systems Biology
Phenomenological and data-driven models of molecular interaction networks. Applications of graph theory, discrete algorithms, data mining, and machine learning to the modeling and analysis of molecular interaction networks. Biological applications. Interaction between biological and computational disciplines in systems biology. Must have GBCB pre-requisite and CS pre-requisites or graduate standing in CSA or equivalent. (3H,3C) Pre: CS 4104 OR CS 5046, GBCB 5314

CS 5934 - Capstone Project
Design, implementation, and communication of a software system throughout the product lifecycle. Students, working in teams, use current software product development models to move from an initial concept to a minimum viable product that meets a clear user or market need.  Product ideation, end-user and stakeholder analysis, product development, communication of design and goals, use of appropriate development tools. Pre: Graduate student standing. (3H,3C)

CS 6104 - Advanced Topics in Theory of Computation
This course treats a specific, advanced topic of current research interest in the area of theory of computation. Papers from the current literature or research monographs are likely to be used instead of a textbook. Student participation in a seminar style format may be expected. May be repeated with different content for a maximum of nine credit hours. (3H,3C) Pre: CS 5104 OR CS 5114

CS 6204 - Advanced Topics in Systems
This course treats a specific advanced topic of current research interest in the area of systems. Papers from the current literature or research monographs are likely to be used instead of a textbook. Student participation in a seminar style format may be expected. May be repeated with different content for a maximum of nine credit hours. (3H,3C) Pre: CS 5204 OR CS 5214

CS 6304 - Advanced Topics in Languages and Translation
This course treats a specific advanced topic of current research interest in the area of languages and translation. Papers from the current literature or research monographs are likely to be used instead of a textbook. Student participation in a seminar style format may be expected. May be repeated with different content for a maximum of nine credit hours. (3H,3C) Pre: CS 5304 OR CS 5314

CS 6404 - Advanced Topics in Mathematical Software
This course treats a specific advanced topic of current research interest in the area of mathematical software. Papers from the current literature or research monographs are likely to be used instead of a textbook. Student participation in a seminar style format may be expected. May be repeated with different content for a maximum of nine credit hours. (3H,3C) Pre: CS 5485

CS 6424 - PGMs and Structured Prediction
Advanced concepts in machine learning. Probabilistic graphical models and structured output prediction. Directed models (Bayes Nets), undirected models (Markov/Conditional Random Fields), exact inference (junction tree), approximate inference (belief propagation, dual decomposition), parameter learning (MLE, MAP, EM, max-margin), structure learning. (3H,3C) Pre: ECE 5424G OR CS 5824

CS 6444 (ME 6444) - Verification and Validation in Scientific Computing
Applicable to scientific and engineering models described by partial differential or integral equations. Software engineering, code verification, and the method of manufactured solutions for generating exact solutions. Estimation of numerical approximation errors in scientific computing. Design and execution of experiments for model validation and model accuracy assessment. Propagation of aleatory and epistemic uncertainty through models. Estimation of total prediction uncertainty in scientific computing simulations.  (3H,3C) Pre: Graduate Standing required

CS 6504 - Advanced Topics in Computer Architecture
This course treats a specific advanced topic of current research interest in the area of architecture. Papers from the current literature or research monographs are likely to be used instead of a textbook. Student participation in a seminar style format may be expected. May be repeated with different content for a maximum of nine credit hours. (3H,3C) Pre: CS 5515 OR CS 5516

CS 6524 - Deep Learning
Advanced concepts in Machine Learning and Deep Learning. Models (multi-layer perceptrons, convolutional neural networks, memory networks), learning algorithms (backpropagation, stochastic sub-gradient descent, dropout), connections to structured predictions (Boltzmann machines, "unrolled" belief propagation), and applications to perception and Artificial Intelligence (AI) problems (image classification, detection, and segmentation; image captioning; visual question answering; automatic game playing). (3H,3C) Pre: ECE 5424G OR CS 5824

CS 6564 (ECE 6564) - Multimedia Networking
This course examines and explores recent advances in multimedia networking technologies. Major topics include multimedia compression and standards, quality of service (QoS) support mechanisms and protocols, performance analysis, network calculus, IP multicasting, Internet multimedia applications, and multimedia transport over wireless networks. (3H,3C) Pre: CS 5565

CS 6570 (ECE 6570) - Advanced Foundations of Networking
This course covers theoretical foundations that are necessary for advanced study of networking. It focuses on algorithm design and optimization techniques that are most commonly used to solve complex networking problems. Major topics include complexity analysis with applications to networking problems, design and proof of approximation algorithms, design of meta-heuristic algorithms, formulation techniques for network optimization, linear and non-linear optimization techniques with applications to networking, design of distributed algorithms with proof of convergence for networks systems. (3H,3C) Pre: CS 5565 OR ECE 5565

CS 6604 - Advanced Topics in Data and Information
This course treats a specific advanced topic of current research interest in the area of data and information. Papers from the current literature or research monographs are likely to be used instead of a textbook. Student participation in a seminar style format may be expected. May be repeated with different content for a maximum of nine credit hours. (3H,3C) Pre: CS 5604 OR CS 5614

CS 6704 - Advanced Topics in Software Engineering
This course treats a specific advanced topic of current research interest in the area of software engineering. Papers from the current literature or research monographs are likely to be used instead of a textbook. Student participation in a seminar style format may be expected. May be repeated with different content for a maximum of nine credit hours. (3H,3C) Pre: CS 5704 OR CS 5714

CS 6724 - Advanced Topics in Human-computer Interaction
Addresses a specific advanced topic of current research interest in the area of human-computer interaction (HCI). Research monographs and papers from the current literature will be used as a source of material too new yet to be in a textbook. Student participation in a seminar-style format. Each offering of this course will address a different subtopic area of HCI. May be repeated for credit. (3H,3C) Pre: CS 5714 OR CS 5724 OR CS 5734

CS 6804 - Advanced Topics in Intelligent Systems
This course treats a specific advanced topic of current research interest in the area of intelligent systems. Papers from the current literature or research monographs are likely to be used instead of a textbook. Student participation in a seminar style format may be expected. May be repeated with different content for a maximum of nine credit hours. (3H,3C) Pre: CS 5804 OR CS 5814

CS 6824 - Adv Topics Comp Biol & Bioinf
Addresses a specific advanced topic of current research interest in the area of computational biology and bioinformatics (CBB). Research monographs and papers from the current literature used as a source of material too new to be discussed in a textbook. Student participation in a seminar-style format. Each offering of this course will address a different subtopic area of CBB. May be repeated with different content for a maximum of 12 credit hours. (3H,3C) Pre: Graduate standing