2026-2027 Academic Catalog

Welcome to Virginia Tech! We are excited that you are here planning your time as a Hokie.

Computer Science (CS)

CS 1014 - Introduction to Computational Thinking (3 credits) 
An exploration of basic ideas of computational thinking focusing on the perspectives, thought processes, and skills that underlie computational approaches to problem formulation and problem solving. Applications of computational tools to investigate complex, large-scale problems in a variety of knowledge domains. Basic introduction to algorithms and a practical programming language. Examination of the societal and ethical implications of computational systems.
Pathway Concept Area(s): 5F Quant & Comp Thnk Found., 10 Ethical Reasoning 
Instructional Contact Hours: (3 Lec, 3 Crd) 
CS 1044 - Introduction to Programming in C (3 credits) 
Fundamental concepts underlying software solutions of many problems. Structured data, statement sequencing, logic control, input/output, and functions. The course will be taught using a structured approach to programming. Partially duplicates 1344.
Instructional Contact Hours: (3 Lec, 3 Crd) 
CS 1054 - Introduction to Programming in Java (3 credits) 
An introduction to object-oriented programming using the Java language. Fundamental concepts underlying programming and software solutions to many problems. Structured data, statement sequencing, logic control, classes, objects, methods, instantiation of classes, sending messages to objects. The impact of computing on issues of diversity and inclusion.
Pathway Concept Area(s): 5F Quant & Comp Thnk Found., 11 Intercultural&Global Aware. 
Instructional Contact Hours: (3 Lec, 3 Crd) 
CS 1064 - Introduction to Programming in Python (3 credits) 
Introduction to programming in Python contextualized with scientific and engineering problems. Computational problem-solving skills and software solutions in addition to Python language fundamentals. The basics of control flow with loops and conditionals, state tracing and manipulation, simple and complex types, organization of code using functional and object-oriented coding strategies, and data processing. Create, interpret, and debug programs. Ethically debate important issues in computing culture.
Pathway Concept Area(s): 5F Quant & Comp Thnk Found., 10 Ethical Reasoning 
Instructional Contact Hours: (3 Lec, 3 Crd) 
CS 1114 - Introduction to Software Design (3 credits) 
Fundamental concepts of programming from an object-oriented perspective. Basic software engineering principles and programming skills in a programming language that supports the object-oriented paradigm. Simple data types, control structures, array and string data structures, basic algorithms, testing and debugging. A basic model of the computer as an abstract machine. Modeling and problem-solving skills applicable to programming at this level. Partially duplicates 1054, 1124, and 1705.
Corequisite(s): MATH 1225 
Instructional Contact Hours: (2 Lec, 2 Lab, 3 Crd) 
CS 1944 - Computer Science First Year Seminar (1 credit) 
An introduction to academic and career planning for computer science majors.
Prerequisite(s): CS 1114 or CS 2064 or ECE 2514 
Instructional Contact Hours: (1 Lec, 1 Crd) 
CS 2064 - Intermediate Programming in Python (3 credits) 
Advanced uses of control flow and data processing, data structures, computational techniques, object-oriented programming, and modern data science pipelines. Creating, interpreting, and debugging complex programs. Problems and projects contextualized for scientists and engineers. Implementation of Python programs in data science and production environments, production of object-oriented solutions to complex problems, and ethical implications of technological change.
Prerequisite(s): CS 1064 
Pathway Concept Area(s): 5A Quant & Comp Thnk Adv., 10 Ethical Reasoning 
Instructional Contact Hours: (3 Lec, 3 Crd) 
CS 2104 - Introduction to Problem Solving in Computer Science (3 credits) 
This course introduces the student to a broad range of heuristics for solving problems in a range of settings that are relevant to computation. Emphasis on problem-solving techniques that aid programmers and computer scientists. Heuristics for solving problems in the small (classical math and word problems), generating potential solutions to real-life problems encountered in the profession, problem solving through computation, and problem solving in teams.
Prerequisite(s): CS 1114 or CS 1064 or ECE 2514 
Instructional Contact Hours: (3 Lec, 3 Crd) 
CS 2114 - Software Design and Data Structures (3 credits) 
A programming-intensive exploration of software design concepts and implementation techniques. Builds on knowledge of fundamental object-oriented programming. Advanced object-oriented software design, ethics in computing, algorithm development and analysis, and classic data structures. Includes a team-based software project.
Prerequisite(s): CS 1114 or CS 2064 
Pathway Concept Area(s): 6D Critique & Prac in Design, 10 Ethical Reasoning 
Instructional Contact Hours: (2 Lec, 3 Lab, 3 Crd) 
CS 2144 - Competitive Problem Solving I (3 credits) 
Fundamentals of algorithms, data structures, and implementation techniques, taught in a setting that combines collaborative practice with competitive exercise. Students practice to solve problems using a computer, which are judged by automated evaluation software for correctness and efficiency. Practice with data structures including arrays, lists, maps, and trees, as well as algorithmic strategies including recursion, divide-and-conquer, dynamic programming, search and traversal algorithms, graph representations, and computational geometry. Macro- and micro optimization techniques to improve efficiency are emphasized.
Prerequisite(s): CS 1114 
Instructional Contact Hours: (3 Lec, 3 Crd) 
CS 2164 - Foundations of Contemporary Security Environments (3 credits) 
Introduction to multiple analytical perspectives on contemporary security environments, including political, legal, ethical, technical, environmental and historical and cultural perspectives relative to the conception, design and implementation of security solutions, practices, and policies. Emphasizes applying and analyzing the effectiveness of diverse procedures, tools and policies used in security and privacy solutions, decision-making, risk management and operational policy to mitigate local, national, international and global threats.
Pathway Concept Area(s): 3 Reasoning in Social Sciences, 5F Quant & Comp Thnk Found., 11 Intercultural&Global Aware. 
Instructional Contact Hours: (3 Lec, 3 Crd) 
Course Crosslist: BIT 2164, PSCI 2164 
CS 2304 - Topics in Programming Systems (1 credit) 
Guided self-study in a specific programming system, its syntax and applications. Based on prior knowledge of the programming process and experience in programming with some high-level language. Systems include JavaScript, C++, CUDA, Ruby, SQL, FORTRAN, UNIX, etc. May be taken three times for credit with different system each time. May be taken only twice for CS major or minor credit.
Prerequisite(s): CS 2114 
Instructional Contact Hours: (1 Lec, 1 Crd) 
Repeatability: up to 3 credit hours 
CS 2505 - Introduction to Computer Organization (3 credits) 
An introduction to the design and operation of digital computers. Works up from the logic gate level to combinational and sequential circuits, information representation, computer arithmetic, arithmetic/logic units, control unit design, basic computer organization, relationships between high level programming languages and instruction set architectures. A grade of C or better is required in CS prerequisite. Corequisites: MATH 2534 or MATH 3034.
Prerequisite(s): CS 2114 
Instructional Contact Hours: (3 Lec, 3 Crd) 
CS 2506 - Introduction to Computer Organization (3 credits) 
An introduction to the design and operation of digital computers. Instruction formats and construction, addressing modes, instruction execution, memory hierarchy operation and performance, pipelining, input/output, and the relationships between high level programming languages and machine language. A grade of C or better is required in CS pre-requisite 2505 and 2114.
Prerequisite(s): (CS 2114 or ECE 3514) and (CS 2505 or ECE 2564) and (MATH 2534 or MATH 3034) 
Instructional Contact Hours: (3 Lec, 3 Crd) 
CS 2964 - Field Study (1-19 credits) 
Instructional Contact Hours: Variable credit course 
CS 2974 - Independent Study (1-19 credits) 
Instructional Contact Hours: Variable credit course 
CS 2984 - Special Study (1-19 credits) 
Instructional Contact Hours: Variable credit course 
CS 2984E - Special Study (1-19 credits) 
Pathway Concept Area(s): 5A Quant & Comp Thnk Adv. 
Instructional Contact Hours: Variable credit course 
CS 3114 - Data Structures and Algorithms (3 credits) 
Advanced 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. Ethical issues in the context of data analysis and software performance. Course projects require advanced problem-solving, design, and implementation skills.
Prerequisite(s): (CS 2114 or ECE 3514) and (CS 2505 or ECE 2564) and (MATH 2534 or MATH 3034) 
Pathway Concept Area(s): 5A Quant & Comp Thnk Adv., 10 Ethical Reasoning 
Instructional Contact Hours: (3 Lec, 3 Crd) 
CS 3214 - Computer Systems (3 credits) 
Introduction to computer systems as they are relevant to application programmers today, with emphasis on operating system principles. Operating system design and architectures; processes; threads, synchronization techniques, deadlock; CPU scheduling; system call interfaces, system level I/O and file management; shell programming; separate compilation, loading and linking; inter-process communication (IPC); virtual and physical memory management and garbage collection; network protocols and programming; virtualization; performance analysis and optimization. A grade of C or better is required in CS pre-requisites 2506 and 2114.
Prerequisite(s): (CS 2506 and CS 2114) or (ECE 2564 and ECE 3574) 
Instructional Contact Hours: (3 Lec, 3 Crd) 
CS 3274 - Software Reverse Engineering (3 credits) 
Theory and practice of software reverse engineering, static and dynamic analysis techniques and tools, reverse engineering of malware, obfuscated binaries, communications and command and control analysis, reverse engineering of non-binary software.
Prerequisite(s): (CS 2114 and CS 2506) or (ECE 2534 and ECE 3514) 
Instructional Contact Hours: (3 Lec, 3 Crd) 
CS 3304 - Comparative Languages (3 credits) 
This course in programming language constructs emphasizes the run-time behavior of programs. The languages are studied from two points of view: (1) the fundamental elements of languages and their inclusion in commercially available systems; and (2) the differences between implementations of common elements in languages. A grade of C or better required in CS prerequisite 3114.
Prerequisite(s): CS 3114 
Instructional Contact Hours: (3 Lec, 3 Crd) 
CS 3314 - Programming Language Theory and Practice (3 credits) 
Theoretical basis of programming languages, including formal languages, computability theory, type theory, and programming language design. Standard syntax notations. Fundamental programming language features for control flow and data representation. Language implementation strategies. Unsolvable problems in the context of programming languages and computing.
Prerequisite(s): CS 3114 
Instructional Contact Hours: (3 Lec, 3 Crd) 
CS 3414 - Numerical Methods (3 credits) 
Computational methods for numerical solution of non-linear equations, differential equations, approximations, iterations, methods of least squares, and other topics. A grade of C or better required in CS prerequisite 1044 or 1705. A student can earn credit for at most one of 3414 and MATH 4404.
Prerequisite(s): (CS 1044 or CS 1705 or CS 1114 or CS 1124) and MATH 2406H or (CMDA 2005 and CMDA 2006) or (MATH 2214 or MATH 2214H) and (MATH 2204H or MATH 2204) 
Instructional Contact Hours: (3 Lec, 3 Crd) 
Course Crosslist: MATH 3414 
CS 3604 - Professionalism in Computing (3 credits) 
Studies the ethical, social, and professional concerns of the computer science field. Covers the social impact of the computer, implications and effects of computers on society, and the responsibilities of computer professionals in directing the emerging technology. The topics are studied through case studies of reliable, risk-free technologies, and systems that provide user friendly processes. Specific studies are augmented by an overview of the history of computing, interaction with industrial partners and computing professionals, and attention to the legal and ethical responsibilities of professionals. This is a web-supported course, incorporating writing intensive exercises, making extensive use of active learning technologies. A grade of C or better required in CS prerequisite 3114.
Prerequisite(s): CS 1944 and (CS 2114 or ECE 3514) and (COMM 2004 or COMM 2014) 
Instructional Contact Hours: (3 Lec, 3 Crd) 
CS 3634 - Computer Science Foundations for Computational Modeling & Data Analytics (3 credits) 
Survey of computer science concepts and tools that enable computational science and data analytics. Data structure design and implementation. Analysis of data structure and algorithm performance. Introduction to high-performance computer architectures and parallel computation. Basic operating systems concepts that influence the performance of large-scale computational modeling and data analytics. Software development and software tools for computational modeling. Not for CS major credit.
Prerequisite(s): CS 2114 
Instructional Contact Hours: (3 Lec, 3 Crd) 
Course Crosslist: CMDA 3634 
CS 3654 - Introductory Data Analytics and Visualization (3 credits) 
Basic principles and techniques in data analytics; methods for the collection of, storing, accessing, and manipulating standard-size and large datasets; data visualization; and identifying sources of bias.
Instructional Contact Hours: (3 Lec, 3 Crd) 
Course Crosslist: CMDA 3654, STAT 3654 
CS 3704 - Intermediate Software Design and Engineering (3 credits) 
Explores the principles of software design in detail, with an emphasis on software engineering aspects. Includes exposure of software lifecycle activities including design, coding, testing, debugging, and maintenance, highlighting how design affects these activities. Peer reviews, designing for software reuse, CASE tools, and writing software to specifications are also covered. A grade of C or better required in CS prerequisite 3114.
Prerequisite(s): CS 2114 
Instructional Contact Hours: (3 Lec, 3 Crd) 
CS 3714 - Mobile Software Development (3 credits) 
Technologies and concepts underlying software development for mobile devices (handheld computers). Mobile computing platforms, including architecture, operating system, and programming environment. Software design patterns and structuring for mobile applications. Network-centric mobile software development. Data persistence. Programming for mobile device components such as cameras, recorders, accelerometer, gyroscope and antennas. Location-aware software development. A grade of C or better required in CS prerequisite.
Prerequisite(s): CS 2114 or ECE 3514 
Instructional Contact Hours: (3 Lec, 3 Crd) 
CS 3724 - Introduction to Human-Computer Interaction (3 credits) 
Survey of human-computer interaction concepts, theory, and practice. Basic components of human-computer interaction. Interdisciplinary underpinnings. Informed and critical evaluation of computer-based technology. User-oriented perspective, rather than system-oriented, with two thrusts: human (cognitive, social) and technological (input/output, interactions styles, devices). Design guidelines, evaluation methods, participatory design, communication between users and system developers. A grade of C or better required in CS prerequisite 2114.
Prerequisite(s): CS 1114 or CS 1044 or CS 1054 or CS 1064 
Instructional Contact Hours: (3 Lec, 3 Crd) 
CS 3744 - Introduction to GUI Programming and Graphics (3 credits) 
Design and implementation of object-oriented graphical user interfaces (GUI) and two-dimensional computer graphics systems. Implementation methodologies including callbacks, handlers, event listeners, design patterns, layout managers, and architectural models. Mathematical foundations of computer graphics applied to fundamental algorithms for clipping, scan conversion, affine and convex linear transformations, projections, viewing, structuring, and modeling. A grade of C or better is required in CS pre-requisite 2114.
Prerequisite(s): (CS 2114 or ECE 3514) and (MATH 1114 or MATH 2114) and (MATH 1224 or MATH 2204) 
Instructional Contact Hours: (3 Lec, 3 Crd) 
CS 3754 - Cloud Software Development (3 credits) 
Fundamentals of cloud software development, including design patterns, application programming interfaces, and underlying middleware technologies. Development of distributed multi-tiered enterprise software applications that run on a server computer and are accessed using a web browser over the Internet on a network-connected computer such as desktop, laptop, or handheld computer (tablet, smartphone, or mobile device. A grade of C or better is required in prerequisite.
Prerequisite(s): CS 2114 or ECE 3514 
Instructional Contact Hours: (3 Lec, 3 Crd) 
CS 3804 - Foundations and Applications of Artificial Intelligence (3 credits) 
Broad, application-driven introduction to the foundations and practice of modern artificial intelligence (AI) and machine learning (ML). Functional view of core learning paradigms, including supervised, unsupervised, semi-supervised, and reinforcement learning paradigms, including generative/large language model capabilities. Use of established libraries and cloud-based AI services to build end-to-end applications in areas such as vision, natural language processing, and robotics. Evaluation and interpretation of model behavior and performance. Emphasis on data preparation, model selection, evaluation, and integration of AI components into software systems. Discussion of ethical, societal, and security considerations in deploying AI. Intended as a junior-level bridge between introductory programming/AI exposure and advanced, theory-focused AI courses.
Prerequisite(s): CS 2104 
Instructional Contact Hours: (3 Lec, 3 Crd) 
CS 3824 - Introduction to Computational Biology and Bioinformatics (3 credits) 
Introduction to computational biology and bioinformatics (CBB) through hands-on learning experiences. Emphasis on problem solving in CBB. Breadth of topics covering structural bioinformatics; modeling and simulation of biological networks; computational sequence analysis; algorithms for reconstructing phylogenies; computational systems biology; and data mining algorithms. Pre-requisite: Grade of C or better in CS 3114.
Prerequisite(s): CS 3114 
Instructional Contact Hours: (3 Lec, 3 Crd) 
CS 3900 - Bridge Experience (0 credits) 
Application of academic knowledge and skills to in a work-based experience aligned with post-graduation goals using research-based learning processes. Satisfactory completion of work-based experience often in the form of internship, undergraduate research, co-op, or study abroad; self-evaluation; reflection; and showcase of learning. Pre: Departmental approval of 3900 plan.
Instructional Contact Hours: (0 Crd) 
CS 3954 - Study Abroad (1-19 credits) 
Instructional Contact Hours: Variable credit course 
CS 3984 - Special Study (1-19 credits) 
Instructional Contact Hours: Variable credit course 
CS 4014 - Algorithms & Society (3 credits) 
This course focuses on social perspectives of algorithms and implications to factors such as class, gender, race, ethnicity, geography, and disability status. Students will be guided to think critically about the impacts of computing in society, as well as the role of social values in their design. Topics will focus on computing technologies involved in critical contemporary and global concerns including machine learning, privacy, and the infrastructure that describes the social and technical context for algorithms. Pre: Junior Standing
Pathway Concept Area(s): 3 Reasoning in Social Sciences, 11 Intercultural&Global Aware. 
Instructional Contact Hours: (3 Lec, 3 Crd) 
Course Crosslist: STS 4014 
CS 4094 - Computer Science Capstone (3 credits) 
Senior capstone project course integrating computer science knowledge and skills acquired in previous courses. Team-based approach to solving open-ended computer science problems that address real-world problems in a variety of application areas, including approaches to problem formulation, requirements definition, design, and implementation. Communicating and presenting team results using both written and oral methods.
Prerequisite(s): CS 2506 and CS 3114 
Instructional Contact Hours: (3 Lec, 3 Crd) 
CS 4104 - Data and Algorithm Analysis (3 credits) 
Data structures and algorithms from an analytical perspective. Theoretical analysis of algorithm efficiency. Comparing algorithms with respect to space and run-time requirements. Analytical methods for describing theoretical and practical bounds on performance. Constraints affecting problem solvability. A grade of C or better is required in CS prerequisite 3114.
Prerequisite(s): CS 3114 and (MATH 3034 or MATH 3134) 
Instructional Contact Hours: (3 Lec, 3 Crd) 
CS 4114 - Introduction to Formal Languages and Automata Theory (3 credits) 
The course presents a study of formal languages and the correspondence between language classes and the automata that recognize them. Formal definitions of grammars and acceptors, deterministic and nondeterministic systems, grammar ambiguity, finite state and push-down automata, and normal forms will be discussed.
Prerequisite(s): MATH 3134 or MATH 3034 
Instructional Contact Hours: (3 Lec, 3 Crd) 
CS 4124 - Theory of Computation (3 credits) 
Theoretical analysis of the computational process; fundamental concepts such as abstract programs, classes of computational machines and their equivalence, recursive function theory, unsolvable problems, Churchs thesis, Kleenes theorem, program equivalence, and generability, acceptability, decidability will be covered.
Prerequisite(s): MATH 3134 or MATH 3034 
Instructional Contact Hours: (3 Lec, 3 Crd) 
CS 4134 - Quantum Computation and Information Processing (3 credits) 
Quantum states and quantum phenomena. Quantum communication concepts such as superdense coding, teleportation, and complexity. Classical and quantum circuits and gate sets for computation. Quantum algorithms and comparison to classical algorithms. Quantum computational complexity theory and complexity classes. Quantum information concepts such as density operators, measurements, and quantum channels. Error correction, the stabilizer formalism, and fault-tolerance. The adiabatic theorem and adiabatic quantum computation. Entanglement and entanglement measures.
Prerequisite(s): MATH 2114 or MATH 2114H 
Instructional Contact Hours: (3 Lec, 3 Crd) 
CS 4144 - Competitive Problem Solving II (3 credits) 
Deeper treatment of advanced algorithms, data structures, and implementation techniques, taught in a setting that combines collaborative practice with competitive exercise. Students practice to solve problems using a computer, which are judged by automated evaluation software for correctness and efficiency. Practice with advanced searching and graph algorithms, advanced dynamic programming, linear programming techniques, computational geometry, and numerical algorithms. Problems are drawn from multiple areas in computer science. Macro- and micro optimization techniques to improve efficiency are emphasized.
Prerequisite(s): CS 2114 and CS 2144 
Instructional Contact Hours: (3 Lec, 3 Crd) 
CS 4164 - Future of Security: Integrative Solutions for Complex Security Systems (3 credits) 
Identification and analysis of complex, real-world security problems and threats to people, organizations, and nations across multiple domains, roles and future scenarios. Crisis communication, decision making tools, ethical principles and problem-solving methods to respond, assess options, plan, scope, and communicate before, during and after conflicts, disasters and attacks. Use of an experiential learning facility, and participation in a reality-based team simulation of cascading security and disaster events.
Prerequisite(s): PSCI 2164 or BIT 2164 or CS 2164 
Pathway Concept Area(s): 1A Discourse Advanced, 10 Ethical Reasoning 
Instructional Contact Hours: (3 Lec, 3 Crd) 
Course Crosslist: BIT 4164, PSCI 4164 
CS 4204 - Computer Graphics (3 credits) 
Hardware and software techniques for the display of graphical information. 2D and 3D geometry and transformations, clipping and windowing, software systems. Interactive graphics, shading, hidden surface elimination, perspective depth. Modeling and realism.
Prerequisite(s): CS 3114 and MATH 2114 
Instructional Contact Hours: (3 Lec, 3 Crd) 
CS 4224 - Linux Kernel Programming (3 credits) 
Design and internal organization of the Linux operating system kernel. Kernel subsystems, boot process, memory management, process and thread model, scheduling, interrupt and exception handling, virtual file system and the concrete file system, block I/O and I/O scheduler, network stack, and device drivers. Modification of existing kernel code. Design, implementation, test and evaluation of new kernel modules. Kernel and full software stack debugging techniques, and virtualization as an aid for operating system development and debug. Software engineering techniques to analyze, modify and run a large, complex open-source code base.
Prerequisite(s): ECE 3574 or CS 3114 
Instructional Contact Hours: (3 Lec, 3 Crd) 
Course Crosslist: ECE 4414 
CS 4234 - Parallel Computation (3 credits) 
Survey of parallel computer architectures, models of parallel computation, and interconnection networks. Parallel algorithm development and analysis. Programming paradigms and languages for parallel computation. Example applications. Performance measurement and evaluation. A grade of C or better required in CS prerequisite 3214.
Prerequisite(s): CS 3214 
Instructional Contact Hours: (3 Lec, 3 Crd) 
CS 4254 - Computer Network Architecture and Programming (3 credits) 
Introduction to computer network architecture, and methods for programming network services and applications (e.g. DNS, Email and MIME, http, SNMP, multimedia). Wired, wireless, and satellite network architectures. OSI protocol model, with an emphasis on upper layers. Congestion control, quality of service, routing. Internet protocol suite (e.g. IP, TCP, ARP, RARP). Server design (e.g. connectionless, concurrent). Network programming abstractions (e.g. XDR, remote procedure calls, sockets, DCOM). Case studies (e.g. TELNET). A grade of C or better required in CS prerequisite 3214.
Prerequisite(s): CS 3214 
Instructional Contact Hours: (3 Lec, 3 Crd) 
CS 4264 - Principles of Computer Security (3 credits) 
Survey of computer problems and fundamental computer security design principles and models for software systems. Cryptographic models and methods. Modern cyber security techniques for robust computer operating systems, software, web applications, large-scale networks and data protection. Privacy models and techniques. Contemporary computer and network security examples. A grade of C or better is required in prerequisites.
Prerequisite(s): CS 3214 or (ECE 3504 and ECE 3574) 
Instructional Contact Hours: (3 Lec, 3 Crd) 
CS 4274 - Secure Computing Capstone (3 credits) 
Advanced topics in cybersecurity and secure computing. Threat modeling through identification and analysis of security threats. Reasoning about the efficacy, complexity, cost, and ethical tradeoffs of computer security systems. Team-based approach to solving open-ended computer security problems. Designing, implementing, documenting, and presenting advanced computer systems.
Prerequisite(s): CS 3114 and CS 3214 
Corequisite(s): CS 4264 
Instructional Contact Hours: (3 Lec, 3 Crd) 
CS 4284 - Systems & Networking Capstone (3 credits) 
Advanced topics in computer systems & networking, e.g. distributed and parallel processing, emerging architectures, novel systems management & networking design, fault- tolerance, and robust and secure data management. Team- based approach to solving open-ended computer systems & networking problems. Designing, implementing and documenting advanced computer/networking systems. A grade of C or better required in CS prerequisites.
Prerequisite(s): CS 3114 and CS 3214 
Instructional Contact Hours: (3 Lec, 3 Crd) 
CS 4304 - Compiler Design and Implementation (3 credits) 
This course includes the theory, the design, and the implementation of a large language translator system. Lexical analysis, syntactic analysis, code generation, and optimization are emphasized. A grade of C or better required in CS prerequisite 3214.
Prerequisite(s): CS 3214 
Instructional Contact Hours: (3 Lec, 3 Crd) 
CS 4414 - Issues in Scientific Computing (3 credits) 
Theory and techniques of modern computational mathematics, computing environments, computational linear algebra, optimization, approximation, parameter identification, finite difference and finite element methods and symbolic computation. Project-oriented course; modeling and analysis of physical systems using state-of-the-art software and packaged subroutines.
Instructional Contact Hours: (2 Lec, 3 Lab, 3 Crd) 
Course Crosslist: MATH 4414 
CS 4504 - Computer Organization (3 credits) 
Overview of the structure, elements and analysis of modern enterprise computers. Performance evaluation of commercial computing. Past and emerging technology trends. Impact of parallelism at multiple levels of computer architecture. Memory and storage. Fundamental computer system descriptions, Amdahls Law, Flynns Taxonomy. A grade of C or better required in prerequisites.
Prerequisite(s): ECE 2500 or CS 3214 or ECE 3504 
Instructional Contact Hours: (3 Lec, 3 Crd) 
Course Crosslist: ECE 4504 
CS 4604 - Introduction to Data Base Management Systems (3 credits) 
Emphasis on introduction of the basic data base models, corresponding logical and physical data structures, comparisons of models, logical data design, and data base usage. Terminology, historical evolution, relationships, implementation, data base personnel, future trends, applications, performance considerations, data integrity. Senior standing required. A grade of C or better required in CS prerequisite 3114.
Prerequisite(s): CS 3114 
Instructional Contact Hours: (3 Lec, 3 Crd) 
CS 4624 - Multimedia, Hypertext and Information Access (3 credits) 
Introduces the architectures, concepts, data, hardware, methods, models, software, standards, structures, technologies, and issues involved with: networked multimedia information and systems, hypertext and hypermedia, networked information videoconferencing, authoring/electronic publishing, and information access. Coverage includes how to capture, represent, link, store, compress, browse, search, retrieve, manipulate, interact with, synchronize, perform, and present: text, drawings, still images, animations, audio, video, and their combinations (including in digital libraries).
Prerequisite(s): CS 3114 
Instructional Contact Hours: (3 Lec, 3 Crd) 
CS 4634 - Design Of Information (3 credits) 
Survey of the higher-order properties that allow data to become information, that is, to inform people. The course focuses on the analysis of user needs, user comprehension and local semantics; the design of information organization; and the design of information display appropriate to use and setting. A grade of C or better is required in CS prerequisites 3114 and 3724.
Prerequisite(s): CS 3114 and CS 3724 
Instructional Contact Hours: (3 Lec, 3 Crd) 
CS 4644 - Creative Computing Studio (3 credits) 
Capstone computer science course at the intersection of arts and technology. Intensive immersion in different approaches to digital arts such as game design, interactive art, digital music, and immersive virtual reality. Students work in teams to conduct an end-to-end integrative design project. A grade of C or better is required in prerequisite CS 3724.
Prerequisite(s): CS 3724 
Instructional Contact Hours: (3 Lec, 3 Crd) 
CS 4654 - Intermediate Data Analytics and Machine Learning (3 credits) 
A technical analytics course. Covers supervised and unsupervised learning strategies, including regression, generalized linear models, regulations, dimension reduction methods, tree-based methods for classification, and clustering. Upper-level analytical methods shown in practice: e.g., advanced naive Bayes and neural networks.
Prerequisite(s): (STAT 3654 or CMDA 3654 or CS 3654) and (CMDA 2006 or STAT 3104 or STAT 4106 or STAT 4706) 
Instructional Contact Hours: (3 Lec, 3 Crd) 
Course Crosslist: CMDA 4654, STAT 4654 
CS 4664 - Data-Centric Computing Capstone (3 credits) 
Advanced, project-based course on deriving valuable insights from real-world data collected from a variety of sources. Team-based end-to-end projects explore the entire data science workflow: problem statement, formulating the research questions, collecting preparing and cleaning data, alternating between analyzing data and interpreting results, and synthesizing results into a written report and an interactive executable codebase.
Prerequisite(s): CS 3114 and CS 3654 or CMDA 3654 or STAT 3654 
Instructional Contact Hours: (3 Lec, 3 Crd) 
CS 4704 - Software Engineering Capstone (3 credits) 
Senior project course integrating software engineering knowledge and skills acquired in previous courses. Team- based approach to problem formulation, requirements engineering, architecture, design, implementation, integration, documentation and delivery of software system that solves a real-world problem. Pre: A grade of C or better in CS 3704.
Prerequisite(s): CS 3704 or CS 3714 or CS 3754 
Instructional Contact Hours: (3 Lec, 0 Lab, 3 Crd) 
CS 4774 - Human-Computer Interaction Design Experience (3 credits) 
Project-based design course in human-computer interaction. Team-based, end-to-end, integrative interface design project drawn from interdisciplinary areas of student expertise, e.g., virtual reality, augmented reality, embodied cognition, visualization, semiotic engineering, game design, personal information management, mobile computing, design tools, educational technology, and digital democracy. Not for CS major credit. Senior standing.
Prerequisite(s): CS 3724 and (HIST 2604 or SOC 2604 or STS 2604) and COMM 2084 
Instructional Contact Hours: (3 Lec, 3 Crd) 
CS 4784 - Human-Computer Interaction Capstone (3 credits) 
Advanced, project-based course in Human-Computer Interaction. Team-based, end-to-end, integrative interface design project drawn from area of expertise in the department, e.g., virtual reality, augmented reality, embodied cognition, visualization, semiotic engineering, game design, personal information management, mobile computing, design tools, educational technology, and digital democracy. Pre-requisite: Senior Standing required. A grade of C or better is required in CS pre-requisite 3724 and 3744
Prerequisite(s): CS 3724 and CS 3744 
Instructional Contact Hours: (3 Lec, 3 Crd) 
CS 4804 - Introduction to Artificial Intelligence (3 credits) 
Overview of the areas of problem solving, game playing, and computer vision. Search trees and/or graphs, game trees, block world vision, syntactic pattern recognition, object matching, natural language, and robotics. Senior standing required. A grade of C or better required in CS prerequisite 3114.
Prerequisite(s): CS 3114 
Instructional Contact Hours: (3 Lec, 3 Crd) 
CS 4824 - Machine Learning (3 credits) 
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). A grade of C- or better in prerequisites.
Prerequisite(s): (ECE 3514 or CS 2114) and (STAT 3704 or STAT 4105 or STAT 4604 or STAT 4705 or STAT 4714 or CMDA 2006) 
Instructional Contact Hours: (3 Lec, 3 Crd) 
Course Crosslist: ECE 4424 
CS 4884 - Computational Biology and Bioinformatics Capstone (3 credits) 
Advanced topics in computational biology and bioinformatics (CBB). Team-based approach to solving open-ended problems in CBB. Projects drawn from areas of expertise in the department, e.g., algorithms for CBB, computational models for biological systems, analysis of structure-function relationships in biomolecules, genomic data analysis and data mining, computational genomics, systems biology. Design, implementation, documentation and presentation of solutions. A grade of C or better required in CS prerequisite 3824.
Prerequisite(s): CS 3824 
Instructional Contact Hours: (3 Lec, 3 Crd) 
CS 4894 - Special Topics in Computer Science (3 credits) 
Advanced undergraduate topics in the design, development, use, and impact of computer science solutions or software systems. Topics may include blockchain systems, DevOps, new programming languages, social media software, software as a service, micro-services, and end user programming systems. May be repeated 2 times with different content for a maximum of 9 credits.
Prerequisite(s): CS 2114 and CS 2505 
Instructional Contact Hours: (3 Lec, 3 Crd) 
Repeatability: up to 9 credit hours 
CS 4944 - Seminar (1 credit) 
Prerequisite(s): CS 3604 
Instructional Contact Hours: (1 Lec, 1 Crd) 
CS 4954 - Study Abroad (1-19 credits) 
Instructional Contact Hours: Variable credit course 
CS 4964 - Field Study (1-19 credits) 
Instructional Contact Hours: Variable credit course 
CS 4974 - Independent Study (1-19 credits) 
Instructional Contact Hours: Variable credit course 
CS 4984 - Special Study (1-19 credits) 
Instructional Contact Hours: Variable credit course 
CS 4994 - Undergraduate Research (1-19 credits) 
Instructional Contact Hours: Variable credit course 
CS 5014 - Research Methods in Computer Science (3 credits) 
Preparation for research in computer science. Technical communication skills. Design and evaluation of experiments. The research process.
Instructional Contact Hours: (3 Lec, 3 Crd) 
CS 5020 - Software Design and Data Structures (3 credits) 
A programming-intensive exploration of software design concepts and implementation techniques. Builds on knowledge of fundamental object-oriented programming. Advanced object-oriented software design, algorithm development and analysis, and classic data structures. Includes a team-based software project. Not for graduate credit for those in Computer Science and Applications. Pre: Graduate standing.
Instructional Contact Hours: (3 Lec, 3 Crd) 
CS 5024 - Ethics and Professionalism in Computer Science (3 credits) 
Ethical implications and consequences of computing technology applied to algorithmic decision making, security, privacy, autonomous systems. Ethical frameworks and their application to relevant current topics. Formulating, reasoning, 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.
Instructional Contact Hours: (3 Lec, 3 Crd) 
CS 5040 - Intermediate Data Structures and Algorithm Analysis (3 credits) 
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, testing, and implementation skills. Pre: Graduate standing in Computer Science and coursework in object-oriented design and introductory data structures.
Instructional Contact Hours: (3 Lec, 3 Crd) 
CS 5044 - Object-Oriented Programming with Java (3 credits) 
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.
Instructional Contact Hours: (3 Lec, 3 Crd) 
CS 5045 - Computation for the Data Sciences (3 credits) 
Covers fundamentals of computer science and background in data sciences needed by graduate students without a computer science background. 5045: Programming language syntax and semantics for data science; abstraction and object-oriented programming; data structures; databases; visualization; ethics and data manipulation. 5046: Software engineering; data preprocessing; and machine learning. Pre: Graduate standing for 5045; 5045 for 5046.
Instructional Contact Hours: (3 Lec, 3 Crd) 
CS 5046 - Computation for the Data Sciences (3 credits) 
Covers fundamentals of computer science and background in data sciences needed by graduate students without a computer science background. 5045: Programming language syntax and semantics for data science; abstraction and object-oriented programming; data structures; databases; visualization; ethics and data manipulation. 5046: Software engineering; data preprocessing; and machine learning. Pre: Graduate standing for 5045; 5045 for 5046.
Prerequisite(s): CS 5045 
Instructional Contact Hours: (3 Lec, 3 Crd) 
CS 5054 - Programming Models for Big Data (3 credits) 
Survey of computer science concepts and tools that enable efficient computational science and data analytics with big data. Ethical issues in computing. Data structure design and implementation. Analysis of data structure and algorithm performance. Introduction to high-performance computer architectures and parallel computation. Basic operating systems concepts that influence the performance of large-scale computational modeling and data analytics. Software tools for computational modeling.
Prerequisite(s): CS 5045 
Corequisite(s): 5046 or 5525 
Instructional Contact Hours: (3 Lec, 3 Crd) 
CS 5064 - Pedagogy in Computer Science (3 credits) 
Effective teaching approaches and required instructional/research skills for Computer Science (CS) educators. Learning theories, active learning, multimedia presentation, course design, teaching with technology, student motivation, and experiential learning. CS education research methods and publication venues. Preparing teaching, research, and diversity statements for CS academic job applications. Includes a midterm teaching demo, and a final CS faculty job presentation. Pre: Graduate Standing
Instructional Contact Hours: (3 Lec, 3 Crd) 
CS 5114 - Theory of Algorithms (3 credits) 
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. Pre: Graduate standing in the CSA program.
Instructional Contact Hours: (3 Lec, 3 Crd) 
CS 5124 - Algorithms in Bioinformatics (3 credits) 
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. Pre: Graduate standing in the CSA program.
Prerequisite(s): CS 5046 and PPWS 5314 
Instructional Contact Hours: (3 Lec, 3 Crd) 
CS 5134 - Introduction to Quantum Computer Science (3 credits) 
Explores quantum states and quantum phenomena. Analysis of quantum communication concepts such as superdense coding and teleportation. Classical and quantum circuits and gate sets for computation. Quantum algorithms and comparison to classical algorithms. Classical and Quantum computational complexity theory and complexity classes. Examines quantum information concepts such as density operators, measurements, quantum channels, nonlocal games, and quantum cryptography applications and limitations. Pre: Graduate Standing.
Instructional Contact Hours: (3 Lec, 3 Crd) 
CS 5204 - Operating Systems (3 credits) 
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. Pre: Background in Operating Systems required and Graduate standing in the CSA program.
Instructional Contact Hours: (3 Lec, 3 Crd) 
CS 5214 - Modeling and Evaluation of Computer Systems (3 credits) 
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. Pre: Graduate standing the CSA program.
Instructional Contact Hours: (3 Lec, 3 Crd) 
CS 5234 - Advanced Parallel Computation (3 credits) 
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.
Prerequisite(s): CS 4234 
Instructional Contact Hours: (3 Lec, 3 Crd) 
CS 5244 - Web Application Development (3 credits) 
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.
Prerequisite(s): CS 5044 
Instructional Contact Hours: (3 Lec, 3 Crd) 
CS 5254 - Mobile Application Development (3 credits) 
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.
Prerequisite(s): CS 5044 
Instructional Contact Hours: (3 Lec, 3 Crd) 
CS 5264 - Advanced Linux Kernel Programming (3 credits) 
Design and internal organization of the Linux operating system kernel. Kernel subsystems, boot process, memory management, process and thread model, scheduling, interrupt and exception handling, virtual file system and the concrete file system, block I/O and I/O scheduler, network stack, and device drivers. Modification of existing kernel code. Design, implementation, test, and evaluation of new kernel modules. Kernel and full software stack debugging techniques, and virtualization as an aid for operating system development and debug. Software engineering techniques to analyze, modify and run a large, complex open-source code base. Pre: Graduate standing.
Instructional Contact Hours: (3 Lec, 3 Crd) 
Course Crosslist: ECE 5414 
CS 5274 - Cloud Computing: Fundamentals and Applications (3 credits) 
Focused on all-round practical and theoretical knowledge about Cloud Computing. Economics of Cloud Computing and foundational concepts such as the basics of Cloud Computing, service provisioning and deployment models, networking, and security in the cloud as well as virtualization and containerization technologies used in Cloud Computing. Deals with server-less computing, big data analytics, software development, and machine learning/artificial intelligence on the cloud. The theoretical foundations are complemented with a practical hands-on project using state-of-the-art solutions for Cloud Computing (such as Google's Google Cloud Platform (GCP) or Amazon’s Amazon Web Services (AWS)). Pre: Graduate Standing
Instructional Contact Hours: (3 Lec, 3 Crd) 
CS 5304 - Translator Design and Construction (3 credits) 
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. Pre: Graduate standing in the CSA program.
Instructional Contact Hours: (3 Lec, 3 Crd) 
CS 5314 - Programming Languages (3 credits) 
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.
Prerequisite(s): CS 3304 
Instructional Contact Hours: (3 Lec, 3 Crd) 
CS 5424 - Computational Cell Biology (3 credits) 
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.
Prerequisite(s): MATH 5515 
Instructional Contact Hours: (3 Lec, 3 Crd) 
Course Crosslist: BIOL 5424, GBCB 5424 
CS 5474 - Finite Difference Methods for Partial Differential Equations (3 credits) 
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. Pre: Graduate standing in the CSA program.
Instructional Contact Hours: (3 Lec, 3 Crd) 
Course Crosslist: MATH 5474 
CS 5484 - Finite Element Methods for Partial Differential Equations (3 credits) 
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.
Prerequisite(s): CS 3414 
Instructional Contact Hours: (3 Lec, 3 Crd) 
Course Crosslist: MATH 5484 
CS 5485 - Numerical Analysis and Software (3 credits) 
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.
Prerequisite(s): (MATH 4445 and MATH 4446) or (MATH 4445 and MATH 4446) 
Instructional Contact Hours: (3 Lec, 3 Crd) 
Course Crosslist: MATH 5485 
CS 5486 - Numerical Analysis and Software (3 credits) 
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.
Prerequisite(s): (MATH 4445 and MATH 4446) or (MATH 4445 and MATH 4446) 
Instructional Contact Hours: (3 Lec, 3 Crd) 
Course Crosslist: MATH 5486 
CS 5504 - Computer Architecture (3 credits) 
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.
Prerequisite(s): CS 4504 
Instructional Contact Hours: (3 Lec, 3 Crd) 
Course Crosslist: ECE 5504 
CS 5510 - Multiprocessor Programming (3 credits) 
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.
Prerequisite(s): ECE 4534 or ECE 4550 
Instructional Contact Hours: (3 Lec, 3 Crd) 
Course Crosslist: ECE 5510 
CS 5544 - Compiler Optimizations (3 credits) 
Overview of compilation and compiler optimizations. Design and internal organization of the Low-Level Virtual Machine compiler infrastructure. Static Single Assignment. Data-flow analysis and techniques for reaching definitions, live variable analysis, and available expressions. Lattice theory and iterative algorithms for general frameworks. Non-separable dataflow analysis including constant propagation and folding, faint variable analysis, and points-to may/must analysis. Loop-invariant code motion and lazy code motion. Static Single Assignment construction and optimizations. Register allocation and coalescing. Pointer analysis using Anderson’s and Steensgaard’s algorithms, and liveness analysis of heap data. Pre: Graduate standing.
Instructional Contact Hours: (3 Lec, 3 Crd) 
Course Crosslist: ECE 5544 
CS 5560 - Fundamentals of Info Security (3 credits) 
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. Pre: Graduate standing.
Instructional Contact Hours: (3 Lec, 3 Crd) 
Course Crosslist: ECE 5560 
CS 5565 - Network Architecture and Protocols (3 credits) 
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. 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. Graduate standing in EE, ECE, CS, or IT required.
Prerequisite(s): STAT 4714 
Instructional Contact Hours: (3 Lec, 3 Crd) 
Course Crosslist: ECE 5565 
CS 5566 - Network Architecture and Protocols (3 credits) 
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. 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. Graduate standing in EE, ECE, or IT is required.
Prerequisite(s): CS 5565 
Instructional Contact Hours: (3 Lec, 3 Crd) 
Course Crosslist: ECE 5566 
CS 5580 - Cryptographic Engineering (3 credits) 
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.
Prerequisite(s): ECE 5560 or CS 5560 
Instructional Contact Hours: (3 Lec, 3 Crd) 
Course Crosslist: ECE 5580 
CS 5584 - Network Security (3 credits) 
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. Pre: Graduate standing in CSA.
Instructional Contact Hours: (3 Lec, 3 Crd) 
Course Crosslist: ECE 5584 
CS 5590 - System and Software Security (3 credits) 
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.
Prerequisite(s): CS 5560 or ECE 5560 
Instructional Contact Hours: (3 Lec, 3 Crd) 
Course Crosslist: ECE 5590 
CS 5594 - Blockchain Technologies (3 credits) 
Principles of an open, distributed ledger. Underlying data structures and algorithms such as cryptographic 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.
Instructional Contact Hours: (3 Lec, 3 Crd) 
CS 5604 - Information Storage and Retrieval (3 credits) 
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. Pre: Graduate standing in the CSA program.
Instructional Contact Hours: (3 Lec, 3 Crd) 
CS 5614 - Database Management Systems (3 credits) 
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. Pre: Graduate standing in the CSA program.
Instructional Contact Hours: (3 Lec, 3 Crd) 
CS 5624 - Natural Language Processing (3 credits) 
Provides an overview to Natural Language Processing (NLP). Explores common NLP tasks, algorithms for effectively solving problems, and methods for evaluating performance. Focuses on high-level applications, deep neural networks and statistical algorithms that are trained on annotated text corpora to automatically acquire the knowledge needed to perform the tasks.
Prerequisite(s): CS 5805 
Instructional Contact Hours: (3 Lec, 3 Crd) 
CS 5644 - Machine Learning with Big Data (3 credits) 
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 for MS and PhD degrees in Computer Science and Applications (CSA); MEng degrees in CSA allowed to receive credit.
Prerequisite(s): CS 5044 
Instructional Contact Hours: (3 Lec, 3 Crd) 
CS 5664 - Social Media Analytics (3 credits) 
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.
Instructional Contact Hours: (3 Lec, 3 Crd) 
CS 5704 - Software Engineering (3 credits) 
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.
Prerequisite(s): CS 5044 
Instructional Contact Hours: (3 Lec, 3 Crd) 
CS 5714 - Usability Engineering (3 credits) 
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.
Instructional Contact Hours: (3 Lec, 3 Crd) 
Course Crosslist: ISE 5714 
CS 5724 - Models and Theories of Human-computer Interaction (3 credits) 
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.
Instructional Contact Hours: (3 Lec, 3 Crd) 
CS 5734 - Social Computing and Computer-Supported Cooperative Work (3 credits) 
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. Graduate standing.
Instructional Contact Hours: (3 Lec, 3 Crd) 
CS 5740 - AI Tools for Software Engineering (3 credits) 
Application of Artificial Intelligence and Machine Learning to the software development process. The course includes an introductory overview of relevant AI techniques, the use of large language models, and the construction of an AI assistant to help software engineers. Main emphasis is on exploring how developers can leverage generative AI to enhance the software development process, including generating code, reading, and analyzing code, and testing and documentation.
Instructional Contact Hours: (3 Lec, 3 Crd) 
CS 5744 - Software Design and Quality (3 credits) 
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.
Prerequisite(s): CS 5704 
Instructional Contact Hours: (3 Lec, 3 Crd) 
CS 5754 - Virtual Environments (3 credits) 
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.
Instructional Contact Hours: (3 Lec, 3 Crd) 
CS 5764 - Information Visualization (3 credits) 
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. Pre: Graduate standing.
Instructional Contact Hours: (3 Lec, 3 Crd) 
CS 5774 - User Interface Software (3 credits) 
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.
Prerequisite(s): CS 2704 
Instructional Contact Hours: (3 Lec, 3 Crd) 
CS 5784 - Software Project Management (3 credits) 
Principles, activities, and tools relevant to the project management of software systems using agile methods. Differences between traditional and agile project management approaches and develop a minimum viable product (MVP) using agile project management techniques. Student participation in a team-based format focusing on end-to-end software/systems planning, technical analysis, and development. Pre: Graduate standing.
Instructional Contact Hours: (3 Lec, 3 Crd) 
CS 5794 - Introduction to Human-Centered Technology Design (3 credits) 
An overview of key considerations in User Experience (UX) design. Learning and exploring concepts of UX, design and psychological foundations, Human-Computer Interaction, and conceptual, practical, and ethical issues associated with UX design and its evaluation. Learning from and reflecting upon case studies and industry trends. Pre: Pre: Graduate Standing.
Instructional Contact Hours: (3 Lec, 3 Crd) 
CS 5804 - Introduction to Artificial Intelligence (3 credits) 
A graduate level overview of the areas of search, knowledge representation, logic and deduction, learning, planning, and artificial intelligence applications. Pre: Graduate standing in the CSA program.
Instructional Contact Hours: (3 Lec, 3 Crd) 
CS 5805 - Machine Learning (3 credits) 
5805: Provides an introduction to the field of machine learning (or data mining) and explores the common tasks of machine learning to include preprocessing, classification, clustering, the discovery of association rules/sequential patterns, and anomaly detection. Introduces fundamentals of probability theory and random variables for classification and clustering. Investigates multiple linear and nonlinear regression models to classify social phenomena. Apply application of machine learning in solving real work problems. Credit will not be given for both CS/STAT 5525 and CS 5805. Pre: Graduate standing. 5806: Provides an in-depth understanding of classical machine learning theory using Bayesian models, statistical machine learning and pattern recognition techniques, advanced machine learning methods, and their applications.
Instructional Contact Hours: (3 Lec, 3 Crd) 
CS 5806 - Machine Learning (3 credits) 
5805: Provides an introduction to the field of machine learning (or data mining) and explores the common tasks of machine learning to include preprocessing, classification, clustering, the discovery of association rules/sequential patterns, and anomaly detection. Introduces fundamentals of probability theory and random variables for classification and clustering. Investigates multiple linear and nonlinear regression models to classify social phenomena. Apply application of machine learning in solving real work problems. Credit will not be given for both CS/STAT 5525 and CS 5805. Pre: Graduate standing
Prerequisite(s): CS 5805 
Instructional Contact Hours: (3 Lec, 3 Crd) 
CS 5814 - Introduction to Deep Learning (3 credits) 
History and basic concepts of artificial neural networks. Activation functions, optimization methods and regularization strategies used in deep multi-layered networks. Network architectures such as convolutional networks and recurrent neural networks. Deep reinforcement learning algorithms including deep Q•learning and policy gradient methods. Deep unsupervised models such as auto-encoders, and deep generative models including variational auto-encoders and generative adversarial networks. Advanced topics in deep learning such as transformers, graph neural networks, and ethics in Artificial Intelligence (AI). Deep learning(DL) applications such as text analysis, computer vision, and visual question answering. A platform for implementation of DL models will be used, such as Tensorflow or PyTorch.
Prerequisite(s): CS 5805 or CS 5824 
Instructional Contact Hours: (3 Lec, 3 Crd) 
CS 5834 - Introduction to Urban Computing (3 credits) 
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. Pre: Graduate Standing.
Instructional Contact Hours: (3 Lec, 3 Crd) 
CS 5844 - Algorithmic Human-Robot Interaction (3 credits) 
Formalizing interaction between robots and humans. Developing learning and control algorithms that enable robots to seamlessly and intelligently collaborate with humans. Mathematical approaches to human-robot interaction, learning from demonstration, Bayesian inference, intent detection, safe and optimal control, assistive autonomy, and user study design. Students review and present existing literature, conduct a research project. Pre: Graduate Standing.
Instructional Contact Hours: (3 Lec, 3 Crd) 
Course Crosslist: ME 5824 
CS 5854 - Computational Systems Biology (3 credits) 
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.
Prerequisite(s): CS 4104 or CS 5046 and GBCB 5314 
Instructional Contact Hours: (3 Lec, 3 Crd) 
CS 5864 - Learning-based Computer Vision (3 credits) 
Comprehensive introduction to modern computer vision. Fundamental concepts in computer vision and pattern recognition such as filtering, alignment, and matching. Survey of computer vision tasks, models, and learning techniques related to vision architectures, visual recognition methods, multimodal and generative models, and select advanced topics.
Prerequisite(s): CS 5805 
Instructional Contact Hours: (3 Lec, 3 Crd) 
CS 5894 - Final Examination (3 credits) 
Instructional Contact Hours: (3 Lec, 3 Crd) 
CS 5904 - Project and Report (1-19 credits) 
Instructional Contact Hours: Variable credit course 
CS 5914 - Emerging Topics in Computer Science (3 credits) 
Emerging topics in computer science. Covers contemporary and often rapidly changing topics from the theory, practice, or application of computing. May be repeated 2 times with different content for up to 9 credit hours. Pre: Graduate standing.
Instructional Contact Hours: (3 Lec, 3 Crd) 
Repeatability: up to 9 credit hours 
CS 5925 - Integrated Project Design (6 credits) 
CS 5925: Provides an introduction to project-driven, team-based, experiential learning fundamentals; study of team management; the professional and ethical implications of proposals; design and implementation of large projects. Computing first principles and tools will be applied to the generation of design ideas to solve open-ended societal and/or individual needs. Projects will be fully integrated across CS 5925 and CS 5926, and drive the practical study of team management, professionalism, ethics, and computing principles. Discussions of ethics case studies and application of ethical principles throughout project design and implementation. Course credit will not be awarded for both CS 5925 and CS 5024 Ethics and Professionalism. CS 5926: Provides in-depth study and significant code development as part of a focused implementation of team-based, technical projects begun in CS 5925. Software Project Management first principles and tools will be studied and applied to the evolution of project-based designs. Projects will be fully integrated throughout the course and drive the accelerated, advanced development of demonstrable project prototypes begun in CS 5925. Learning outcomes cover 1) Software Project Management fundamentals; and 2) Project-driven design, development, and implementation of a Minimum Viable Product (MVP) including unit, comprehensive, and regression testing used in project evaluation (e.g., testing harness). Advanced application of team management, ethics, and professionalism principles learned in CS 5925 provide a foundation for iterative development, analysis, and assessment of project design and implementation. Course credit will not be awarded for both CS 5926 and CS 5784 Software Project Management.
Instructional Contact Hours: (6 Lec, 6 Crd) 
Course Crosslist: ECE 5095 
CS 5926 - Integrated Project Design (6 credits) 
CS 5925: Provides an introduction to project-driven, team-based, experiential learning fundamentals; study of team management; the professional and ethical implications of proposals; design and implementation of large projects. Computing first principles and tools will be applied to the generation of design ideas to solve open-ended societal and/or individual needs. Projects will be fully integrated across CS 5925 and CS 5926, and drive the practical study of team management, professionalism, ethics, and computing principles. Discussions of ethics case studies and application of ethical principles throughout project design and implementation. Course credit will not be awarded for both CS 5925 and CS 5024 Ethics and Professionalism CS 5926: Provides in-depth study and significant code development as part of a focused implementation of team-based, technical projects begun in CS 5925. Software Project Management first principles and tools will be studied and applied to the evolution of project-based designs. Projects will be fully integrated throughout the course and drive the accelerated, advanced development of demonstrable project prototypes begun in CS 5925. Learning outcomes cover 1) Software Project Management fundamentals; and 2) Project-driven design, development, and implementation of a Minimum Viable Product (MVP) including unit, comprehensive, and regression testing used in project evaluation (e.g., testing harness). Advanced application of team management, ethics, and professionalism principles learned in CS 5925 provide a foundation for iterative development, analysis, and assessment of project design and implementation. Course credit will not be awarded for both CS 5926 and CS 5784 Software Project Management.
Prerequisite(s): CS 5925 
Instructional Contact Hours: (6 Lec, 6 Crd) 
Course Crosslist: ECE 5096 
CS 5934 - Capstone Project (3 credits) 
Design, implementation, and communication of a software system throughout the product lifecycle. Current software product development models. Product ideation, end-user and stakeholder analysis. Product development targeted to market need. Communication of design and goals. Use of appropriate development tools. Pre: Graduate standing in Computer Science.
Instructional Contact Hours: (3 Lec, 3 Crd) 
CS 5944 - Graduate Seminar (1 credit) 
Instructional Contact Hours: (1 Lec, 1 Crd) 
CS 5974 - Independent Study (1-19 credits) 
Instructional Contact Hours: Variable credit course 
CS 5984 - Special Study (1-19 credits) 
Instructional Contact Hours: Variable credit course 
CS 5994 - Research and Thesis (1-19 credits) 
Instructional Contact Hours: Variable credit course 
CS 6104 - Advanced Topics in Theory of Computation (3 credits) 
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.
Prerequisite(s): CS 5104 or CS 5114 
Instructional Contact Hours: (3 Lec, 3 Crd) 
Repeatability: up to 9 credit hours 
CS 6204 - Advanced Topics in Systems (3 credits) 
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.
Prerequisite(s): CS 5204 or CS 5214 
Instructional Contact Hours: (3 Lec, 3 Crd) 
Repeatability: up to 9 credit hours 
CS 6304 - Advanced Topics in Languages and Translation (3 credits) 
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.
Prerequisite(s): CS 5304 or CS 5314 
Instructional Contact Hours: (3 Lec, 3 Crd) 
Repeatability: up to 9 credit hours 
CS 6404 - Advanced Topics in Mathematical Software (3 credits) 
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.
Prerequisite(s): CS 5485 
Instructional Contact Hours: (3 Lec, 3 Crd) 
Repeatability: up to 9 credit hours 
CS 6444 - Verification and Validation in Scientific Computing (3 credits) 
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. Graduate Standing required
Instructional Contact Hours: (3 Lec, 3 Crd) 
Course Crosslist: AOE 6444, ME 6444 
CS 6564 - Multimedia Networking (3 credits) 
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.
Prerequisite(s): CS 5565 
Instructional Contact Hours: (3 Lec, 3 Crd) 
Course Crosslist: ECE 6564 
CS 6604 - Advanced Topics in Data and Information (3 credits) 
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.
Prerequisite(s): CS 5604 or CS 5614 
Instructional Contact Hours: (3 Lec, 3 Crd) 
Repeatability: up to 9 credit hours 
CS 6704 - Advanced Topics in Software Engineering (3 credits) 
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.
Prerequisite(s): CS 5704 or CS 5714 
Instructional Contact Hours: (3 Lec, 3 Crd) 
Repeatability: up to 9 credit hours 
CS 6724 - Advanced Topics in Human-computer Interaction (3 credits) 
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.
Prerequisite(s): CS 5714 or CS 5724 or CS 5734 
Instructional Contact Hours: (3 Lec, 3 Crd) 
CS 6804 - Advanced Topics in Intelligent Systems (3 credits) 
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.
Prerequisite(s): CS 5804 or CS 5814 
Instructional Contact Hours: (3 Lec, 3 Crd) 
Repeatability: up to 9 credit hours 
CS 6814 - Science-Guided Machine Learning (3 credits) 
Addresses specific advanced topics in science-guided machine learning (SGML). Seminal papers, book chapters, and recent developments in the field will be used as a source of material too new to yet be in a textbook. Detailed study of science-guided learning, science-guided model design, science-guided initialization, and hybrid-science-machine learning modeling. Student participation is in a seminar style format. Pre: Graduate standing.
Instructional Contact Hours: (3 Lec, 3 Crd) 
CS 6824 - Adv Topics Comp Biol & Bioinf (3 credits) 
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. Pre: Graduate standing; other prerequisites may apply.
Instructional Contact Hours: (3 Lec, 3 Crd) 
CS 7994 - Research and Dissertation (1-19 credits) 
Instructional Contact Hours: Variable credit course