Computer science is an exciting and challenging field that has impact on many parts of our lives. Computer scientists craft the technologies that enable the digital devices we use every day. They develop the large-scale software that powers business and industry, advance the computational techniques and write the software that supports scientists in their study of the world around us. Many new applications of computing technology remain to be discovered. Computing will be at the heart of future revolutions in business, science and society. Students who study computer science will be at the forefront of these important advances.

Computer science offers study in the fields of computer systems, cyber security, robotics, algorithm design, artificial intelligence, software and web engineering, programming languages, database design, human–computer interaction, machine learning, data science, numerical and parallel computing, speech and language processing and theoretical computer science.

Computer science is concerned with how computers are constructed, how they store and process data, how they are used in problem-solving and how the quality of those solutions is assessed. It is about the science of creating software for a variety of users, and understanding how that software interacts with the hardware on which it is run and goes well beyond the machine to the study of how people interact with the technologies around them. Applications of computer science reach far and wide.

For more information, visit the Department of Computer Science website.

Course code for this program is CSCI.

Career Possibilities

Computer science graduates from CU Boulder are engaged in a wide variety of jobs with many different companies in locations all over the world. They produce the software and systems that touch lives every day in fields as diverse as scientific exploration, communication, finance, medicine, manufacturing, entertainment and research. Many are software developers, but others become teachers, writers, doctors, lawyers, scientists, military leaders and entrepreneurs. They work at some of the largest, most influential companies in the world, at research institutions, nonprofits and at the smallest start-ups of every type imaginable.

Facilities, Programs and Opportunities

The Department of Computer Science uses a modern computing infrastructure that supports its research and educational missions. This includes general purpose computing labs provided by the university, additional instructional labs and administrative computing resources provided by the department and specialized labs dedicated to the work of individual research groups. A wide variety of computing resources are available so that students have the opportunity to learn about and use cutting-edge equipment and software. The university research computing service maintains a supercomputer, high-speed networking and advanced computing infrastructure for the campus. The computer science educational culture emphasizes the use of individual laptop computers, including their use in courses and group work.

There are many networking opportunities available with companies offering paid internships. Boulder's tech start-up community, tech companies and research labs provide students with many employment opportunities while earning their degrees. There are also extensive opportunities for undergraduate students to participate in research projects across the campus.

Faculty

While many faculty teach both undergraduate and graduate students, some instruct students at the undergraduate level only. For more information, contact the faculty member's home department.

Ahmed, Nisar R.
Associate Professor; PhD, Cornell University

Alistar, Mirela
Assistant Professor; PhD, Technical University of Denmark

Anderson, Kenneth M.
Chair, Professor; PhD, University of California, Irvine

Ashraf, Asa
Associate Teaching Professor; MS, South Dakota State University

Banic, Amy
Visiting Associate Professor

Black, John
Associate Professor; PhD, University of California, Davis

Bortz, David Matthew
Associate Professor; PhD, North Carolina State University

Bradley, Elizabeth
Professor; PhD, Massachusetts Institute of Technology

Brown, Jed
Associate Chair, Associate Professor; DSc, ETH Zürich (Switzerland)

Brubaker, Jed Richards
Assistant Professor; PhD, University of California, Irvine

Burke, Robin D.
Professor; PhD, Northwestern University

Cai, Xiao-Chuan
Professor Emeritus; PhD, New York University

Chang, Bor-Yuh Evan
Associate Professor; PhD, University of California, Berkeley

Chen, Lijun
Associate Professor; PhD, California Institute of Technology

Clauset, Aaron
Professor; PhD, University of New Mexico

Colunga, Eliana
Associate Professor; PhD, Indiana University Bloomington

Correll, Nikolaus J.
Associate Professor; PhD, Ecole Polytech Federale de Lausanne (Switzerland)

Cox, Murray William
Associate Teaching Professor; PhD, Texas A&M University

Curry, James H.
Professor; PhD, University of California, Berkeley

D'Mello, Sidney
Professor; PhD, University of Memphis

Devendorf, Laura
Assistant Professor; PhD, University of California, Berkeley

Do, Ellen Yi-Luen
Professor; PhD, Georgia Institute of Technology

Dowell, Robin D.
Associate Professor; DSc, Washington University

Fiesler, Casey Lynn
Associate Professor; PhD, Georgia Institute of Technology

Fleming, Ioana
Senior Instructor; PhD, Johns Hopkins University

Frew, Eric W.
Professor; PhD, Stanford University

Frongillo, Rafael M.
Assistant Professor; PhD, University of California, Berkeley

Gifford, Kevin K.
Research Professor; PhD, University of Colorado Boulder

Grochow, Joshua A.
Assistant Professor; PhD, University of Chicago

Gross, Mark D.
Professor; PhD, Massachusetts Institute of Technology

Grunwald, Dirk C.
Faculty Director, Professor; PhD, University of Illinois at Urbana–Champaign

Gurari Danna
Assistant Professor; PhD, Boston University

Ha, Sangtae
Associate Professor; PhD, North Carolina State University

Han, Richard
Professor; PhD, University of California, Berkeley

Hauser, Thomas
Associate Professor Adjunct; PhD, Technische Universität München (Germany)

Hayes, Bradley H.
Assistant Professor; PhD, Yale University

Heckman, Christoffer
Assistant Professor; PhD, Cornell University

Herzfeld, Ute C.
Research Professor; PhD, Johannes Gutenberg-Universität Mainz (Germany)

Hoenigman, Rhonda
Associate Dean, Associate Teaching Professor; PhD, University of Colorado Boulder

Hunter, Lawrence
Professor; PhD, Yale University

Izraelevitz, Joe
Assistant Professor; PhD, University of Rochester

Jansen, Kenneth E.
Professor; PhD, Stanford University

Jessup, Elizabeth R.
Professor Emeritus; PhD, Yale University

Kane, Shaun Kevin
Associate Professor; PhD, University of Washington

Karimzadeh, Morteza
Assistant Professor; PhD, Pennsylvania State University

Keegan, Brian
Assistant Professor; PhD, Northwestern University

Keller, Eric Robert
Associate Professor; PhD, Princeton University

King, Roger A.
Professor Emeritus

Kissler, Stephen
Assistant Professor; PhD, University of Cambridge

Knox, David Allen
Assistant Teaching Professor; PhD, University of Colorado Health Sciences Center

Lahijanian, Morteza Mehdi
Assistant Professor; PhD, Boston University

Larremore, Daniel B.
Assistant Professor; PhD, University of Colorado Boulder

Layer, Ryan M.
Assistant Professor; PhD, University of Virginia

Lehman, Tamara
Assistant Professor; PhD, Duke University

Leithinger, Daniel
Assistant Professor; PhD, Massachusetts Institute of Technology

Lewis, Clayton H.
Professor Emeritus; PhD, University of Michigan Ann Arbor

Lladser, Manuel E.
Associate Professor; PhD, The Ohio State University

Lv, Qin
Professor, Associate Chair; PhD, Princeton University

MacCurdy, Robert B.
Assistant Professor; PhD, Cornell University

Martin, James H.
Professor; PhD, University of California, Berkeley

Mishra, Shivakant
Professor; PhD, University of Arizona

Monteleoni, Claire Elizabeth
Associate Professor; PhD, Massachusetts Institute of Technology

Morrison, Rebecca E.
Assistant Professor; PhD, University of Texas Austin

Mozer, Michael C.
Research Professor; PhD, University of California, San Diego

Naidu, Supriya
Assistant Teaching Professor; MS, University of Colorado Boulder

Nath Sreesha
Assistant Teaching Professor, Associate Chair; MS, University of Colorado Boulder

Onyejekwe, Osita Eluemuno
Assistant Teaching Professor; PhD, Florida Institute of Technology

Oscamou, Maribeth B.
Associate Teaching Professor; MS, University of Colorado Boulder

Pacheco, Maria
Assistant Professor; PhD, Purdue University

Palen, Leysia A.
Distinguished Professor, Associate Chair; PhD, University of California, Irvine

Palmer, Martha
Research Professor; PhD, University of Edinburgh (Scotland)

Paradise, Alan
Assistant Teaching Professor; MS, Washington University in St. Louis

Peleg, Orit
Assistant Professor; PhD, ETH Zürich (Switzerland)

Perigo, Levi
Scholar in Residence; PhD, Nova Southeastern University

Phillips, Caleb Timothy
Assistant Professor Adjunct

Quigley, David Philp
Assistant Teaching Professor; PhD, University of Colorado Boulder

Reckwerdt, Eric
Assistant Teaching Professor; PhD, University of Hawaii Manoa

Reed, David P.
Scholar in Residence; PhD, Carnegie Mellon University

Repenning, Alexander
Professor Adjunct; PhD, University of Colorado Boulder

Rivera, Michael
Assistant Professor; PhD, Carnegie Mellon University

Roncone, Alessandro
Assistant Professor; PhD, Istituto Italiano di Tecnologia (Italy)

Roque, Ricarose
Assistant Professor; PhD, Massachusetts Institute of Technology

Rozenberg, Grzegorz
Professor Adjoint

Rozner, Eric John
Assistant Professor; PhD, University of Texas at Austin

Sankaranarayanan, Sriram
Professor, Associate Chair; PhD, Stanford University

Santos, Jose R.
Associate Teaching Professor; MS, University of Colorado Boulder

Schnabel, Robert B.
Professor, Faculty Director; PhD, Cornell University

Schreüder, Willem A.
Associate Professor Adjunct; PhD, University of Stellenbosch

Stade, Elisabeth Cote
Associate Teaching Professor, Associate Faculty Director; MA, University of Colorado Boulder

Sumner, Tamara
Professor; PhD, University of Colorado Boulder

Thrall, Lloyd Gregory
Associate Faculty Director; MA, University of London (England)

Trivedi, Ashutosh
Assistant Professor; PhD, University of Warwick (UK)

Truong, Le Hoang
Teaching Assistant Professor; MS, Korea Advanced Institute of Science and Technology

Tufo, Henry
Professor; PhD, Brown University

Vernerey, Divya E.
Teaching Associate Professor; PhD, Northwestern University

Voida, Amy Kathryn Mitchell
Associate Professor; PhD, Georgia Institute of Technology

Voida, Stephen A.
Associate Professor; PhD, Georgia Institute of Technology

Vu, Tam Ngoc
Associate Professor; PhD, Rutgers University

Ward, Wayne Hinson
Research Professor; PhD, University of Colorado Boulder

Windyga, Piotr
Scholar in Residence; PhD, University of Rennes

Wu, Di
Teaching Assistant Professor; PhD, City University of New York

Wustrow, Eric A.
Assistant Professor; BE, University of Michigan Ann Arbor

Yeh, Tom
Associate Professor; PhD, Massachusetts Institute of Technology

Yuan, Lei
Assistant Professor; PhD, Northwestern University

Zagrodzki, Maciej
Assistant Teaching Professor; MSc, Colorado School of Mines

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 and CSCI 1320 and 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 APPM3650/CSCI2270/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 or 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 discipline 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.

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: (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 APPM 3650 or ASTR 2600 or CSCI 2270 or CSCI 2275 or INFO 2201 or PHYS 2600 (minimum grade C-).
Recommended: Prerequisite Linear Algebra (CSCI 2820 or CSCI 2897 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: (one of APPM 3650 or ASTR 2600 or CSCI 2270 or CSCI 2275 or INFO 2201 or PHYS 2600) and (one of 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 or ECEN 2360 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 4897 (3) Computational and Mathematical Modeling of Infectious Diseases

Explores the ways we model infectious diseases using math and computing, from the dynamic spread of infectious diseases between humans, to a pathogen's growth within the body. Learning goals include (i) gaining a mastery of both classic and modern infectious disease models (ii) learning about a variety of infectious diseases, and (iii) engaging with the ethics of infectious disease modeling. Requires beginner or advanced-beginner skill in Python or R.

Equivalent - Duplicate Degree Credit Not Granted: CSCI 5897
Requisites: Prereqs:(1of MATH1300/1310/APPM1345/50) (1of APPM3650/ASTR2600/CSCI2270/2275/INFO2201/PHYS2600) (1of APPM3570/CHEN3010/CSCI3022/CVEN3227/EBIO4410/ECEN3810/ECON3818/IPHY3280/MATH3510/4510/4520/MCDB3450/MCEN3047/PSYC2111/STAT2600/3100/4000/4520) all min 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

CSPB 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: CSCI 1000
Requisites: Restricted to students in the Applied Computer Science Post-baccalaureate program (CSAP) only.

CSPB 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 and CSCI 1320 and ECEN 1310 CSCI 1300
Requisites: Restricted to students in the Applied Computer Science Post-baccalaureate program (CSAP) only.

CSPB 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 CSCI 2270
Requisites: Requires prerequisite course of (ASEN 1320 minimum grade B-) or (CSCI 1300 or CSCI 1310 or CSPB 1300 or ECEN 1310 (minimum grade C-). Restricted to students in the Applied Computer Science Post-baccalaureate program (CSAP) only.

CSPB 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: CSCI 2400
Requisites: Requires corequisite course of CSPB 2270 or CSCI 2270 or CSCI 2275 or ECEN 2370. Restricted to students in the Applied Computer Science Post-baccalaureate program (CSAP) only.

CSPB 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: CSCI 2820
Requisites: Requires prerequisite courses of CSPB 2824 or CSCI 2824 or APPM 1345 or APPM 1350 or MATH 1300 or MATH 1310 (all minimum grade C-). Restricted to students in the Applied Computer Science Post-baccalaureate program (CSAP) only.

CSPB 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: CSCI 2824
Requisites: Requires prerequisite or corequisite course of ASEN 1320 or CSCI 1300 or CSPB 1300 or ECEN 1310 (all minimum grade C-). Restricted to students in the Applied Computer Science Post-baccalaureate program (CSAP) only.

CSPB 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: CSCI 3022
Requisites: Requires prereq or coreq of (ASEN 1320 or CSCI 1300 or CSPB 1300 or ECEN 1310) (APPM 3170 or CSCI 2824 or CSPB 2824 or ECEN 2703 or MATH 2001) (min grade C-). Restricted to students in the Applied Computer Science Post-baccalaureate program (CSAP) onl

CSPB 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: CSCI 3104
Requisites: Requires prereq course (APPM 3170 or CSCI 2824 or CSPB 2824 or ECEN 2703 or MATH 2001) prereq or coreq course of (CSCI 2270 or CSPB 2270) (all min grade C-). Restricted to students in the Applied Computer Science Post-baccalaureate program (CSAP) only

CSPB 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 CSPB 2270 or CSCI 2270 or CSCI 2275 (minimum grade C-). Restricted to students in the Applied Computer Science Post-baccalaureate program (CSAP) only.

CSPB 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: CSCI 3155
Requisites: Requires prerequisite courses of (CSCI 2270 or CSPB 2270 or CSCI 2275) and (APPM 3170 or CSCI 2824 or CSPB 2824 or ECEN 2703 or MATH 2001) (all min grade C-). Restricted to students in the Applied Computer Science Post-baccalaureate program (CSAP) only.

CSPB 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: CSCI 3202
Requisites: Req. prereq of (CSPB/CSCI2270 or CSCI2275) (APPM3170 or CSPB/CSCI2824 or ECEN2703 or MATH2001) one of: (APPM3570/4570/CHEN3010/CSCI3022/CSPB3022/CVEN3227/ECEN3810/ECON3818/MATH3510/4510/STAT4520) (all min C-). Rstr to AppCompSci post-bac(CSAP).

CSPB 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: CSCI 3287
Requisites: Requires prerequisite course of CSCI 2270 or CSCI 2275 or CSPB 2270 (minimum grade C-). Restricted to students in the Applied Computer Science Post-baccalaureate program (CSAP) only.

CSPB 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 CSCI 3302
Requisites: Requires prereqs of (CSCI 2270 or CSPB 2270 or CSCI 2275) (APPM 3170 or CSCI 2824 or CSPB 2824 or ECEN 2703 or MATH 2001) (CSCI 2820 or CSPB 2820)(all min grade C-). Restricted to students in the Applied Computer Science Post-bac program(CSAP) only

CSPB 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: CSCI 3308
Requisites: Requires prerequisite or corequisite course of CSPB 2270 or CSCI 2270 or CSCI 2275 (minimum grade C-). Restricted to students in the Applied Computer Science Post-baccalaureate program (CSAP) only.

CSPB 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: CSCI 3403
Requisites: Requires prerequisite courses of CSPB 2400 or CSCI 2400 or ECEN 3350 (minimum grade C-). Restricted to students in the Applied Computer Science Post-baccalaureate program (CSAP) only.

CSPB 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 CSCI 3702
Requisites: Requires prerequisite or corequiste of ASEN 1320 or CSCI 1300 or CSCI 2275 or CSPB 1300 or ECEN 1310 (minimum grade C-). Restricted to students in the Applied Computer Science Post-baccalaureate program (CSAP) only.
Recommended: Prerequisites LING 2000 or PHIL 2440 or PSYC 2145.

CSPB 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: CSCI 3753
Requisites: Requires prerequisite courses of (CSCI 2270 or CSPB 2270 or CSCI 2275) and (CSCI 2400 or CSPB 2400 or ECEN 3350) (all minimum grade C-). Restricted to students in the Applied Computer Science Post-baccalaureate program (CSAP) only.

CSPB 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.

Requisites: Requires prerequisite or corequisite courses CSCI 1300 or CSPB 1300 and CSCI 2824 or CSPB 2824 (all minimum grade C-). Restricted to students in the Applied Computer Science Post-baccalaureate program (CSAP) only.

CSPB 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 CSCI 4502
Requisites: Requires prerequisite course of CSPB 2270 or CSCI 2270 or CSCI 2275 (minimum grade C-). Restricted to students in the Applied Computer Science Post-baccalaureate program (CSAP) only.

CSPB 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: CSCI 4622
Requisites: Prereqs: (CSCI/CSPB2270 or CSCI2275)(1 of APPM3310,CSCI/CSPB2820,MATH2130/2135)(1 of CSCI2824,CSPB2824,ECEN2703,APPM3170,MATH2001)(1 of APPM3570,CSCI/CSPB3022,CVEN3227,ECEN3810,ECON3818,MATH3510,MCEN3047,STAT3100/4000)(all min C-). CSAP students only

CSPB 4830 (1-4) Special Topics in Applied Computer Science

Covers topics of interest in applied computer science at the undergraduate level. Content varies from semester to semester.

Repeatable: Repeatable for up to 9.00 total credit hours. Allows multiple enrollment in term.
Requisites: Restricted to students in the Applied Computer Science Post-baccalaureate program (CSAP) only.

CSPB 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 or tutor lower-division computer science students. Department consent required.

Repeatable: Repeatable for up to 3.00 total credit hours.
Requisites: Requires prerequisite course of CSPB 1300 or CSCI 1300 (minimum grade C-).