Computer Science (CSCI)

Courses

Show only these courses...

CSCI 1000 (1) Computer Science as a Field of Work and Study

Introduces curriculum, learning techniques, time management and career opportunities in Computer Science. Includes presentations from alumni and others with relevant educational and professional experience.

Equivalent - Duplicate Degree Credit Not Granted: CSPB 1000
Requisites: Restricted to students with 0-26 credits (Freshmen) Computer Science (CSEN-BSCS or CSEN-BA) or Engineering Open Option (XXEN) majors only.
Additional Information: Departmental Category: General Computer Science

CSCI 1200 (3) Introduction to Computational Thinking

Teaches computational thinking and techniques for writing computer programs using the Python programming language. Intended for students who realize that computational skills are beneficial to all fields of study, but who have little or no experience in programming or are not Computer Science majors. Students will be expected to create computer programs to solve problems in a range of disciplines. Does not count as Computer Science credit for the Computer Science BA, BS, or minor.

Equivalent - Duplicate Degree Credit Not Granted: LING 1200 or INFO 1701

CSCI 1300 (4) Computer Science 1: Starting Computing

Teaches techniques for writing computer programs in higher level programming languages to solve problems of interest in a range of application domains. Appropriate for students with little to no experience in computing or programming.

Equivalent - Duplicate Degree Credit Not Granted: CSCI 1310 or CSCI 1320 or ECEN 1310 CSPB 1300
Requisites: Requires a prerequisite or corequisite course of APPM 1235 or APPM 1340 or APPM 1345 or APPM 1350 or MATH 1150 or MATH 1300 or MATH 1310 (all minimum grade C-).

CSCI 2270 (4) Computer Science 2: Data Structures

Studies data abstractions (e.g., stacks, queues, lists, trees, graphs, heaps, hash tables, priority queues) and their representation techniques (e.g., linking, arrays). Introduces concepts used in algorithm design and analysis including criteria for selecting data structures to fit their applications. Knowledge OF C++ is highly recommended.

Equivalent - Duplicate Degree Credit Not Granted: CSCI 2275 CSPB 2270
Requisites: Requires prerequisite course of ((CSCI 1300 or CSCI 1320 or ECEN 1310 minimum grade C-) or (ASEN 1320 minimum grade B-)) and prerequisite or corequisite course of (MATH 1300 or MATH 1310 or APPM 1345 or APPM 1350 minimum grade C-).
Additional Information: Departmental Category: General Computer Science

CSCI 2275 (4) Programming and Data Structures

Combines the content in CSCI 1300 and CSCI 2270 and is intended for students with experience with at least one object oriented programming language. Assumes knowledge of programming constructs- data types, conditionals, loops and classes. Students must pass a programming competency exam administered by the computer science department to take this class. The course includes an expedited instruction in the C++ programming language and then primarily focuses on the content in CSCI 2270: data abstractions (e.g., stacks, queues, lists, trees, graphs, heaps, hash tables, priority queues) and their representation techniques (e.g., linking, arrays). Introduces concepts used in algorithm design and analysis including criteria for selecting data structures to fit their applications.

Equivalent - Duplicate Degree Credit Not Granted: CSCI 2270 or CSPB 2270
Requisites: Requires prerequisite or co-requisite of MATH 1300 or MATH 1310 or APPM 1345 or APPM 1350 (all minimum grade C-).

CSCI 2400 (4) Computer Systems

Covers how programs are represented and executed by modern computers, including low-level machine representations of programs and data, an understanding of how computer components and the memory hierarchy influence performance.

Equivalent - Duplicate Degree Credit Not Granted: CSPB 2400
Requisites: Requires prerequisite of CSCI 2270 or CSCI 2275 or ECEN 2370 (minimum grade C-).
Additional Information: Departmental Category: General Computer Science

CSCI 2750 (3) Computing, Ethics and Society

Satisfies the ethics requirement for computer science BA and BS majors. This course is intended to provide students with perspectives which help them deal with ethical and societal implications in their careers as computing professionals. Examines ethical ramifications of current and future computing systems and technologies and reflects upon the broad implications of computing upon our society. Student work consists of reading, participation in class discussions and presentations, essays, and a final project. Students from outside computer science also are welcome. Necessary background is basic familiarity with computing. Does not count as Computer Science elective credit for the Computer Science BA, BS, or minor.

Recommended: Sophomore standing or beyond, and a basic familiarity with computing.

CSCI 2820 (3) Linear Algebra with Computer Science Applications

Introduces the fundamentals of linear algebra in the context of computer science applications. Includes vector spaces, matrices, linear systems, and eigenvalues. Includes the basics of floating point computation and numerical linear algebra.

Equivalent - Duplicate Degree Credit Not Granted: CSPB 2820
Requisites: Requires prerequisite courses of (CSCI 2270 or CSCI 2275) and (APPM 1360 or MATH 2300) (all minimum grade C-).
Additional Information: Departmental Category: General Computer Science

CSCI 2824 (3) Discrete Structures

Covers foundational materials for computer science that is often assumed in advanced courses. Topics include set theory, Boolean algebra, functions and relations, graphs, propositional and predicate calculus, proofs, mathematical induction, recurrence relations, combinatorics, discrete probability. Focuses on examples based on diverse applications of computer science.

Equivalent - Duplicate Degree Credit Not Granted: CSPB 2824
Requisites: Requires prerequisite courses of (ASEN 1320 or CSCI 1200 or CSCI 1300 or CSCI 1320 or CSCI 2275 or ECEN 1030 or ECEN 1310) and (APPM 1345 or APPM 1350 or MATH 1300 or MATH 1310) (all minimum grade C-).
Recommended: Prerequisite Calc 2 (APPM 1360 or MATH 2300) is strongly recommended.
Additional Information: Departmental Category: Theory of Computation

CSCI 2830 (1-4) Special Topics in Computer Science

Covers topics of interest in computer science at the sophomore level. Content varies from semester to semester. Does not count as Computer Science credit for the Computer Science BA, BS or minor.

Repeatable: Repeatable for up to 9.00 total credit hours. Allows multiple enrollment in term.
Additional Information: Departmental Category: General Computer Science

CSCI 2834 (1) Discrete Structures Workgroup

Provides additional problem-solving practice and guidance for students enrolled in CSCI 2824. Students work in a collaborative environment to further develop their problem-solving skills with the assistance of facilitators. Does not count as Computer Science credit for the Computer Science BA, BS, or minor.

Repeatable: Repeatable for up to 3.00 total credit hours.
Requisites: Requires corequisite course of CSCI 2824.

CSCI 2897 (3) Calculating Biological Quantities

Master practical mathematical techniques for representing and analyzing biological quantities of different kinds. Develop mathematical intuition about biological calculations. Learn to model and solve simple feedback processes. Learn to model and solve simple accumulation processes. Learn to model and decompose simple vector spaces. Learn standard approximation and optimization strategies. Adapt and combine methods to solve real-world problems. Background in biology not required. This course is intended for students who are interested in Computational Biology, but will not take Differential Equations (APPM 2360/MATH 3430) as part of their degree plan. Does not count as Computer Science credit for Computer Science majors or minor.

Requisites: Requires prerequisite course of APPM 1345 or APPM 1350 or MATH 1300 or MATH 1310 (minimum grade C-)

CSCI 2900 (1-3) Lower Division, Undergraduate Level Independent Study

Offers selected topics at the elementary level for students with little or no previous computing experience. Does not count as Computer Science credit for the Computer Science BA, BS or minor.

Repeatable: Repeatable for up to 6.00 total credit hours. Allows multiple enrollment in term.
Additional Information: Departmental Category: General Computer Science

CSCI 3002 (4) Fundamentals of Human Computer Interaction

Introduces the practice and research of human-computer interaction, including its history, theories, the techniques of user-centered design, and the development of interactive technologies. Covers computing in society at large with respect to domains such as health, education, assistive technology, ethics, environment, and more.

Requisites: Requires prerequisite course of CSCI 2270 or CSCI 2275 (both minimum grade C-). Restricted to students with 27-180 credits (Sophomores, Juniors or Seniors).
Additional Information: Departmental Category: Artificial Intelligence

CSCI 3010 (3) Intensive Programming Workshop

Explores concepts and techniques for design and construction of larger, reliable, and maintainable software systems in the context of object-oriented programming. Covers various topics including: object-oriented programming paradigms, scope, inheritance, program structure and design, practical use of version control, working with established code bases, and building graphical user interfaces. Emphasizes coding individually and in pairs and includes in class lab work, smaller coding assignments, and multiple weeks-long projects. Not intended for students in their final year of the Computer Science BA or BS degree. Formerly offered as a special topics course.

Requisites: Requires a prerequisite course of (CSCI 2270 or CSCI 2275) and a prerequisite or co-requisite course of CSCI 3308 (all minimum grade C-).

CSCI 3022 (3) Introduction to Data Science with Probability and Statistics

Introduces students to the tools methods and theory behind extracting insights from data. Covers algorithms of cleaning and munging data, probability theory and common distributions, statistical simulation, drawing inferences from data, and basic statistical modeling.

Equivalent - Duplicate Degree Credit Not Granted: CSPB 3022
Requisites: Requires prerequisite course of (CSCI 2270 or CSCI 2275) and (APPM 1360 or MATH 2300) and (CSCI 2824 or ECEN 2703 or APPM 3170 or MATH 2001) (all minimum grade C-).
Additional Information: Departmental Category: Artificial Intelligence

CSCI 3090 (3) Introduction to Quantum Computing

Covers the basics of quantum computation, including the basics of quantum information; axioms of quantum mechanics; quantum circuits and universality; the relationship between quantum and classical complexity classes; simple quantum algorithms such as the quantum Fourier transform; Shor factoring algorithm; Grover search algorithm; physical implementation of quantum computation; error correction and fault tolerance.

Equivalent - Duplicate Degree Credit Not Granted: PHYS 3090 and ECEN 3090
Requisites: Requires prerequisite course of APPM 2360 or APPM 3310 or CSCI 2820 or MATH 2130 or MATH 2135 (minimum grade C-).

CSCI 3100 (1) Software and Society

Provides students with an understanding of the professional, ethical, legal and social issues and responsibilities of software developers, as well as providing them with the ability to analyze the local and global impacts of computing on individuals, organizations and society. Required for, and restricted to, Computer Science majors completing a Senior Thesis. Department consent required.

Equivalent - Duplicate Degree Credit Not Granted: CSCI 4308 and CSCI 4328 and CSCI 4338 and CSCI 4348
Requisites: Restricted to Computer Science majors only.
Grading Basis: Letter Grade
Additional Information: Departmental Category: General Computer Science

CSCI 3104 (4) Algorithms

Covers the fundamentals of algorithms and various algorithmic strategies, including time and space complexity, sorting algorithms, recurrence relations, divide and conquer algorithms, greedy algorithms, dynamic programming, linear programming, graph algorithms, problems in P and NP, and approximation algorithms.

Equivalent - Duplicate Degree Credit Not Granted: CSPB 3104
Requisites: Requires prerequisite courses of (CSCI 2270 or CSCI 2275) and (APPM 1360 or MATH 2300) and (one of the following: CSCI 2824 or ECEN 2703 or APPM 3170 or MATH 2001) (all minimum grade C-).
Additional Information: Departmental Category: Theory of Computation

CSCI 3112 (1) Professional Development in Computer Science

Supports students in developing professional skills and practices in computing, including: preparing for technical and behavioral interviews, professional networking, mastering new technologies not addressed in the curriculum, presenting work, the role of graduate study, and exploring career and research directions.

Requisites: Requires prerequisite course of CSCI 2270 or CSCI 2275 (minimum grade C-). Restricted to Computer Science majors, Computer Science minors, and Computational Biology minors.
Additional Information: Departmental Category: Artificial Intelligence

CSCI 3150 (3) Universal Design for Digital Media

Focusing on the concepts of universal design and Web Standards, this course will address issues that occur at the nexus of web standards, Universal Design and the needs of persons with disabilities. Students will gain the expertise and skills to create media and web sites which are accessible, usable and effective for all users and device platforms.

Equivalent - Duplicate Degree Credit Not Granted: ATLS 3150
Requisites: Requires prerequisite course of CSCI 1300 (minimum grade C-).
Recommended: Prerequisite some knowledge of creating web pages with either direct HTML coding or with web design software.

CSCI 3155 (4) Principles of Programming Languages

Studies principles governing the design and analysis of programming languages and their underlying execution models. Explores values, scoping, recursion, higher-order functions, type systems, control structures, and objects. Introduces formal semantics as a framework for understanding programming features. Introduces advanced programming concepts such as functional programming, higher-order functions, immutable values and structures, inductive types, functors, continuation-passing; and object-oriented programming using inheritance, generics and covariance/contravariance in a functional programming language such as Scala.

Equivalent - Duplicate Degree Credit Not Granted: CSPB 3155
Requisites: Requires prerequisite courses of (CSCI 2270 or CSCI 2275) and (CSCI 2400 or ECEN 2360 or ECEN 3350) and (CSCI 2824 or ECEN 2703 or APPM 3170 or MATH 2001) (all minimum grade C-).
Additional Information: Departmental Category: Programming Languages

CSCI 3202 (3) Introduction to Artificial Intelligence

Surveys artificial intelligence techniques of search, knowledge representation and reasoning, probabilistic inference, machine learning, and natural language. Knowledge of Python strongly recommended.

Equivalent - Duplicate Degree Credit Not Granted: CSPB 3202
Requisites: Requires prereqs (CSCI 2270 or CSCI 2275) (APPM 3170 or CSCI 2824 or ECEN 2703 or MATH 2001) (APPM 3570 or CHEN 3010 or CSCI 3022 or CVEN 3227 or ECEN 3810 or ECON 3818 or MATH 3510 or MATH 4510 or STAT 3100 or STAT 4000) (all min grade C-).
Additional Information: Departmental Category: Artificial Intelligence

CSCI 3287 (3) Design and Analysis of Database Systems

Introduces the fundamental concepts of database requirements analysis, database design, and database implementation with emphasis on the relational model and the SQL programming language. Introduces the concepts of Big Data and NoSQL systems.

Equivalent - Duplicate Degree Credit Not Granted: CSPB 3287
Requisites: Requires prerequisite course of CSCI 2270 or CSCI 2275 (minimum grade C-).
Additional Information: Departmental Category: Database Systems

CSCI 3302 (3) Introduction to Robotics

Introduces students to fundamental concepts in autonomous robotics: mechanisms, locomotion, kinematics, control, perception and planning. Consists of lectures and lab sessions that are geared toward developing a complete navigation stack on a miniature mobile robotic platform.

Equivalent - Duplicate Degree Credit Not Granted: ECEN 3303 and CSPB 3302
Requisites: Requires prerequisite courses of (CSCI 2270 or CSCI 2275) and (APPM 3170 or CSCI 2824 or ECEN 2703 or MATH 2001) and (APPM 2360 or APPM 3310 or CSCI 2820 or MATH 2130 or MATH 2135) (all minimum grade C-).
Additional Information: Departmental Category: Artificial Intelligence

CSCI 3308 (3) Software Development Methods and Tools

Covers tools and techniques for successful software development with a strong focus on best practices used in industry. Students work in small teams to complete a semester-long application development project. Students learn front-end design and construction using HTML & CSS, back-end database design and construction, and full-stack integration. Students gain exposure to agile methodologies, web services, distributed version control, requirements definition, automated integration testing, and cloud-based application deployment.

Equivalent - Duplicate Degree Credit Not Granted: CSPB 3308
Requisites: Requires prerequisite course of CSCI 2270 or CSCI 2275 (both minimum grade C-).
Additional Information: Departmental Category: Software Engineering

CSCI 3352 (3) Biological Networks

This course examines the computational representation and analysis of biological phenomena through the structure and dynamics of networks, from molecules to species. Attention focuses on algorithms for clustering network structures, predicting missing information, modeling flows, regulation, and spreading-process dynamics, examining the evolution of network structure, and developing intuition for how network structure and dynamics relate to biological phenomena.

Requisites: Prereqs(1 of ASTR2600/CSCI 2270/2275/INFO2201/PHYS2600) (1 of APPM1345/1350/MATH1300/1310) (1 of APPM3570/CHEN3010/CSCI3022/CVEN3227/EBIO4410/ECEN3810/ECON3818/IPHY3280/MATH3510/4510/4520/MCDB3450/MCEN3047/PSYC2111/STAT2600/3100/4000/4520)(min C-)

CSCI 3403 (4) Introduction to CyberSecurity for a Converged World

Introduces core concepts in cybersecurity including confidentiality, integrity, authentication, risk management, and adversarial thinking. The concepts will be applied to both traditional information technology (IT) systems and cyber physical systems (CPS). At the conclusion of the course students should have a solid foundation in cybersecurity and hands-on experience.

Equivalent - Duplicate Degree Credit Not Granted: CSPB 3403
Requisites: Requires prerequisite course of CSCI 2400 or ECEN 2360 or ECEN 3350 (minimum grade C-).
Additional Information: Departmental Category: Operating Systems and Hardware

CSCI 3434 (3) Theory of Computation

Introduces the foundations of formal language theory, computability, and complexity. Shows relationship between automata and various classes of languages. Addresses the issue of which problems can be solved by computational means, and studies complexity of solutions.

Requisites: Requires prerequisite course of CSCI 3104 (minimum grade C-).
Additional Information: Departmental Category: Theory of Computation

CSCI 3593 (3) Computer Organization

Studies computer design at the microarchitecture level. Discusses instruction set architecture design, arithmetic and logic unit design, control logic, memory design and caches, simple pipelining, I/O and peripheral devices. Briefly covers aspects of modern computer architecture, such as multicore processors and hardware security.

Equivalent - Duplicate Degree Credit Not Granted: ECEN 3593 ECEN 5590
Requisites: Requires prerequisite course of (ECEN 2360 and ECEN 3350) or CSCI 2400 (minimum grade C-).
Additional Information: Departmental Category: Operating Systems and Hardware

CSCI 3656 (3) Numerical Computation

Covers development, computer implementation, and analysis of numerical methods for applied mathematical problems. Explores topics such as floating point arithmetic, numerical solution of linear systems of equations, root finding, numerical interpolation, differentiation, and integration.

Requisites: Requires prerequisite courses of (ASEN 1320 or CSCI 1300 or CSCI 1320 or CSCI 2275 or ECEN 1310) and (APPM 1360 or MATH 2300) and (APPM 2360 or APPM 3310 or CSCI 2820 or MATH 2130 or MATH 2135) (all min. grade C-).
Additional Information: Departmental Category: Numerical Computation

CSCI 3702 (3) Cognitive Science

Introduces cognitive science, drawing from psychology, philosophy, artificial intelligence, neuroscience, and linguistics. Studies the linguistic relativity hypothesis, consciousness, categorization, linguistic rules, the mind-body problem, nature versus nurture, conceptual structure and metaphor, logic/problem solving and judgment. Emphasizes the nature, implications and limitations of the computational model of mind.

Equivalent - Duplicate Degree Credit Not Granted: LING 3005 and PHIL 3310 and PSYC 3005 and SLHS 3003 and CSPB 3702
Recommended: Prerequisites two of the following CSCI 1300 or CSCI 2275 or LING 2000 or PHIL 2440 or PSYC 2145.
Additional Information: Arts Sci Gen Ed: Distribution-Arts Humanities
Arts Sci Gen Ed: Distribution-Natural Sciences
Arts Sci Gen Ed: Distribution-Social Sciences

CSCI 3753 (4) Design and Analysis of Operating Systems

Analyzes the software that extends hardware to provide a computing environment, including the role of linkers, file systems, resource sharing, security and networking. Studies the history of operating system organization and design and their influence on security, functionality and reliability.

Equivalent - Duplicate Degree Credit Not Granted: CSPB 3753
Requisites: Requires prerequisite courses of (CSCI 2270 or CSCI 2275) and (CSCI 2400 or ECEN 2360 or ECEN 3350) (all minimum grade C-).
Additional Information: Departmental Category: Operating Systems and Hardware

CSCI 3832 (3) Natural Language Processing

Explores the theoretical and practical issues that arise in getting computers to perform useful and interesting tasks with human languages. Topics include information extraction, dialog systems and machine translation. Focus is on the use of language data and machine learning algorithms to build robust systems.

Requisites: Requires prerequisite courses of (CSCI 2270 or CSCI 2275) and (CSCI 2824 or MATH 2001 or ECEN 2703 or APPM 3170) (all minimum grade C-).
Additional Information: Departmental Category: Artificial Intelligence

CSCI 4022 (3) Advanced Data Science

Introduces students to advanced tools, methods, and theory for extracting insights from data. Covers computational tools for storing and working with large data sets and computational techniques for common big data scenarios like graph data, recommender systems, and dimensionality reduction. Emphasizes both the efficient implementation of algorithms as well as the mathematical foundations behind techniques.

Requisites: Prereqs of (APPM 3310 or CSCI 2820 or MATH 2130 or MATH 2135) (CSCI 3022 or APPM 3570 or CHEN 3010 or CVEN 3227 or MATH 3510 or MATH 4510 or ECEN 3810 or ECON 3818 or STAT 3100 or STAT 4000 or 4520) CSCI 3104 (all min grade C-).
Additional Information: Departmental Category: Artificial Intelligence

CSCI 4113 (3) Linux System Administration

Introduces Linux Unix system administration and related topics. Includes hardware and software installation, storage management, configuration of user accounts and system services, development of automation and monitoring tools, and the provisioning of common network services. This laboratory-focused course will provide significant exposure to the network security concerns of Internet connected hosts. Students will build a network of Linux servers from the ground up using provided computing resources and must maintain and secure these servers themselves.

Equivalent - Duplicate Degree Credit Not Granted: CSCI 5113 and CYBR 5113
Requisites: Requires prerequisite course of CSCI 3753 (minimum grade C-).
Additional Information: Departmental Category: Operating Systems and Hardware

CSCI 4114 (3) Practical Algorithmic Complexity

When coming across an algorithmic problem, how do we think about how hard it is? Beyond just how much time or memory it takes, computational complexity offers a plethora of concepts for understanding this fundamental question. This leads to the appropriate choice of algorithm for the job, the development of new algorithms, and understanding the role of algorithmic complexity in natural settings such as biology and physics.

Equivalent - Duplicate Degree Credit Not Granted: CSCI 5114
Requisites: Requires a prerequisite course of CSCI 3104 (minimum grade C-).

CSCI 4118 (3) Software Engineering for Scientists

Learn the core principles of software engineering to develop scientific software that is robust and reproducible. This class targets quantitative scientists in any disciple who have programming skills (any language) and want to use software to further their research. We cover version control, testing, benchmarking, data structures, algorithms, and pipelines. Instructor approval is required for CS majors and CS minors.

Equivalent - Duplicate Degree Credit Not Granted: CSCI 6118
Requisites: Restricted to non-Computer Science majors and non-Computer Science minors only.
Recommended: Prerequisites ASEN 1320 or CSCI 1200 or CSCI 1300 or CSCI 2275 or ECEN 1310 or INFO 1201 and knowledge of a programming language, preferably Python.

CSCI 4122 (3) Information Visualization

Studies interactive visualization techniques that help people analyze data. This course introduces design, development, and validation approaches for interactive visualizations with applications in various domains, including the analysis of text collections, software visualization, network analytics, and the biomedical sciences. It covers underlying principles, provides an overview of existing techniques, and teaches the background necessary to design innovative visualizations.

Equivalent - Duplicate Degree Credit Not Granted: CSPB 4122
Requisites: Requires prerequisite courses (CSCI 2270 or CSCI 2275) and (CSCI 2824 or ECEN 2703 or APPM 3170) (all minimum grade C-).

CSCI 4133 (3) Fundamentals of Computer Security

Practice thinking like an attacker by exploring several modern computer security attacks and defenses through hands-on programming projects. Topics include applied cryptography (encryption, authentication), web security (XSS, CSRF, SQL Injection), network security (TLS, MITM attacks), application security (shell injection, buffer overflows), and other current events and trends (government surveillance, botnets, cryptocurrencies).

Equivalent - Duplicate Degree Credit Not Granted: ECEN 4133
Requisites: Requires prerequisites courses of (CSCI 2270 or CSCI 2275) and (CSCI 2400 or ECEN 2360 or ECEN 3350) (all minimum grade C-).
Recommended: Corequisite CSCI 4593 (soon to be CSCI 3593).
Additional Information: Departmental Category: Operating Systems and Hardware

CSCI 4200 (3) Introduction to Wireless Systems

Overviews the distinctive characteristics of the wireless communications medium. Topics covered include: Analog signals, Antennas and Propagation, Digital Signals, Sampling, Quadrature Signals, Digital Modulation, SNR and SINR Concepts, Channel Models, Channel Statistics, and Link Budgets. The course includes an introduction to MIMO and beam-forming as implemented in modern communication systems. Software Defined Radio (SDR) is introduced to facilitate student hands-on learning of radio operation. Recommended: Familiarity with basic programming, statistics, and computer networking concepts. Formerly CYBR 4200.

Equivalent - Duplicate Degree Credit Not Granted: CYBR 5200 and CSCI 5200
Requisites: Requires prerequisites (CSCI 2400 or ECEN 2360 or ECEN 3350) and (APPM 3570 or CHEN 3010 or CSCI 3022 or CVEN 3227 or ECEN 3810 or ECON 3818 or MATH 3510 or MATH 4510 or MCEN 3047 or STAT 3100 or STAT 4000 or STAT 4520) and PHYS 1120 (all min grade C-).

CSCI 4229 (3) Computer Graphics

Studies design, analysis and implementation of computer graphics techniques. Topics include interactive techniques, 3D viewing and models, clipping, transformations, projection, removal of hidden surfaces, lighting, textures and shadows. Knowledge of basic linear algebra is required.

Equivalent - Duplicate Degree Credit Not Granted: CSCI 5229
Requisites: Requires prerequisite course of CSCI 2270 or CSCI 2275 (minimum grade C-).
Additional Information: Departmental Category: Graphics

CSCI 4239 (3) Advanced Computer Graphics

Studies design, analysis and implementation of advanced computer graphics techniques. Topics include shaders, using the GPU for high performance computing, graphics programming on embedded devices such as mobile phones; advanced graphics techniques such as ray tracing.

Equivalent - Duplicate Degree Credit Not Granted: CSCI 5239
Requisites: Requires prerequisite course of CSCI 4229 (minimum grade C-).
Additional Information: Departmental Category: Graphics

CSCI 4240 (3) Introduction to Blockchain

Examines an emerging technology known as blockchain. Blockchain refers to the distributed and decentralized database technology behind popular cryptocurrencies such as Bitcoin and Ethereum. However, it can be used to record and transfer any digital asset, not just currency. This course explores the fundamentals of blockchain technology and its application from three key perspectives: policy and governance, technology, and application. Students gain an understanding of key concepts and how to apply them in the industry.

Equivalent - Duplicate Degree Credit Not Granted: CYBR 5240 and CSCI 5240
Requisites: Requires prerequisite courses of (CSCI 2270 or CSCI 2275) and (CSCI 2824 or ECEN 2703 or APPM 3170 or MATH 2001) (all minimum grade C-).

CSCI 4250 (3) History of Computing

Explores the multifaceted histories of computing as punctuated by "great works" of computer science within the context of historical and social changes influencing and influenced by computing. We will consider people, institutions, and innovations starting with mechanical calculation and mathematical frameworks such as by Lovelace, Pascal, and Turing; early computers such as ABC and ENIAC; the pivotal role of military funding; the founding and development of fields transforming our lives such as artificial intelligence and the internet; and ways other fields, from engineering to cognitive science, interweave in the evolution of computing. Does not count as CS credit for the Computer Science BA, BS or minor.

Requisites: Restricted to students with 57-180 credits (Juniors or Seniors).
Additional Information: Departmental Category: General Computer Science

CSCI 4253 (3) Datacenter Scale Computing - Methods, Systems and Techniques

Covers the primary problem solving strategies, methods and tools needed for data-intensive programs using large collections of computers typically called "warehouse scale" or "data-center scale" computers. Examines methods and algorithms for processing data-intensive applications, methods for deploying and managing large collections of computers in an on-demand infrastructure and issues of large-scale computer system design.

Equivalent - Duplicate Degree Credit Not Granted: CSCI 5253
Requisites: Requires prerequisite course of CSCI 3753 (minimum grade C-).
Recommended: Prerequisite CSCI 4273.
Additional Information: Departmental Category: Operating Systems and Hardware

CSCI 4273 (3) Network Systems

Focuses on design and implementation of network programs and systems, including topics in network protocols, file transfer, client-server computing, remote procedure call and other contemporary network system design and programming techniques. Familiarity with C and Unix or Linux is required.

Requisites: Requires prerequisite course of CSCI 3753 (minimum grade C-).
Additional Information: Departmental Category: Operating Systems and Hardware

CSCI 4302 (3) Advanced Robotics

An intensive exploration of major challenges in robotics, providing a hands-on review of current research topics in the context of a "robotics grand challenge" problem. Topics include online planning and control, state estimation, simultaneous localization and mapping, and operating under partial observability.

Equivalent - Duplicate Degree Credit Not Granted: CSCI 5302
Requisites: Requires prerequisite course of CSCI 3302 (minimum grade C-).
Additional Information: Departmental Category: Artificial Intelligence

CSCI 4303 (1) Cybersecurity Club Companion Course

Gives students hands-on experience applying practical security skills and adversarial thinking to real-world problems. Students will work in small teams on internal challenges, lab development, open source contributions, and will represent the university in larger teams for external challenges at the national and global level, such as those hosted by Collegiate Cyber Defense Competition (CCDC), Wicked6, DOE CyberForce, etc. Students will be expected to participate in both internal and external challenges, attend meetings, and present short presentations to the group when appropriate. Previously offered as a special topics course.

Equivalent - Duplicate Degree Credit Not Granted: CYBR 5303 and CSCI 5303
Repeatable: Repeatable for up to 3.00 total credit hours.
Requisites: Requires prerequisite course of CSCI 3403 (minimum grade C-).

CSCI 4308 (4) Software Engineering Project 1

Senior capstone course in which students design, implement, document and test software systems for use in industry, non-profits, government and research institutions. Also offers extensive experience in oral and written communication throughout the development process. Department consent required. Department-enforced prerequisites differ for BS and BA degree. Contact academic advisor for details. Senior Capstone courses are optional for BA students. BA students interested in taking this course should contact their advisor early in their major.

Requisites: Restricted to students with 87-180 credits (Senior, Fifth Year Senior) Computer Science (CSEN) majors only.
Additional Information: Departmental Category: Software Engineering

CSCI 4313 (3) Concurrent Programming

Introduces the theory and practice of multicore programming. The first part of the course presents foundations of concurrent programming: mutual exclusion, wait-free and lock-free synchronization, spin locks, monitors, memory consistency models. The second part presents a sequence of concurrent data structures and techniques used in their implementations (coarse-grained, fine-grained, optimistic and lock-free synchronization).

Equivalent - Duplicate Degree Credit Not Granted: ECEN 4313 and ECEN 5313 and CSCI 5313
Requisites: Requires prerequisite course of CSCI 2400 (minimum grade C-).
Recommended: Prerequisite ECEN 3593.

CSCI 4314 (3) Dynamic Models in Biology

Surveys computational and mathematical modeling to illuminate biological processes. Students work together to learn to build and analyze models using a variety of numerical tools, tackle meaningful biological problems, and communicate effectively across disciplines. Specific topics: Langevin dynamics of protein folding, agent-based models, finite difference models of organismal growth, stochastic and deterministic cellular automata game of life, models of behavior.

Equivalent - Duplicate Degree Credit Not Granted: CSCI 5314
Requisites: Requires prerequisite of ASTR 2600 or CSCI 2270 or CSCI 2275 or INFO 2201 or PHYS 2600 (minimum grade C-)
Recommended: Prerequisite Linear Algebra (CSCI 2820 or CSCI2897 or MATH 2130 or MATH 2135 or APPM 2360 or APPM 3310), and intended for students in their third or fourth years of Computing or other majors.
Additional Information: Departmental Category: Theory of Computation

CSCI 4318 (4) Software Engineering Project 2

Second semester of a senior capstone course in computer science. Students must take this course and CSCI 4308 or 4328 contiguously as the project spans the entire academic year.

Requisites: Requires prerequisite course of CSCI 4308 or CSCI 4328 (minimum grade C-).
Additional Information: Departmental Category: Software Engineering

CSCI 4328 (4) Software Project Management and Mentoring

Review software project management and discuss the latest approaches, methodologies and standards of software development. Learn to develop software quality, documentation, testing and prototype goals. Study project risk management and cost estimation approaches. Students will mentor other Senior Software Project Teams. Intended for students with professional software development experience. Department consent required, see Senior Project Director for permission.

Requisites: Restricted to students with 87-180 credits (Senior, Fifth Year Senior) Computer Science (CSEN) majors only.
Grading Basis: Letter Grade
Additional Information: Departmental Category: Software Engineering

CSCI 4338 (2) Software Project Management

Review software project management and discuss the latest approaches, methodologies and standards of software development. Learn to develop software quality, documentation, testing, and prototype goals. Study project risk management and cost estimation approaches. Intended for double majors doing interdisciplinary projects in other departments. Department consent required, see Senior Project Director for permission. Not intended for students who will be enrolling in CSCI 4368.

Requisites: Restricted to students with 87-180 credits (Senior, Fifth Year Senior) Computer Science (CSEN) majors only.
Grading Basis: Letter Grade
Additional Information: Departmental Category: Software Engineering

CSCI 4348 (4) Startup Essentials: Entrepreneurial Projects in Computing

Provide students with the tools to be successful technical co-founders of their own startups. Explores the initial stages of founding a startup, including team formation, idea validation, pivoting and pitching, while employing an iterative methodology. Student teams will develop a minimum viable product, pitch their final startup concept, and be evaluated on product/market fit. Department consent required. Department-enforced prerequisites differ for BS and BA degree. Contact academic advisor for details. Senior Capstone courses are optional for BA students. BA students interested in taking this course should contact their advisor(s) early in their major. Students must take this course and CSCI 4358 contiguously as the project spans the entire academic year.

Equivalent - Duplicate Degree Credit Not Granted: CSCI 5340
Requisites: Restricted to students with 87-180 credits (Senior, Fifth Year Senior) Computer Science (CSEN) majors only.
Additional Information: Departmental Category: General Computer Science

CSCI 4358 (4) Entrepreneurial Projects II

Follows CSCI 4348. In the second semester of this entrepreneurial project capstone, student teams will seek to find market traction for a high-fidelity Minimum Viable Product (MVP), software and/or hardware, that they will develop as part of their startup project. Teams will further learn to incorporate principles of marketing, business finance and legal issues into the business model for their startup concept. Students must take this course and CSCI 4348 contiguously as the project spans the entire academic year.

Equivalent - Duplicate Degree Credit Not Granted: CSCI 5350
Requisites: Requires a prerequisite course of CSCI 4348 (minimum grade C-).
Additional Information: Departmental Category: General Computer Science

CSCI 4368 (4) Multidisciplinary Design Project 1

Design, develop, test, and deploy software that is integrated into a mechanical system. Participate as a member of a multi-disciplinary team that could include students from computer science, mechanical, and electrical disciplines. Develop project management and communication skills as they pertain to a multi-disciplinary team. Support the project team through self-directed study. First semester of a senior capstone course. Students must take this course and CSCI 4378 contiguously as the project spans the entire academic year. Department-enforced prerequisites differ for BS and BA degree. Contact academic advisor for details. Senior Capstone courses are optional for BA students. BA students interested in taking this course should contact their advisor(s) early in their major.

Requisites: Restricted to students with 87-180 credits (Senior, Fifth Year Senior) Computer Science (CSEN) majors only.

CSCI 4378 (4) Multidisciplinary Design Project 2

Design, develop, test, and deploy software that is integrated into a mechanical system. Participate as a member of a multi-disciplinary team that could include students from computer science, mechanical, and electrical disciplines. Develop project management and communication skills as they pertain to a multi-disciplinary team. Support the project team through self-directed study. Second semester of a senior capstone course. Students must take this course and CSCI 4368 contiguously as the project spans the entire academic year.

Requisites: Requires prerequisite course of CSCI 4368 (minimum grade C-).

CSCI 4413 (3) Computer Security and Ethical Hacking

Teaches basic exploit design and development through hands-on experimentation and testing. Uses a controlled environment to give students a "playground" in which to test penetration skills that are normally not allowed on live networks.

Equivalent - Duplicate Degree Credit Not Granted: CSCI 5413
Requisites: Requires prerequisite course of CSCI 4273 (minimum grade C-).
Additional Information: Departmental Category: Operating Systems and Hardware

CSCI 4444 (3) Algorithms and Data Structures for Analyzing DNA

Covers the basic concepts of genetics and genomics and how DNA analysis problems translate into computational problems. Covers core algorithms such as genome assembly, string matching, string indexing, and string set comparisons. Covers core data structures such as suffix trees and tries, FM index, and Bloom Filters.

Requisites: Requires prerequisite courses of CSCI 2270 and (APPM 1350 or MATH 1150 or MATH 1300 or MATH 1310) (all minimum grade C-).
Recommended: Prerequisite programming competence is assumed.

CSCI 4446 (3) Chaotic Dynamics

Explores chaotic dynamics theoretically and through computer simulations. Covers the standard computational and analytical tools used in nonlinear dynamics and concludes with an overview of leading-edge chaos research. Topics include time and phase-space dynamics, surfaces of section, bifurcation diagrams, fractal dimension and Lyapunov exponents.

Equivalent - Duplicate Degree Credit Not Granted: CSCI 5446 and ECEN 4423 and ECEN 5423
Requisites: Requires prerequisite course of (ASEN 1320 or CSCI 1300 or CSCI 1320 or CSCI 2275 or ECEN 1310) and (APPM 2350 or MATH 2400) (all minimum grade C-).
Recommended: Prerequisites PHYS 1120 and CSCI 3656 and (APPM 3310 or CSCI 2820 or MATH 2130 or MATH 2135 or MATH 3130 or MATH 3135).
Additional Information: Departmental Category: Numerical Computation

CSCI 4448 (3) Object-Oriented Analysis and Design

An applied analysis and design class that addresses the use of object-oriented techniques. Topics include domain modeling, use cases, architectural design and modeling notations. Students apply the techniques in analysis and design projects.

Equivalent - Duplicate Degree Credit Not Granted: CSCI 5448
Requisites: Requires prerequisite course of CSCI 3308 (minimum grade C-).
Additional Information: Departmental Category: Software Engineering

CSCI 4502 (3) Data Mining

Introduces basic data mining concepts and techniques for discovering interesting patterns hidden in large-scale data sets, focusing on issues relating to effectiveness and efficiency. Topics covered include data preprocessing, data warehouse, association, classification, clustering, and mining specific data types such as time-series, social networks, multimedia, and Web data.

Equivalent - Duplicate Degree Credit Not Granted: CSCI 5502 and CSPB 4502
Requisites: Requires prerequisite course of CSCI 2270 or CSCI 2275 (minimum grade C-).
Additional Information: Departmental Category: Artificial Intelligence

CSCI 4555 (3) Compiler Construction

Introduces the principles and techniques for compiling high-level programming languages to assembly code. Topics include parsing, instruction selection, register allocation, and compiling high-level features such as polymorphism, first-class functions, and objects. Students build a complete compiler for a simple language.

Equivalent - Duplicate Degree Credit Not Granted: ECEN 5523 and ECEN 4553 and CSCI 5525
Requisites: Requires prerequisite courses of CSCI 3155 and (CSCI 2400 or ECEN 3350) (all minimum grade C-).
Additional Information: Departmental Category: Programming Languages

CSCI 4576 (4) High-Performance Scientific Computing

Introduces computing systems, software and methods used to solve large-scale problems in science and engineering. Students use high-performance workstations and a supercomputer.

Equivalent - Duplicate Degree Credit Not Granted: CSCI 5576
Recommended: Prerequisite APPM 4600 or APPM 4650 or CSCI 3656 or MATH 4650 or MCEN 3030.
Additional Information: Departmental Category: Numerical Computation

CSCI 4616 (3) Introduction to Virtual Reality

Introduces students to the field of virtual reality (VR). Covers the historical development of virtual reality technologies and virtual reality as a research field, the mathematics of 3D coordinate systems, fundamental principles, algorithms, and design patterns in developing interactive virtual environments, the perceptual science behind mixed reality technologies, and libraries and tools for creating VR experiences.

Equivalent - Duplicate Degree Credit Not Granted: ATLS 4616
Requisites: Requires prerequisite course of CSCI 2270 or CSCI 2275 (minimum grade C-).

CSCI 4622 (3) Machine Learning

Introduces students to tools, methods, and theory to construct predictive and inferential models that learn from data. Focuses on supervised machine learning technique including practical and theoretical understanding of the most widely used algorithms (decision trees, support vector machines, ensemble methods, and neural networks). Emphasizes both efficient implementation of algorithms and understanding of mathematical foundations.

Equivalent - Duplicate Degree Credit Not Granted: CSPB 4622
Requisites: Requires prereqs (CSCI2270 or 2275) (1 of APPM3310,CSCI2820,MATH2130/2135) (1 of CSCI2824,ECEN2703,APPM3170,MATH2001) (1 of APPM3570,CHEN3010,CSCI 3022,CVEN 3227,ECEN 3810,ECON 3818,MATH 3510/4510,MCEN 3047,STAT 3100/4000/4520) (all min C-)
Additional Information: Departmental Category: Artificial Intelligence

CSCI 4722 (3) Computer Vision

Explores algorithms that can extract information about the world from images or sequences of images. Topics covered include: imaging models and camera calibration, early vision (filters, edges, texture, stereo, optical flow), mid-level vision (segmentation, tracking), vision-based control and object recognition.

Equivalent - Duplicate Degree Credit Not Granted: CSCI 5722
Requisites: Requires prerequisite courses of (APPM 2360 or APPM 3310 or CSCI 2820 or MATH 2130 or MATH 2135) and CSCI 3104 (all minimum grade C-).
Recommended: Prerequisite CSCI 3022 or APPM 3570 or STAT 4520 or STAT 4000 or CHEN 3010 or CVEN 3227 or MATH 3510 or MATH 4510 or ECEN 3810 or ECON 3818.

CSCI 4753 (3) Computer Performance Modeling

Presents a broad range of system measurement and modeling techniques, emphasizing applications to computer systems. Covers topics including system measurement, workload characterization and analysis of data; design of experiments; queuing theory and queuing network models; and simulation.

Equivalent - Duplicate Degree Credit Not Granted: CSCI 5753 and ECEN 4753 and ECEN 5753
Requisites: Requires prerequisites of (APPM 1360 or MATH 2300) and CSCI 3753 (all minimum grade C-).
Recommended: Prerequisite a course in statistics.
Additional Information: Departmental Category: Operating Systems and Hardware

CSCI 4802 (1) Data Science Team Companion Course

Gives students hands-on experience applying data science techniques and machine learning algorithms to real-world problems. Students work in small teams on internal challenges, many of which will be sponsored by local companies and organizations and will represent the university in larger teams for external challenges at the national and global level, such as those hosted by Kaggle. Students will be expected to participate in both internal and external challenges, attend meetings and present short presentations to the group when appropriate.

Equivalent - Duplicate Degree Credit Not Granted: CSCI 5802
Repeatable: Repeatable for up to 3.00 total credit hours.
Requisites: Requires a prerequisite course of (APPM 3310, CSCI 2820, MATH 2130, MATH 2135) OR (APPM 3570, CHEN 3010, CSCI 3022, CVEN 3227, ECEN 3810, ECON 3818, MATH 3510, MATH 4510, MCEN 3047, STAT 3100, STAT 4000, STAT 4520) (min grade C-).
Additional Information: Departmental Category: Artificial Intelligence

CSCI 4809 (3) Computer Animation

Develops a firm understanding of the general principles of computer animation. Lectures cover the creation of models, materials, textures, surfaces, and lighting. Path and key frame animation, particle dynamics, and rendering are introduced. Students are assigned a number of animation tutorials to carry out.

Equivalent - Duplicate Degree Credit Not Granted: ATLS 5809 and ATLS 4809 and CSCI 5809
Additional Information: Departmental Category: Graphics

CSCI 4830 (1-4) Special Topics in Computer Science

Covers topics of interest in computer science at the senior undergraduate level. Content varies from semester to semester. Only 9 credit hours from CSCI 4830 and/or CSCI 4831 can count toward Computer Science BS or BA.

Repeatable: Repeatable for up to 9.00 total credit hours. Allows multiple enrollment in term.
Requisites: Requires prerequisite course of CSCI 2400 or ECEN 2360 or ECEN 3350 (minimum grade C-).
Additional Information: Departmental Category: General Computer Science

CSCI 4831 (1-4) Special Topics in Algorithms

Covers topics of interest in computer science at the upper-division undergraduate level. Content varies from semester to semester. Only 9 credit hours from CSCI 4830 and/or CSCI 4831 can count toward Computer Science BS or BA.

Repeatable: Repeatable for up to 9.00 total credit hours. Allows multiple enrollment in term.
Requisites: Requires prerequisite courses of CSCI 3104 and (APPM 3310 or CSCI 2820 or MATH 2130 or MATH 2135) (all minimum grade C-).
Additional Information: Departmental Category: General Computer Science

CSCI 4849 (3) Input, Interaction, and Accessibility

Explores input and interaction techniques with an emphasis on universal design and alternative interfaces. Students explore traditional input methods such as keyboard and mouse input, and alternative techniques such as voice and eye gaze. Students conduct performance evaluations of existing techniques, and prototype new interaction methods. Students design technologies to support people with varying abilities and disabilities.

Equivalent - Duplicate Degree Credit Not Granted: CSCI 5849
Requisites: Requires prerequisite of CSCI 3002 (minimum grade C-).

CSCI 4900 (1-3) Upper Division, Undergraduate Level Independent Study

Provides opportunities for independent study at the upper-division undergraduate level. Students work on a small research problem. Department consent required.

Repeatable: Repeatable for up to 6.00 total credit hours. Allows multiple enrollment in term.
Requisites: Requires prerequisite course of ASEN 1320 or CSCI 1300 or CSCI 1320 or CSCI 2275 (all minimum grade C-).
Additional Information: Departmental Category: General Computer Science

CSCI 4950 (2-4) Senior Thesis

Provides an opportunity for senior computer science majors to conduct exploratory research in computer science as an option for the capstone requirement. Department enforced prerequisites: 35 hours of Computer Science coursework including Foundation courses, Upper-Division writing, CS GPA 3.0. Department consent required, contact academic advisor for details.

Repeatable: Repeatable for up to 8.00 total credit hours.
Requisites: Requires a prerequisite or corequisite course of CSCI 3100 (minimum grade C-). Restricted to students with 87-180 credits (Senior, Fifth Year Senior).
Additional Information: Departmental Category: General Computer Science

CSCI 4960 (2-4) Computer Science Honors Thesis

Provides an opportunity for senior Computer Science BA majors to conduct exploratory research in computer science and complete an Honors Thesis as part of the Arts and Sciences Honors Program. Department-enforced prerequisites: 35 hours of Computer Science coursework including Foundation courses, Upper-Division writing, CS GPA 3.0. Department consent required, contact academic advisor for details.

Repeatable: Repeatable for up to 8.00 total credit hours.
Requisites: Restricted to students with 87-180 credits (Senior, Fifth Year Senior).
Additional Information: Departmental Category: General Computer Science

CSCI 5000 (1) Introduction to the Computer Science Research-Based MS Program

Instructs new research-based MS students in Computer Science how to become an effective member in terms of research, teaching, and presentation, and potentially advancing to the PhD program. Makes students aware of formal requirements, educational objectives, and research themes. Provides evaluative criteria and guidelines for all objectives to be achieved.

Requisites: Restricted to Computer Science (CSCI) MS students only.
Additional Information: Departmental Category: General Computer Science

CSCI 5010 (3) Fundamentals of Data Communication

Combining conceptual knowledge about data communications and core Internet technologies with hands-on labs that reinforce the conceptual knowledge, this course provides students with the ability to create innovative technology solutions in their discipline. Learning how the Internet works and being able to evaluate and operate an Internet network is a valuable skill; students in this course will have a competitive advantage in this foundational field.

Equivalent - Duplicate Degree Credit Not Granted: CYBR 5010
Requisites: Restricted to Computer Science Network Engineering MS Majors.

CSCI 5020 (3) Fundamentals of Network Programming

This course provides an immersion into the foundation theories of network programming and software development for emerging technologies. Students will gain direct experience with real-world programming lab experiments and demonstrations that will relate to the prolific increase of cross-discipline programming.

Equivalent - Duplicate Degree Credit Not Granted: CYBR 5020
Requisites: Restricted to Computer Science Network Engineering MS Majors.

CSCI 5030 (3) Fundamentals of System Administration and Virtualization

Introduces the basic use and administration of Unix and Linux systems. Topics include booting and system management, scripting, storage and logical volume management, filesystem configuration, account management and password security, process control, software installation, event logging and system auditing. Students will also develop familiarity with virtualization platforms such as VirtualBox and VMware to implement and test their system configurations.

Equivalent - Duplicate Degree Credit Not Granted: CYBR 5030
Requisites: Restricted to Computer Science Network Engineering MS Majors.

CSCI 5040 (3) Professional Masters Project 1

First class in a two semester cycle. Focuses on applied best practice in all facets of software engineering in industry and the application of those practices. Students are part of a development team involved in a two-semester project. Each student has a specific role on the project, and all will be responsible for some level of actual software development. The first semester focuses on design, requirements, and prototyping and is based on common waterfall project practices with gate reviews and project artifacts. Testing, soft skills for teamwork, project management, and other supporting aspects will be driven throughout the semester. The outcome of the two-semester cycle is a final project delivery of a software product for an institutional or industrial partner and/or for entry into software development competitions.

Requisites: Restricted to Computer Sciences Professional Masters (CSEN-MSCPS) graduate students only.

CSCI 5050 (3) Professional Masters Project 2

Second class in a two-semester cycle. Focuses on applied best practice in all facets of software engineering in industry and the application of those practices. Students are part of a development team involved in a two-semester project. Each student has a specific role on the project, and all will be responsible for some level of actual software development. The second semester focuses on development, code construction, and delivery, using agile-based project management for development. Students work in both Scrum and Kanban agile project cycles. Testing, soft skills for teamwork, project management, and other supporting aspects will be driven throughout the semester. The outcome of the two-semester cycle is a final project delivery of a software product for an institutional or industrial partner and/or for entry into software development competitions.

Requisites: Requires prerequisite course of CSCI 5040 (minimum grade of B). Restricted to CSEN graduate students only.

CSCI 5100 (1) Computer Science Colloquium

Learn about innovative research and teaching in computer science by attending talks and discussions by leading researchers and educators. Learn professional presentation skills and etiquette of participating in scientific research presentations. Students can attend during any term even if they are not enrolled

Repeatable: Repeatable for up to 2.00 total credit hours.
Requisites: Restricted to Computer Science (CSCI) MS students only.

CSCI 5113 (3) Linux System Administration

Introduces Linux system administration and related topics. Includes hardware and software installation, storage management, configuration of user accounts and system services, development of automation and monitoring tools, and the provisioning of common network services. This laboratory focused course will provide significant exposure to the network security concerns of Internet connected hosts. Students will build a network of Linux servers from the ground up, using provided computing resources, and must maintain and secure these servers themselves. Previously offered as a special topics course.

Equivalent - Duplicate Degree Credit Not Granted: CYBR 5113 and CSCI 4113
Requisites: Restricted to graduate students only.
Recommended: Prerequisite CSCI 3753 (minimum grade B).

CSCI 5114 (3) Practical Algorithmic Complexity

When coming across an algorithmic problem, how do we think about how hard it is? Beyond just how much time or memory it takes, computational complexity offers a plethora of concepts for understanding this fundamental question. This leads to the appropriate choice of algorithm for the job, the development of new algorithms, and understanding the role of algorithmic complexity in natural settings such as biology and physics.

Equivalent - Duplicate Degree Credit Not Granted: CSCI 4114
Requisites: Restricted to graduate students only.

CSCI 5135 (3) Computer-Aided Verification

Covers two-level and multilevel minimization, optimization via expert systems, algebraic and Boolean decomposition, layout methodologies, state assignment, encoding and minimization, silicon compilation.

Equivalent - Duplicate Degree Credit Not Granted: ECEN 5139
Requisites: Restricted to graduate students only.
Recommended: Prerequisites ECEN 2703 and general proficiency in discrete mathematics and programming.
Additional Information: Departmental Category: Programming Languages

CSCI 5140 (2) CLASIC Capstone

In this capstone to the Computational Linguistics, Analytics, Search and Informatics (CLASIC) professional master¿s program, we will review each student¿s internship project and prepare presentations and technical reports based on those internships. Students will present their work on the annual Industry Day or at an Advisory Board meeting to industry representatives. They will also submit a paper to a relevant conference or workshop. Previously offered as a special topics course.

Equivalent - Duplicate Degree Credit Not Granted: LING 5140
Requisites: Restricted to students in the Computational Linguistics, Analytics, Search and Informatics (CLSI) program only.
Recommended: It is recommended that this course be taken after the CLASIC internship has been completed.

CSCI 5160 (3) Introduction to Enterprise Networks

Provides direct experience with networking functions and equipment through experiments and demonstrations. Students learn the fundamental principles and techniques of voice and data switching and routing within an enterprise environment. Procedures require the use of actual commercial equipment (including Cisco, Juniper, and Arista) plus network services and observation using packet analyzers. Weekly experiments and exams are designed to reflect real-world networking scenarios and require an additional hours of lab work. Most lab exercises involve activities which require physical access to the hardware and cannot be done remotely. Students are expected to spend 6 hours per week in the lab. In addition to the lab time, students should also anticipate up to 6 additional hours of time for homework, reading, lab preparation and studying for exams. Recommended restriction: students are expected to know the OSI Model, principles of Ethernet Switching, IP Addressing and operation of protocols such as ARP, DHCP, DN

Requisites: Restricted to graduate students only.

CSCI 5170 (3) IP Routing Protocols and Policies

Explores practical usage and conceptual underpinnings of link state and distance vector routing protocols. The course further explores a holistic view of how the Internet works from a technical routing aspect as well as policy and economics. The course is supplemented with frequent labs to fully explore the specific workings of the routing protocols RIP, OSPF, and BGP and the relationships between them in practical lab based routing scenarios.

Requisites: Restricted to graduate students only.
Recommended: Prerequisite CSCI 5010 or CYBR 5010 or CSCI 4273 or CSCI 5273 or ECEN 5273.

CSCI 5180 (3) Network Management and Automation

Teaching both technical and soft skills, this course incorporates best practices and the key theories behind them such as understanding common services needed for network functionality, maintenance, and troubleshooting. The goal of this course is to equip students with the valuable skills and tools they need to hit the ground running in most network management, operation, automation, and DevOps roles within a company. By the end of the course, students will be competent in the technologies, services, and tools used to manage and automate complex networks.

Requisites: Restricted to graduate students only.
Recommended: Prerequisite background in Linux system administration, Python programming and computer network engineering/data communications.

CSCI 5190 (3) Voice Over IP: Voice Network Design and Implementation

Provides an in-depth immersion into the foundational theories and technologies of Voice Over IP (VoIP). This course supplements these theories with direct experience through real-world, hands-on lab experiments and demonstrations. The fundamentals of voice technologies, services, and tools used in industry to design, deploy and troubleshoot VoIP networks will be explored in detail, providing the student with a competitive advantage in the job market.

Requisites: Requires prerequisite course of CSCI 5170 or CSCI 5160 or CSCI 5180 (minimum grade B). Restricted to graduate students.

CSCI 5200 (3) Introduction to Wireless Systems

Overviews the distinctive characteristics of the wireless communications medium. Topics covered include: Analog signals, Antennas and Propagation, Digital Signals, Sampling, Quadrature Signals, Digital Modulation, SNR and SINR Concepts, Channel Models, Channel Statistics, and Link Budgets. The course includes an introduction to MIMO and beam-forming as implemented in modern communication systems. Software Defined Radio (SDR) is introduced to facilitate student hands-on learning of radio operation. Previously offered as a special topics course.

Equivalent - Duplicate Degree Credit Not Granted: CYBR 5200 and CSCI 4200
Recommended: Prerequisites CYBR 5010 and CYBR 5012.

CSCI 5220 (3) Wireless Local Area Networks

Emphasis on the IEEE P802.11 family of WLAN standards. Students learn the legacy versions of the standard (802.11DS/b), the current generation of WLAN systems (802.11a/g/n/ac), and will to analyze and critique upcoming versions (802.11ax/ba), and gain insight into proposals for new research in WLAN. Exposure to the interoperability and certification process for WLAN by the Wi-Fi Alliance, study the newest Wi-Fi Certified¿ programs, and will learn how to model and analyze WLAN traffic using industry standard tools.

Equivalent - Duplicate Degree Credit Not Granted: CYBR 5220 and ECEN 5122
Requisites: Requires prerequisite course of CYBR 5010 or CSCI 5010 or CSCI 5273 (minimum grade B).
Recommended: Prerequisite CYBR 5200 or CSCI 5200.

CSCI 5229 (3) Computer Graphics

Studies design, analysis and implementation of computer graphics techniques. Topics include interactive techniques, 3D viewing and models, clipping, transformations, projection, removal of hidden surfaces, lighting, textures and shadows. Knowledge of basic linear algebra is required.

Equivalent - Duplicate Degree Credit Not Granted: CSCI 4229
Requisites: Restricted to graduate students only.
Additional Information: Departmental Category: Graphics

CSCI 5230 (3) Wireless Systems Lab

This Wireless Solutions Architecture course is designed to examine the core concepts of wireless architecture, design and implementation. The course will focus on architecting solutions unlicensed technology, specifically enterprise Wi-Fi networks. Students will learn how to design, implement, troubleshoot and operate enterprise wireless networks.

Equivalent - Duplicate Degree Credit Not Granted: CYBR 5230
Requisites: Requires prerequisite course of CSCI 5200 or CYBR 5200 (minimum grade B).

CSCI 5239 (3) Advanced Computer Graphics

Studies design, analysis and implementation of advanced computer graphics techniques. Topics include shaders, using the GPU for high performance computing, graphics programming on embedded devices such as mobile phones; advanced graphics techniques such as ray tracing.

Equivalent - Duplicate Degree Credit Not Granted: CSCI 4239
Requisites: Requires prerequisite course of CSCI 5229 (minimum grade B). Restricted to graduate students only.
Additional Information: Departmental Category: Graphics

CSCI 5240 (3) Introduction to Blockchain

Examines an emerging technology known as blockchain. Blockchain refers to the distributed and decentralized database technology behind popular cryptocurrencies such as Bitcoin and Ethereum. However, it can be used to record and transfer any digital asset, not just currency. This course explores the fundamentals of blockchain technology and its application from three key perspectives: policy and governance, technology, and application. Students gain an understanding of key concepts and how to apply them in the industry. Previously offered as a special topics course.

Equivalent - Duplicate Degree Credit Not Granted: CYBR 5240 and CSCI 4240
Requisites: Restricted to graduate students only.

CSCI 5253 (3) Datacenter Scale Computing - Methods, Systems and Techniques

Covers the primary problem solving strategies, methods and tools needed for data-intensive programs using large collections of computers typically called "warehouse scale" or "data-center scale" computers. Examines methods and algorithms for processing data-intensive applications, methods for deploying and managing large collections of computers in an on-demand infrastructure and issues of large-scale computer system design.

Equivalent - Duplicate Degree Credit Not Granted: CSCI 4253 and CSPB 4253 and ECEN 5253
Requisites: Restricted to graduate students only.
Recommended: Prerequisite CSCI 5273.
Additional Information: Departmental Category: Operating Systems and Hardware

CSCI 5254 (3) Convex Optimization and Its Applications

Discuss basic convex analysis (convex sets, functions and optimization problems), optimization theory (linear, quadratic, semidefinite and geometric programming; optimality conditions and duality theory), some optimization algorithms (descent methods and interior-point methods), basic applications (in signal processing, control, communications, networks, statistics, machine learning, circuit design and mechanical engineering, etc.), and some advanced topics (distributed decomposition, exact convex relaxation, parsimonious recovery).

Requisites: Restricted to graduate students only.
Additional Information: Departmental Category: Theory of Computation

CSCI 5260 (3) Datacenter Networks

Covers design and configuration principles required to build highly scalable and highly redundant network solutions used by datacenters. Class makes use of commercial grade equipment to build network toplogies and services. Students will work in teams to build a virtualized cluster, load balance application traffic between multiple server blades, assure high availability in Ethernet and IP layers, and able to prioritize important services using QoS. This lab-based course requires an average of 6 hours per week where the students are physically present in the CU Network Engineering Lab. Most lab exercises involve activities which require physical access to the hardware and cannot be done remotely. In addition to the lab time, students should also anticipate up to 6 additional hours of time for homework, reading, lab preparation and studying for exams.

Requisites: Requires prerequisite course of CSCI 5160 (minimum grade B). Restricted to graduate students.

CSCI 5264 (3) Decision Making under Uncertainty

Covers algorithms for optimal sequential decision making in the presence of uncertainty. Mathematical formalisms include the Markov decision process (MDP), partially observable Markov decision process (POMDP), and Games. Solution techniques include exact dynamic programming, Monte Carlo tree search, deep reinforcement learning, and alpha vector value approximation for POMDPs. Assignments require programming in a high level language (Julia as of 2023). Previously offered as a special topics course.

Equivalent - Duplicate Degree Credit Not Granted: ASEN 5264
Grading Basis: Letter Grade

CSCI 5270 (3) IP Network Design

Focuses on the design and implementation of network solutions according to the needs of a client. The course helps students develop skills to be a consultant and walks them through the complete life cycle of network project development as a member of a professional services team. Implement fundamentals of IP Routing Protocols and apply them directly to design based networking problems. Design scenarios will incorporate physical and logical design, financial analysis, and laboratory configuration.

Requisites: Requires prerequisite course of CSCI 5170 or CSCI 5160 (minimum grade B). Restricted to graduate students.
Recommended: Prerequisite strong familiarity with network protocol operation and implementation.

CSCI 5273 (3) Network Systems

Focuses on design and implementation of network programs and systems, including topics in network protocols, architectures, client-server computing, software-driven networking, and other contemporary network hardware-software system design and programming techniques. Familiarity with C and Unix is required.

Equivalent - Duplicate Degree Credit Not Granted: ECEN 5273
Requisites: Restricted to graduate students only.
Recommended: Prerequisites CSCI 4273 and CSCI 4573.
Additional Information: Departmental Category: Operating Systems and Hardware

CSCI 5280 (3) Software-Defined Networking

Provides an in-depth immersion into the foundational theories and technologies of Software-Defined Networking (SDN), Network Functions Virtualization (NFV), and emerging technologies for computer networks. Supplements the theoretical knowledge learned through direct experience with real-world lab experiments and demonstrations. This knowledge will give students an advantage in the job market for this in-demand, constantly changing subject.

Requisites: Requires prerequisite course of CSCI 5180 (minimum grade B). Restricted to graduate students.

CSCI 5302 (3) Advanced Robotics

Exposes students to current research topics in the field of robotics and provides hands-on experience in solving a grand challenge program.

Equivalent - Duplicate Degree Credit Not Granted: CSCI 4302
Requisites: Restricted to graduate students only.
Recommended: Prerequisite CSCI 3302 or instructor consent required.
Additional Information: Departmental Category: Artificial Intelligence

CSCI 5303 (1) Cybersecurity Club Companion Course

Gives students hands-on experience applying practical security skills and adversarial thinking to real-world problems. Students will work in small teams on internal challenges, lab development, open source contributions, and will represent the university in larger teams for external challenges at the national and global level, such as those hosted by Collegiate Cyber Defense Competition (CCDC), Wicked6, DOE CyberForce, etc. Students will be expected to participate in both internal and external challenges, attend meetings, and present short presentations to the group when appropriate. Previously offered as a special topics course.

Equivalent - Duplicate Degree Credit Not Granted: CYBR 5303 and CSCI 4303
Repeatable: Repeatable for up to 3.00 total credit hours.
Recommended: Prerequisites CSCI 5403 or CSCI 3403.

CSCI 5313 (3) Concurrent Programming

Introduces the theory and practice of multicore programming. The first part of the course presents foundations of concurrent programming: mutual exclusion, wait-free and lock-free synchronization, spin locks, monitors, memory consistency models. The second part presents a sequence of concurrent data structures and techniques used in their implementations (coarse-grained, fine-grained, optimistic and lock-free synchronization).

Equivalent - Duplicate Degree Credit Not Granted: ECEN 5313 and ECEN 4313 and CSCI 4313
Requisites: Requires prerequisite courses of CSCI 2270 and ECEN 2360 or CSCI 2400 (minimum grade C). Restricted to graduate students only.
Recommended: Prerequisite ECEN 3593.

CSCI 5314 (3) Dynamic Models in Biology

Surveys computational and mathematical modeling to illuminate biological processes. Students work together to learn to build and analyze models using a variety of numerical tools, tackle meaningful biological problems, and communicate effectively across disciplines. Specific topics: Langevin dynamics of protein folding, agent-based models, finite difference models of organismal growth, stochastic and deterministic cellular automata game of life, models of behavior.

Equivalent - Duplicate Degree Credit Not Granted: CSCI 4314
Requisites: Restricted to graduate students only.
Recommended: Prerequisite comfort with mathematics and/or programming experience, and more advanced understanding (upper undergraduate level) of any relevant discipline.
Additional Information: Departmental Category: Theory of Computation

CSCI 5322 (3) Algorithmic Human-Robot Interaction

Creating autonomous systems that interact with humans requires the synthesis of insights from a variety of disciplines. This course aims to provide students with the algorithms, models, and frameworks that form the building blocks required for developing intelligent autonomous systems that perform useful tasks while interacting with, coordinating with, co-existing with, or otherwise assisting humans. Previously offered as a special topics course.

Requisites: Restricted to graduate students only.

CSCI 5340 (3) Startup Essentials: Entrepreneurial Projects in Computing

Provides students with the tools to be successful technical co-founders of their own startups. Explores the initial stages of founding a startup, including team formation, idea validation, pivoting and pitching, while employing an iterative methodology. Student teams will develop a minimum viable product, pitch their final startup concept and be evaluated on product/market fit. CS coding concepts relevant for startups, including potentially cloud programming, mobile programming and agile software engineering, will be taught. Does not satisfy breadth requirement.

Equivalent - Duplicate Degree Credit Not Granted: CSCI 4348
Requisites: Restricted to graduate students only.
Additional Information: Departmental Category: General Computer Science

CSCI 5350 (3) Entrepreneurial Projects II

Follows CSCI 5340. In the second semester of this entrepreneurial project capstone, student teams will seek to find market traction for a high-fidelity Minimum Viable Product (MVP), software and/or hardware, that they will develop as part of their startup project. Teams will further learn to incorporate principles of marketing, business finance and legal issues into the business model for their startup concept. Does not satisfy breadth requirement.

Equivalent - Duplicate Degree Credit Not Granted: CSCI 4358
Requisites: Requires a prerequisite course of CSCI 5340 (minimum grade B). Restricted to graduate students only.
Additional Information: Departmental Category: General Computer Science

CSCI 5352 (3) Network Analysis and Modeling

Examines modern techniques for analyzing and modeling the structure and dynamics of complex networks. Focuses on statistical algorithms and methods, and emphasizes model interpretability and understanding the processes that generate real data. Applications are drawn from computational biology and computational social science. No biological or social science training is required.

Requisites: Restricted to graduate students only.
Recommended: Prerequisites CSCI 3104 and APPM 3570.
Additional Information: Departmental Category: Artificial Intelligence

CSCI 5360 (3) Internet Service Provider Networks

This course presents advanced networking design and implementation techniques through experiments with network measurement equipment, switches, router, and management interfaces. The course primarily focuses on Service Provider Transport technologies for capacity, scalability and fault tolerance. Students learn the essential network architectures of last mile and long haul network solutions used for public and private network traffic transport; implementation of SLAs, load balancing, first hop redundancy, and MPLS transport and L2/L3 VPN solutions. This course requires an average of 6 hours per week in the lab. Most lab exercises involve activities which require physical access to the hardware and cannot be done remotely. In addition to the lab time, students should also anticipate up to 6 additional hours of time for homework, reading, lab preparation and studying for exams.

Requisites: Requires prerequisite course of CSCI 5160 (minimum grade B). Restricted to graduate students.
Recommended: Prerequisite CSCI 5170.

CSCI 5380 (3) Network Virtualization and Orchestration

Provides an advanced, in-depth immersion into the theories and technologies of Software-Defined Networking (SDN), Network Functions Virtualization (NFV), network virtualization/orchestration, and emerging technologies for computer networks. Expands on the real-world lab experiments and theoretical demonstrations learned from the course pre-requisite. The knowledge and critical thinking skills learned from this course will arm students with an advantage in the job market for this in-demand, constantly changing subject.

Requisites: Requires prerequisite of CSCI 5280 (minimum grade B). Restricted to graduate students.

CSCI 5402 (3) Research Methods in Human-Robot Interaction

Introduces students to the field of human-robot interaction (HRI). Covers HRI theory, principles, methodologies, and applications with links to robotics, artificial intelligence, human factors, human-computer interaction, design, cognitive psychology, education and other domains. Coursework includes readings from state-of-the-art in HRI research, team exercises and problem-solving sessions, and implementation and evaluation of a human-robot interaction systems for specific applications.

Equivalent - Duplicate Degree Credit Not Granted: ATLS 5402
Requisites: Restricted to graduate students only.

CSCI 5403 (3) Cybersecurity

Introduces core concepts in cybersecurity including confidentiality, integrity, authentication, risk management, and adversarial thinking. The concepts will be applied to both traditional information technology (IT) systems and cyber physical systems (CPS). At the conclusion of the course, students should have a solid foundation in cybersecurity and hands-on experience.

Equivalent - Duplicate Degree Credit Not Granted: CYBR 5300
Requisites: Restricted to graduate students only.

CSCI 5413 (3) Computer Security and Ethical Hacking

Teaches basic exploit design and development through hands-on experimentation and testing. Uses a controlled environment to give students a "playground" in which to test penetration skills that are normally not allowed on live networks.

Equivalent - Duplicate Degree Credit Not Granted: CSCI 4413
Requisites: Restricted to graduate students only.
Additional Information: Departmental Category: Operating Systems and Hardware

CSCI 5423 (3) Biologically-inspired Multi-Agent Systems

Explores the principles and emergent properties of collective dynamics through computational modeling and theory. Focuses on multi-agent systems using insights from biology, like the self-assemblage of cells and insect colony behavior. Topics include designing swarm intelligence, networked agents, cellular computing and self-assembly, optimization, synchronization, and evolutionary computation. Uses cross-discipline research developments to practice applied techniques. Biology background is not required.

Requisites: Restricted to graduate students only.
Recommended: Prerequisite CSCI 2270 and basic knowledge of programming.

CSCI 5434 (3) Probability for Computer Science

This course will introduce computer science students to topics in probability and statistics that will be useful in other computer science courses. Basic concepts in probability will be taught from an algorithmic and computational point of view, with examples drawn from computer science.

Requisites: Restricted to graduate students only.
Recommended: Prerequisite courses of APPM 1360 or MATH 2300 and CSCI 2824 or MATH 2001 or ECEN 2703 (all minimum grade B).

CSCI 5444 (3) Introduction to Theory of Computation

Reviews regular expressions and finite automata. Studies Turing machines and equivalent models of computation, the Chomsky hierarchy, context-free grammars, push-down automata, and computability.

Requisites: Restricted to graduate students only.
Additional Information: Departmental Category: Theory of Computation

CSCI 5446 (3) Chaotic Dynamics

Explores chaotic dynamics theoretically and through computer simulations. Covers the standard computational and analytical tools used in nonlinear dynamics and concludes with an overview of leading-edge chaos research. Topics include time and phase-space dynamics, surfaces of section, bifurcation diagrams, fractal dimension and Lyapunov exponents.

Equivalent - Duplicate Degree Credit Not Granted: CSCI 4446 and ECEN 4423 and ECEN 5423
Requisites: Restricted to graduate students only.
Additional Information: Departmental Category: Numerical Computation

CSCI 5448 (3) Object-Oriented Analysis and Design

An applied analysis and design class addressing the use of object-oriented techniques. Topics include domain modeling, use cases, architectural design and modeling notations. Students apply the techniques in analysis and design projects.

Equivalent - Duplicate Degree Credit Not Granted: CSCI 4448
Requisites: Restricted to graduate students only.
Additional Information: Departmental Category: Software Engineering

CSCI 5454 (3) Design and Analysis of Algorithms

Techniques for algorithm design, analysis of correctness and efficiency; divide and conquer, dynamic programming, probabilistic methods, advanced data structures, graph algorithms, etc. Lower bounds, NP-completeness, intractability.

Requisites: Restricted to graduate students only.
Recommended: Prerequisite CSCI 2270 or equivalent.
Additional Information: Departmental Category: Theory of Computation

CSCI 5502 (3) Data Mining

Introduces basic data mining concepts and techniques for discovering interesting patterns hidden in large-scale data sets, focusing on issues relating to effectiveness and efficiency. Topics covered include data preprocessing, data warehouse, association, classification, clustering, and mining specific data types such as time-series, social networks, multimedia, and Web data.

Equivalent - Duplicate Degree Credit Not Granted: CSCI 4502
Requisites: Restricted to graduate students only.
Additional Information: Departmental Category: Artificial Intelligence

CSCI 5514 (3) Algorithms for Whole Genome Sequence Analysis

Explore the algorithms that have been developed to assemble and analyze genome sequencing data. Genome sequencing produces vast and complex data that are intractable without efficient algorithms. This course covers the core data structures and algorithms which form the basis for research in topics ranging from evolution to the cause and treatment of many diseases, including cancer. Topics include string matching, indexing, compression, and succinct data structures. No prior knowledge of biology, DNA, or genetics is required.

Requisites: Restricted to graduate students only.
Recommended: Prerequisite basic understanding of complexity analysis, core algorithms (for example, sort) and data structures (for example, graphs).

CSCI 5523 (3) Modern Offense and Defense in Cybersecurity

Introduce students to the modern techniques used in cyber-attacks and defenses. Topics covered: Stack canary, ASLR, SMEP/SMAP, CFI, Program Misusing, ROP, JOP, ret2lib, off-by-one, unsafe-unlink, UAF, ptmalloc, t-cache, Race condition, Kernel Exploitation.

Requisites: Restricted to graduate students only.
Recommended: Prerequisites CSCI 2400, ECEN 4133.

CSCI 5525 (3) Compiler Construction

Introduces the principles and techniques for compiling high-level programming languages to assembly code. Topics include parsing, instruction selection, register allocation, and compiling high-level features such as polymorphism, first-class functions, and objects. Students build a complete compiler for a simple language.

Equivalent - Duplicate Degree Credit Not Granted: CSCI 4555 and ECEN 4553 and ECEN 5523
Requisites: Restricted to graduate students only.
Recommended: Prerequisites CSCI 3155 and CSCI 2400 or ECEN 3350.
Additional Information: Departmental Category: Programming Languages

CSCI 5535 (3) Fundamental Concepts of Programming Languages

Considers concepts common to a variety of programming languages--how they are described (both formally and informally) and how they are implemented. Provides a firm basis for comprehending new languages and gives insight into the relationship between languages and machines.

Equivalent - Duplicate Degree Credit Not Granted: ECEN 5533
Requisites: Restricted to graduate students only.
Recommended: Prerequisite CSCI 3155 or instructor consent required.
Additional Information: Departmental Category: Programming Languages

CSCI 5548 (3) Software Engineering of Standalone Programs

Applies engineering principles to phases of software product development, project planning, requirements definition, design, implementation, validation and maintenance. Emphasizes practical methods for communicating and verifying definitions and designs: prototyping, inspections and modeling. Includes relation to RTS and object-oriented programming.

Equivalent - Duplicate Degree Credit Not Granted: ECEN 5543
Requisites: Restricted to graduate students only.
Recommended: Prerequisites CSCI 1300 and CSCI 2270 or instructor consent required.
Additional Information: Departmental Category: Software Engineering

CSCI 5550 (3) Designing for Defense 1

Designing for Defense/Hacking for Defense is a national service program running at leading research universities across the country. Interdisciplinary teams¿chosen by competitive selection¿work on real-world national security challenges, in close contact with national security agencies. Teams employ the Lean Launchpad entrepreneurship methodology to develop engineering and business concepts to solve real-world challenges for special operations forces, the intelligence community, and other government agencies. Winning teams are eligible for real-world capital investment. The first semester of a two-course sequence. Students take this course, ASEN/CSCI/CYBR 5550, and ASEN/CSCI/CYBR 5580 contiguously as the sequence spans the academic year.

Equivalent - Duplicate Degree Credit Not Granted: ASEN 5550 and CYBR 5550
Requisites: Restricted to graduate students only.
Grading Basis: Letter Grade

CSCI 5573 (3) Advanced Operating Systems

Intended to create a foundation for operating systems research or advanced professional practice. Examines the design and implementation of a number of research and commercial operating systems and their components, system organization and structure, threads, communication and synchronization, virtual memory, distribution, file systems, security and authentication, availability and Internet services.

Equivalent - Duplicate Degree Credit Not Granted: ECEN 5573
Requisites: Requires prerequisite course of CSCI 2400 and CSCI 3753 (all minimum grade B). Restricted to graduate students only.
Additional Information: Departmental Category: Operating Systems and Hardware

CSCI 5576 (4) High-Performance Scientific Computing

Introduces computing systems, software and methods used to solve large-scale problems in science and engineering. Students use high-performance workstations and a supercomputer. First course in a two-semester sequence.

Equivalent - Duplicate Degree Credit Not Granted: CSCI 4576
Requisites: Restricted to graduate students only.
Additional Information: Departmental Category: Numerical Computation

CSCI 5580 (3) Designing for Defense 2

This course allows teams to continue their D4D journey from semester 1 guiding

Requisites: Requires prerequisite course of ASEN 5550 or CSCI 5550 or CYBR 5550 (minimum grade B). Restricted to graduate students only.
Grading Basis: Letter Grade

CSCI 5593 (3) Advanced Computer Architecture

Provides a broad-scope treatment of important concepts in the design and implementation of high-performance computer systems. Discusses important issues in the pipelining of a processor, out-of-order instruction issue and superscalar designs, design of cache memory systems and architectural features required for multicore processor designs. Also studies current and historically important computer architectures, including hardware security concepts.

Equivalent - Duplicate Degree Credit Not Granted: ECEN 5593 and ECEN 4693
Requisites: Restricted to graduate students only.
Recommended: Prerequisite CSCI 4593 or instructor consent required.
Additional Information: Departmental Category: Operating Systems and Hardware

CSCI 5606 (3) Principles of Numerical Computation

Highlights computer arithmetic, solution of linear systems, least-squares approximations, nonlinear algebraic equations, interpolation, and quadrature.

Requisites: Restricted to graduate students only.
Recommended: Prerequisites CSCI 3656 and three semesters of calculus or equivalent.
Additional Information: Departmental Category: Numerical Computation

CSCI 5616 (3) Introduction to Virtual Reality

Introduces students to the field of virtual reality (VR). Covers the historical development of virtual reality technologies and virtual reality as a research field, the mathematics of 3D coordinate systems, fundamental principles, algorithms, and design patterns in developing interactive virtual environments, the perceptual science behind mixed reality technologies, and libraries and tools for creating VR experiences. Previously offered as a special topics course.

Equivalent - Duplicate Degree Credit Not Granted: CSCI 4616, ATLS 4616, ATLS 5616
Requisites: Restricted to graduate students only.
Recommended: Prerequisite CSCI 2270 or CSCI 2275 (minimum grade B).

CSCI 5620 (3) Advanced Wireless Lab

Provides a comprehensive, hands-on set of laboratory exercises for the teaching and demonstration of key technical skills required to understand, build, test, and analyze both analog and digital wireless communications concepts. In conjunction with lecture-based content to provide a solid foundation in digital communication theory, SDR-based laboratory exercises enable the synthesis of several fundamental concepts utilizing the latest, modern communications systems technologies.

Equivalent - Duplicate Degree Credit Not Granted: CYBR 5620
Requisites: Requires prerequisite course of CSCI 5200 or CYBR 5200 (minimum grade B).
Recommended: Prerequisites CSCI 5630 or CYBR 5630 and CSCI 5220 or CYBR 5220.

CSCI 5622 (3) Machine Learning

Trains students to build computer systems that learn from experience. Includes the three main subfields: supervised learning, reinforcement learning and unsupervised learning. Emphasizes practical and theoretical understanding of the most widely used algorithms (neural networks, decision trees, support vector machines, Q-learning). Covers connections to data mining and statistical modeling. A strong foundation in probability, statistics, multivariate calculus, and linear algebra is highly recommended.

Requisites: Prereqs:(APPM 3310 or CSCI 2820 or MATH 2130 or 2135 or 3130 or 3135) OR (APPM 3570 or 4570 or CHEN 3010 or CSCI 3022 or CVEN 3227 or ECEN 3810 or ECON 3818 or MATH 3510 or 4510 or MCEN 3047 or STAT 3100 or 4000 or 4520) (min grade B) Grad students only
Additional Information: Departmental Category: Artificial Intelligence

CSCI 5630 (3) Wireless and Cellular Systems

Studies technologies and architectures employed in modern cellular wireless systems. Major topics include radio propagation, multiple access techniques, analog and digital cellular telephony, and personal communications systems. Presents the necessary tools to understand the wireless industry, its technical details, and its business drivers. Topics include modeling, spectrum, weather, multipath, Doppler effect, and shadowing and covers important aspects of multiple access technologies such as CDMA and OFDMA. introduces modern radio standards including LTE.

Equivalent - Duplicate Degree Credit Not Granted: CYBR 5630
Requisites: Requires prerequisite course of CSCI 5200 or CYBR 5200 (minimum grade B).

CSCI 5636 (3) Numerical Solution of Partial Differential Equations

Focuses on discretization techniques such as finite difference, finite element and finite volume methods, and parallel solution algorithms such as Krylov subspace methods, domain decomposition and multilevel methods.

Requisites: Restricted to graduate students only.
Recommended: Prerequisites (CSCI 2820 or APPM 2360 or APPM 3310 or MATH 2130 or MATH 2135 or MATH 3130 or MATH 3135) AND (CSCI 3656 or APPM 4650 or MATH 4650 or MCEN 3030 or PHYS 2600) (all minimum grade B).
Additional Information: Departmental Category: Numerical Computation

CSCI 5646 (3) Numerical Linear Algebra

Offers direct and iterative solutions of linear systems. Also covers eigen value and eigenvector calculations, error analysis, and reduction by orthogonal transformation. A sound knowledge of basic linear algebra, experience with numerical computation, and programming experience is required.

Requisites: Restricted to graduate students only.
Additional Information: Departmental Category: Numerical Computation

CSCI 5654 (3) Linear Programming

Presents algorithms, simplex and modifications. Examines theory-duality and complementary slackness. Involves network flow algorithms. Introduces integer programming.

Requisites: Restricted to graduate students only.
Recommended: Prerequisite linear algebra.
Additional Information: Departmental Category: Theory of Computation

CSCI 5673 (3) Distributed Systems

Examines systems that span multiple autonomous computers. Topics include system structuring techniques, scalability, heterogeneity, fault tolerance, load sharing, distributed file and information systems, naming, directory services, resource discovery, resource and network management, security, privacy, ethics and social issues.

Equivalent - Duplicate Degree Credit Not Granted: ECEN 5673
Requisites: Restricted to graduate students only.
Recommended: Prerequisite CSCI 5573 or a course in computer networks.
Additional Information: Departmental Category: Operating Systems and Hardware

CSCI 5676 (3) Numerical Optimization

Focuses on computational methods for solution of unconstrained and some constrained optimization problems, nonlinear least-squares problems and systems of nonlinear equations. Formerly CSCI 6676.

Recommended: Prerequisite (CSCI 2820 or APPM 2360 or APPM 3310 or MATH 2130 or MATH 2135 or MATH 3130 or MATH 3135) AND (CSCI 3022 or CSCI 3656 or APPM 4650 or MATH 4650 or MCEN 3030 or PHYS 2600) (all minimum grade B), and restricted to grad students.
Additional Information: Departmental Category: Numerical Computation

CSCI 5714 (3) Formal Languages

Explores context-free languages: pumping lemma and variants, closure properties, and decision properties. Involves parsing algorithms, including general and special languages, e.g., LR. Additional topics chosen by instructor.

Requisites: Restricted to graduate students only.
Recommended: Prerequisite CSCI 5444 or instructor consent required.
Additional Information: Departmental Category: Theory of Computation

CSCI 5722 (3) Computer Vision

Explores algorithms that can extract information about the world from images or sequences of images. Topics covered include: imaging models and camera calibration, early vision (filters, edges, texture, stereo, optical flow), mid-level vision (segmentation, tracking), vision-based control and object recognition.

Equivalent - Duplicate Degree Credit Not Granted: CSCI 4722
Requisites: Restricted to graduate students only.
Recommended: Prerequisite probability, multivariate calculus and linear algebra.
Additional Information: Departmental Category: Artificial Intelligence

CSCI 5753 (3) Computer Performance Modeling

Presents a broad range of system measurement and modeling techniques, emphasizing applications to computer systems. Topics include system measurement, work load characterization and analysis of data; design of experiments; simulation; and queuing theory and queuing network models.

Equivalent - Duplicate Degree Credit Not Granted: CSCI 4753 and ECEN 4753 and ECEN 5753
Requisites: Restricted to graduate students only.
Additional Information: Departmental Category: Operating Systems and Hardware

CSCI 5802 (1) Data Science Team Companion Course

Gives students hands-on experience applying data science techniques and machine learning algorithms to real-world problems. Students work in small teams on internal challenges, many of which will be sponsored by local companies and organizations and will represent the university in larger teams for external challenges at the national and global level, such as those hosted by Kaggle. Students will be expected to participate in both internal and external challenges, attend meetings and present short presentations to the group when appropriate. Instructor consent required.

Equivalent - Duplicate Degree Credit Not Granted: CSCI 4802
Repeatable: Repeatable for up to 3.00 total credit hours.
Requisites: Restricted to graduate students only.
Additional Information: Departmental Category: Artificial Intelligence

CSCI 5809 (3) Computer Animation

Develops a firm understanding of the general principles of computer animation. Lectures cover the creation of models, materials, textures, surfaces, and lighting. Path and key frame animation, particle dynamics, and rendering are introduced. Students are assigned a number of animation tutorials to carry out.

Equivalent - Duplicate Degree Credit Not Granted: CSCI 4809 and ATLS 4809 and ATLS 5809
Requisites: Restricted to graduate students only.
Additional Information: Departmental Category: Graphics

CSCI 5817 (3) Database Systems

Provides an advanced treatment of basic database concepts.

Requisites: Restricted to graduate students only.
Recommended: Prerequisite CSCI 3753.
Additional Information: Departmental Category: Database Systems

CSCI 5822 (3) Probabilistic and Causal Modeling in Computer Science

Introduces a set of modeling techniques that have become a mainstay of modern artificial intelligence and machine learning research. These techniques combine graphical models, Bayesian analysis, and multivariate statistics for probabilistic and causal inference and for interpreting the statistical structure of large data sets. Applications include healthcare, economics, marketing, social sciences, and more.

Requisites: Restricted to graduate students only.
Recommended: Prerequisite undergraduate course in probability and statistics.
Additional Information: Departmental Category: Artificial Intelligence

CSCI 5828 (3) Foundations of Software Engineering

Provides an introduction to software engineering concepts and techniques. Topics include the history of software engineering, fundamental software engineering principles and theory, software life cycles, software testing, and the design and implementation of concurrent and large-scale software systems.

Requisites: Restricted to graduate students only.
Additional Information: Departmental Category: Software Engineering

CSCI 5832 (3) Natural Language Processing

Explores the field of natural language processing as it is concerned with the theoretical and practical issues that arise in getting computers to perform useful and interesting tasks with natural language. Covers the problems of understanding complex language phenomena and building practical programs.

Equivalent - Duplicate Degree Credit Not Granted: LING 5832
Requisites: Restricted to graduate students only.
Additional Information: Departmental Category: Artificial Intelligence

CSCI 5839 (3) User-Centered Design and Development 1

Develops the skills and practices necessary to apply user-centered approaches to software requirements analysis, and the design and evaluation of computer applications.

Requisites: Restricted to graduate students only.
Additional Information: Departmental Category: Graphics

CSCI 5840 (3) Advanced Network Automation

Combining lectures, lab experiments, and demonstrations, students in this course will develop advanced skills and knowledge in network automation technologies, services, and tools. They will learn to analyze, evaluate, and apply historical and future services needed for network functionality, maintenance, and troubleshooting. The course will cover a range of topics, from technical to soft skills, including best practices and key theories.

Requisites: Requires prerequisite course of CSCI 5180 (minimum grade B). Restricted to Network Engineering students only.

CSCI 5849 (3) Input, Interaction, and Accessibility

Explores input and interaction techniques, with an emphasis on universal design and alternative interfaces. Students will explore traditional input methods such as keyboard and mouse input, and alternative techniques such as voice and eye gaze. Students will conduct performance evaluations of existing techniques, and prototype new interaction methods. Students will design technologies to support people with varying abilities and disabilities.

Equivalent - Duplicate Degree Credit Not Granted: CSCI 4849
Requisites: Restricted to graduate students only.
Recommended: Prerequisite CSCI 3002 or CSCI 5839 (minimum grade B).

CSCI 5854 (3) Theoretical Foundations of Autonomous Systems

Covers techniques for modeling, design and verification of autonomous systems and application domains including automotive systems, robotics and medical devices. Modeling topics include timed systems, differential equations, switched systems, hybrid dynamical systems. Verification topics: reachability and stability verification. Temporal specifications. Synthesis of controllers. Applications: automotive systems, medical devices.

Requisites: Restricted to graduate students only.
Additional Information: Departmental Category: Theory of Computation

CSCI 5880 (3) Interactive Machine Learning for Customizable and Expressive Interfaces

Introduces students to techniques for applying machine learning in the development of customizable human-computer interfaces. Students will learn to process a wide variety of input data (e.g. video and accelerometer streams), using different machine learning algorithms to detect semantically meaningful events that can afford the construction of new interactive systems. They will complete substantial projections within the domains of assistive or creative technologies. Does not fulfill Breadth Requirement for CSEN graduate students.

Equivalent - Duplicate Degree Credit Not Granted: CSCI 4889, ATLS 4889 and ATLS 5880
Requisites: Restricted to graduate students only.
Grading Basis: Letter Grade
Additional Information: Departmental Category: Artificial Intelligence

CSCI 5900 (1-6) Master's Level Independent Study

Provides opportunities for independent study at the master's level.

Repeatable: Repeatable for up to 6.00 total credit hours. Allows multiple enrollment in term.
Requisites: Restricted to Computer Science (CSEN) graduate students or Computer Science Concurrent Degree majors only.
Additional Information: Departmental Category: General Computer Science

CSCI 5919 (3) HCC Survey and Synthesis: Foundations and Trajectories

Examines the interdisciplinary field of human-centered computing through a comprehensive content and historical survey. Considers new trajectories of inquiry and how the field merges with others. Social computing, is emphasized as a central topic. Students across disciplines will find the course foundational for understanding human-centered technology matters, including computer scientists, information scientists, social scientists, and business and media arts students.

Equivalent - Duplicate Degree Credit Not Granted: INFO 5919
Requisites: Restricted to graduate students only.
Additional Information: Departmental Category: Graphics

CSCI 5922 (3) Neural Networks and Deep Learning

Introduces modern approaches to machine learning using neural networks. Neural nets, popular in the early 1990s, have undergone a resurgence due to significant advances in computing power and the availability of very large data sets. Now rechristened 'deep learning', the field has produced state-of-the-art results in a range of artificial intelligence problems, including vision, speech and natural language processing.

Requisites: Restricted to graduate students only.
Additional Information: Departmental Category: Artificial Intelligence

CSCI 5929 (3) HCC Survey and Synthesis: New Disciplinary Directions

Studies recent advances in human-computer interaction through critical analysis of influential papers and self-guided research. Examines new paradigms in input, output, and visualization for technology design and interaction. Considers innovative methods to assess various population design and technological needs. Studies in computer-related fields, social science, business, media arts and communications benefit learning about human-centered computing research.

Requisites: Restricted to graduate students only.
Recommended: Prerequisite CSCI 5919.
Additional Information: Departmental Category: Graphics

CSCI 6000 (1) Introduction to the Computer Science PhD Program

Instructs new Ph.D students in Computer Science how to obtain a Ph.D and how to become an effective member of the computer science research community. Makes students aware of formal requirements, educational objectives, and research themes. Provides evaluative criteria and guidelines for all objectives to be achieved.

Requisites: Restricted to Computer Science (CSCI) PhD. students only.
Additional Information: Departmental Category: General Computer Science

CSCI 6100 (1) Computer Science Colloquium

Learn about innovative research and teaching in computer science by attending talks and discussions by leading researchers and educators. Learn professional presentation skills and etiquette of participating in scientific research presentations. Not repeatable for credit. Students can attend during any term even if they are not enrolled.

Requisites: Restricted to Computer Science (CSCI) PhD. students only.

CSCI 6114 (3) Computational Complexity Theory

Covers standard complexity classes including: time-bounded, space-bounded, nondeterministic, randomized, quantum, parallel, counting, and nonuniform classes. Covers standard relationships between these complexity classes, as well as landmark results in complexity theory. Additional topics may be covered depending on time and interest.

Requisites: Requires prerequisite course of CSCI 5454 (minimum grade B). Restricted to graduate students only.
Recommended: Corequisite CSCI 5444.

CSCI 6118 (3) Software Engineering for Scientists

Learn the core principles of software engineering and design to make scientific software more robust and reproducible. This class targets quantitative scientists with programming skills (in any language) who want to use software in their research. We will cover the version control, testing, benchmarking, data structures, algorithms, and pipelines. This course opens computing to a variety of student disciplines, and is an advanced course in computing geared toward STEM. Instructor approval required for CS majors and CS minors. Previously offered as a special topics course.

Equivalent - Duplicate Degree Credit Not Granted: CSCI 4118
Requisites: Restricted to graduate students. Restricted to Non-Computer Science students only.
Recommended: Prerequisites ASEN 1320 or CSCI 1200 or CSCI 1300 or CSCI 2275 or ECEN 1310 or INFO 1201, knowledge of a programming language, preferably Python, and upper division STEM course recommended.

CSCI 6200 (1) Computer Science PhD Career Development

Learn how to make the most of your CS PhD by understanding and preparing for a career as a computer science research in academia, industry, and government. Students need to take this class once they complete Preliminary Exam and before their proposal defense.

Requisites: Requires prerequisite course of CSCI 6000 (minimum grade B). Restricted to Computer Science (CSCI) MS and PhD students only.

CSCI 6214 (3) Randomized Algorithms

Randomization is a powerful tool to design and analyze algorithms, and one that has played, and continues to play, a key role in the theory of algorithms and complexity. This course will give a technical foundation in common probabilistic tools to design and analyze algorithms, and use this foundation to cover several important randomized algorithms.

Requisites: Requires prerequisite course of CSCI 5454 (minimum grade B). Restricted to graduate students only.

CSCI 6254 (3) Advanced Data Structures

Learn about data structures beyond trees, heaps, and hashtables that are covered in introductory classes on algorithms and data structures. Key topics will include hashtables and their applications, amortized analysis and data structures using amortization, important balanced tree data structures including B-trees, treaps and skip lists, mergeable heaps: binomial and Fibonacci heaps, persistent data structures, tries, suffix tries, suffix automata and spatial data structures.

Requisites: Requires prerequisite course of CSCI 5454 (minimum grade B).
Recommended: Prerequisite CSCI 5434.

CSCI 6268 (3) Foundations of Computer and Network Security

Studies methods to protect information, and the ability to process and move information, from theft, misuse, tampering, destruction and unauthorized access. Introduces foundational topics of computer and network security, including security models, cryptography and authentication protocols.

Equivalent - Duplicate Degree Credit Not Granted: TLEN 5550
Requisites: Requires prerequisite course of CSCI 5273 (minimum grade B). Restricted to graduate students only.
Additional Information: Departmental Category: Software Engineering

CSCI 6302 (3) Speech Recognition and Synthesis

Introduction to automatic speech recognition and understanding, conversational agents, dialogue systems, and speech synthesis/text-to-speech. Topics include the noisy channel model, Hidden Markov Models, A* and Viterbi decoding, language modeling (N-grams, entropy), concatenative synthesis, text normalization, dialogue and conversation modeling.

Requisites: Restricted to graduate students only.
Recommended: Prerequisites CSCI 5832 or LING 5200 or instructor consent required.
Additional Information: Departmental Category: Artificial Intelligence

CSCI 6314 (3) Algorithmic Economics

This course will survey the frontier of algorithmic economics: the study of incentives and strategic behavior through a computational lens. It will show how microeconomic theory applies to the design of algorithms, and conversely, how algorithmic thinking applies to economics. Other topics may include game theory, mechanism design / auction theory, forecasting mechanisms, and voting / social choice theory.

Requisites: Restricted to graduate students only.
Recommended: Prerequisite CSCI 5454.

CSCI 6402 (3) Issues and Methods in Cognitive Science

Interdisciplinary introduction to cognitive science, examining ideas from cognitive psychology, philosophy, education, and linguistics via computational modeling and psychological experimentation. Includes philosophy of mind; learning; categorization; vision and mental imagery; consciousness; problem solving; decision making, and game-theory; language processing; connectionism. No background in Computer Science will be presumed.

Equivalent - Duplicate Degree Credit Not Granted: EDUC 6504 and LING 6200 and PHIL 6310 and PSYC 6200 and SLHS 6402
Requisites: Restricted to graduate students only.
Additional Information: Departmental Category: Artificial Intelligence

CSCI 6454 (3) Advanced Algorithms

Topics include matching and network flows, matroids, computational geometry, parallel computation (PRAM, hypercube, mesh). Also includes Vlsi, database theory, distributed computation, cryptography, robotics, scheduling, probabilistic algorithms, approximation algorithms, average case, and amortized analysis, time permitting.

Requisites: Requires prerequisite course of CSCI 5454 (minimum grade B). Restricted to graduate students only.
Additional Information: Departmental Category: Theory of Computation

CSCI 6502 (3) Big Data Analytics: Systems, Algorithms, and Applications

This course studies state-of-the-art practice and research on efficient and effective systems and algorithms design for managing and exploring massive amounts of digital data in various application domains. The course takes an integrated approach that studies all three aspects of big data analytics: systems, algorithms, and applications. Specifically, this course covers big data systems for MapReduce, NoSQL, stream processing, deep learning, mobile/wearable/IoT sensing, as well as practical use of indexing, sketching, recommendation, graph, and deep learning algorithms. Domain-specific data management and analysis, such as those in online social networks, scientific discovery, business intelligence, health informatics, urban computing, are also covered.

Requisites: Restricted to graduate students only.

CSCI 6622 (3) Advanced Machine Learning

Covers advanced theoretical and practical topics in machine learning and latest developments in the field. Students conduct original research, either applied or theoretical, and present their results.

Requisites: Restricted to graduate students only.
Recommended: Prerequisite CSCI 5622 or instructor consent required.
Additional Information: Departmental Category: Artificial Intelligence

CSCI 6644 (1) Theory of Computing Reading Group

Exposition of key results in major areas of Theory of Computing presented by graduate students. The topics are selected every semester by voting. Examples of topics from previous semesters include: Hardness of Approximation and PCPs, Unique Games Conjecture, and Optimal Inapproximability Results for Max Cut. Previously offered as a special topics course.

Repeatable: Repeatable for up to 3.00 total credit hours.
Requisites: Restricted to graduate students only.
Recommended: Prerequisites Graduate-level courses in Algorithms and Complexity Theory.

CSCI 6686 (3) Numerical Methods for Constrained Optimization

Covers computational methods for constrained optimization. Topics include basic theory, methods for quadratic programming, active set strategies for linear constraints, and penalty and successive quadratic programming methods for nonlinearly constrained problems.

Requisites: Requires prerequisite course of CSCI 5606 (minimum grade B). Restricted to graduate students only.
Additional Information: Departmental Category: Numerical Computation

CSCI 6810 (1) Seminar in Computational Biology

Provides an overview of current research topics in computational biology and health informatics, with a focus on research conducted on campus. Each week students will attend an on-campus seminar or a presentation by an on-campus research group. Prepares students to participate in a research project.

Equivalent - Duplicate Degree Credit Not Granted: CSCI 4810
Additional Information: Departmental Category: General Computer Science

CSCI 6930 (1-3) Professional Internship

This class provides a structure for CS graduate students to receive academic credit for internships with industry partners that have an academic component to them suitable for graduate-level work. Participation in the program will consist of an internship agreement between a student and an industry partner who will employ the student in a role that supports the academic goals of the internship. Instructor participation will include facilitation of mid-term and final assessments of student performance as well as support for any academic-related issues that may arise during the internship period. May be taken during any term following initial enrollment and participation in CS graduate programs.

Requisites: Restricted to graduate students only.

CSCI 6940 (1) Master's Candidate for Degree

Registration intended for students preparing for a thesis defense, final examination, culminating activity, or completion of degree.

Requisites: Restricted to Computer Science (CSEN) graduate students or Computer Science Concurrent Degree majors only.
Additional Information: Departmental Category: General Computer Science

CSCI 6950 (1-6) Master's Thesis

Requisites: Restricted to Computer Science (CSEN) graduate students or Computer Science Concurrent Degree majors only.
Additional Information: Departmental Category: General Computer Science

CSCI 7000 (1-4) Current Topics in Computer Science

Covers research topics of current interest in computer science that do not fall into a standard subarea.

Repeatable: Repeatable for up to 18.00 total credit hours. Allows multiple enrollment in term.
Requisites: Restricted to graduate students only.
Additional Information: Departmental Category: General Computer Science

CSCI 7123 (3) Topics in Operating Systems

Topics selected by instructor. Possible topics are system design, measurement and evaluation, simulation, mathematical modeling, and parallelism.

Repeatable: Repeatable for up to 6.00 total credit hours. Allows multiple enrollment in term.
Requisites: Requires prerequisite course of CSCI 5573 (minimum grade B). Restricted to graduate students only.
Additional Information: Departmental Category: Operating Systems and Hardware

CSCI 7135 (1-3) Topics in Programming Languages

Topics selected by instructor. Possible topics are syntax, semantics, metacompilers, compiler design, and translator writing systems. Department consent required.

Repeatable: Repeatable for up to 6.00 total credit hours. Allows multiple enrollment in term.
Requisites: Restricted to graduate students only.
Additional Information: Departmental Category: Programming Languages

CSCI 7143 (3) Topics in Computer Systems

Topics selected by instructor. Possible topics are online systems, multiprocessing, microprogramming, architecture, data communications, and computing networks. Department consent required.

Repeatable: Repeatable for up to 6.00 total credit hours. Allows multiple enrollment in term.
Requisites: Restricted to graduate students only.
Additional Information: Departmental Category: Operating Systems and Hardware

CSCI 7154 (3) Topics in Theory of Computation

Selected topics of current interest in theory of computation.

Repeatable: Repeatable for up to 6.00 total credit hours. Allows multiple enrollment in term.
Requisites: Requires prerequisite course of CSCI 5454 (minimum grade B). Restricted to graduate students only.
Additional Information: Departmental Category: Theory of Computation

CSCI 7176 (3) Topics in Numerical Computation

Topics selected by instructor. Possible topics are numerical linear algebra, solution of differential equations, nonlinear algebra and optimization, data fitting, linear and nonlinear programming, and solution of large problems. Department consent required.

Repeatable: Repeatable for up to 6.00 total credit hours. Allows multiple enrollment in term.
Requisites: Restricted to graduate students only.
Additional Information: Departmental Category: Numerical Computation

CSCI 7222 (3) Topics in Nonsymbolic Artificial Intelligence

Topics vary from year to year. Possible topics include human and machine vision, signal and speech processing, artificial life, mathematical foundations of connectionism, and computational learning theory.

Repeatable: Repeatable for up to 6.00 total credit hours. Allows multiple enrollment in term.
Requisites: Restricted to graduate students only.
Recommended: Prerequisite CSCI 5622 or instructor consent required.
Additional Information: Departmental Category: Artificial Intelligence

CSCI 7412 (2) Cognitive Science Research Practicum

Independent, interdisciplinary research project in cognitive science for advanced graduate students pursuing a joint PhD in an approved core discipline and cognitive science. Research projects integrate at least two areas within the cognitive sciences: psychology, computer science, linguistics, education, philosophy. Students need commitments from two mentors for their project.

Equivalent - Duplicate Degree Credit Not Granted: EDUC 6506 and LING 7415 and PHIL 7415 and PSYC 7415 and SLHS 7418
Requisites: Requires a prerequisite course of CSCI 6402 or EDUC 6504 or LING 6200 or PHIL 6310 or PSYC 6200 (minimum grade B). Restricted to graduate students only.
Recommended: Prerequisite EDUC 6505.
Additional Information: Departmental Category: Artificial Intelligence

CSCI 7422 (2) Cognitive Science Research Practicum 2

Independent, interdisciplinary research project in cognitive science for advanced graduate students pursuing a joint Ph.D in an approved core discipline and cognitive science. Research projects integrate at least two areas within the cognitive sciences: psychology, computer science, linguistics, education, philosophy. Students need commitments from two mentors for their project.

Equivalent - Duplicate Degree Credit Not Granted: EDUC 6516 and LING 7425 and PHIL 7425 and PSYC 7425 and SLHS 7428
Requisites: Requires a prerequisite course of LING 7415 or PSYC 7415 or CSCI 7412 or EDUC 6506 (minimum grade B). Restricted to graduate students only.
Additional Information: Departmental Category: Artificial Intelligence

CSCI 7565 (3) Computational Phonology and Morphology

Surveys of the main approaches and central questions related to computational modeling and learning of morphology and phonology. We consider questions related to learnability of phonology/morphology, machine learning implementations, and linguist-driven grammar modeling.

Equivalent - Duplicate Degree Credit Not Granted: LING 7565

CSCI 7717 (3) Topics in Database Systems

Studies topics such as distributed databases, database interfaces, data models, database theory, and performance measurement in depth.

Repeatable: Repeatable for up to 6.00 total credit hours. Allows multiple enrollment in term.
Requisites: Requires prerequisite course of CSCI 5817 (minimum grade B). Restricted to graduate students only.
Additional Information: Departmental Category: Database Systems

CSCI 7772 (1) Topics in Cognitive Science

Reading of interdisciplinary innovative theories and methodologies of cognitive science. Students participate in the ICS Distinguished Speakers series that hosts internationally recognized cognitive scientists who share and discuss their current research. Session discussions include analysis of leading edge and controversial new approaches in cognitive science.

Equivalent - Duplicate Degree Credit Not Granted: EDUC 7775 and LING 7775 and PHIL 7810 and PSYC 7775 and SLHS 7775
Repeatable: Repeatable for up to 4.00 total credit hours.
Requisites: Restricted to graduate students only.
Additional Information: Departmental Category: Artificial Intelligence

CSCI 7818 (3) Topics in Software Engineering

Studies selected topics of current interest in software engineering. Department consent required.

Repeatable: Repeatable for up to 6.00 total credit hours. Allows multiple enrollment in term.
Requisites: Restricted to graduate students only.
Additional Information: Departmental Category: Software Engineering

CSCI 7900 (1-6) Doctoral Level Independent Study

For doctoral students.

Repeatable: Repeatable for up to 6.00 total credit hours. Allows multiple enrollment in term.
Requisites: Restricted to graduate students only.
Additional Information: Departmental Category: General Computer Science

CSCI 8990 (1-10) Doctoral Dissertation

Investigates some specialized field of computer science. Approved and supervised by faculty members.

Repeatable: Repeatable for up to 30.00 total credit hours. Allows multiple enrollment in term.
Requisites: Restricted to graduate students only.
Additional Information: Departmental Category: General Computer Science