The undergraduate degree requirements allow for some flexibility in which courses you can take to satisfy your Computer Science Core and Electives. The following suggested plans of study are optional*, and are provided to help you select courses that will help you focus on one area of interest while working toward your degree requirements. You should check your degree audit to determine how each course counts toward degree requirements.

Students in both the BS and BA may choose to follow all suggestions in a particular plan, part or none of these. These plans are meant to be a helpful planning tool.

*If you entered the Computer Science BS degree prior to fall 2015, you should consult with your academic advisor and your degree audit regarding classes that meet your specific Track requirements.

Recommended Courses

  • CSCI 2830-3 Special Topics in Computer Science: Software Engineering for Scientists (does not count as Computer Science credit for the Computer Science B.A., B.S., or minor)
  • CSCI 3022-3 Introduction to Data Science with Probability and Statistics
  • CSCI 3352-3 Biological Networks
  • CSCI 4314-3 Dynamic Models in Biology
  • CSCI 4802-1 Data Science Team Companion Course
  • MCDB 4520-3 Bioinformatics and Genomics (also sometimes offered as CSCI 4830 Special Topics)
  • Other topics courses, availability varies by semester

Human-Centered Computing (HCC) integrates the command of technology with insight into individuals, interactions of groups and organizations, and society. You will learn how to design, build and evaluate the systems that tie together technology with communication, collaboration, and other social processes to address the challenges and opportunities of our world.

The learning opportunities in HCC include human computer interaction, design of interactive systems, computer supported cooperative work and learning, educational technology, and user-developed knowledge collections and gaming. HCC projects address applications in health care, urban planning, emergency management, inclusive design, creativity, digital libraries, and learning. HCC provides opportunities for connecting with other programs at CU, including the:

Recommended Courses

  • CSCI 3002-4 Fundamentals of Human Computer Interaction*
  • CSCI 3010-3 Programming Project Workshop 
  • CSCI 3112-1 Human-Centered Computing Professional Development*
  • CSCI 3202-3 Introduction to Artificial Intelligence
  • CSCI 3287-3 Design & Analysis of Data Systems
  • CSCI 3702-3 Cognitive Science*
  • CSCI 4448-3 Object-Oriented Analysis and Design
  • CSCI 4849-3 Input, Interaction, and Accessibility
  • CSCI 4889-3 Interactive Machine Learning for Customizable & Expressive Interfaces
  • ATLS 4120-3 Mobile Application Development
  • ATLS 4320-3 Mobile Application Development: Advanced Topics
  • Other topics courses, availability varies by semester

*highly recommended

Machine Learning and Artificial Intelligence are rapidly expanding fields that now touch nearly every aspect of our lives. Algorithms to recommend movies on Netflix, suggest friends on Facebook, or rank search results on Google are all applications areas of active artificial intelligence research. The increasing availability of data and lack of people with the skills to mine and analyze the data has resulted in many, many available jobs in this area. The Machine Learning and Artificial Intelligence curriculum and career trajectory demands a solid foundation in introductory coursework, such as computing, algorithms, and calculus, as well as the advanced courses, such as machine learning, probability and statistics, and artificial intelligence.

The Machine Learning and Artificial Intelligence courses emphasize the following subject areas:

  • Cleaning, munging and wrangling diverse data sets
  • Drawing conclusions and inferences from data
  • Stochastic simulation and probabilistic reasoning
  • Designing and interpreting models that learn from data and experience

Recommended Courses

  • CSCI 3022-3 Introduction to Data Science with Probability & Statistics*
  • CSCI 3104-4 Algorithms
  • CSCI 3202-3 Introduction to Artificial Intelligence*
  • CSCI 3702-3 Cognitive Science
  • CSCI 3832-3 Natural Language Processing
  • CSCI 4622-3 Machine Learning
  • CSCI 4802-1 Data Science Team Companion Course
  • CSCI 4889-3 Interactive Machine Learning for Customizable & Expressive Interfaces
  • INFO 4604-3 Applied Machine Learning
  • ATLS 4214-3 Big Data Architecture
  • Other topics courses, availability varies by semester

*highly recommended

Numerical and Scientific Computing is a multidisciplinary area that draws from traditional computer science, mathematics, the physical and biological sciences, and engineering. It integrates knowledge and techniques from all of these disciplines to create computational technologies for a wide range of important applications in science and engineering.

  • Our understanding of the natural world is now based on computation as well as on traditional theory and experiment.
  • Numerical simulations permit investigations that would be too time-consuming, expensive, dangerous or even impossible to do experimentally.
  • Problems considered by computational scientists include climate and weather prediction, spacecraft design, video game construction and the discovery of new medicines and treatments among many others.

The Numerical and Scientific Computing plan emphasizes courses in numerical computation, high-performance scientific computing, and supporting areas of science and computer science. You will gain exposure to leading-edge computing systems that will allow you to contribute to a variety of professional opportunities including:

  • Scientific research efforts at universities and national laboratories
  • Mathematical and software support for simulations in aerospace, automotive and other industries
  • The design and development of animations and computer games
  • The processing of information and large data sets for companies like Google.

Recommended Courses

  • CSCI 3656-3 Numerical Computation*
  • CSCI 3753-4 Design & Analysis of Operating Systems
  • CSCI 4229-3 Computer Graphics
  • CSCI 4446-3 Chaotic Dynamics (requires Calculus 3)
  • CSCI 4576-4 High-Performance Scientific Computing*
  • CSCI 4253-3 Datacenter Scale Computing - Methods, Systems and Techniques
  • CSCI 4753-3 Computer Performance Modeling
  • CSCI 4809-3 Computer Animation
  • ATLS 4214-3 Big Data Architecture
  • Other topics courses, availability varies by semester

*highly recommended

There are many reasons why different programming languages have seen a rise and fall in popularity over time. But most programming languages have the same mathematical underpinnings that dictate how programmers interact with the computer.

Through the study of programming languages, students will:

  • Explore the underlying models that support programming languages as a means to express computation.
  • Master skills necessary to learn and utilize new programming languages and frameworks rapidly and effectively.
  • Design and implement programming language interpreters, domain specific languages, APIs and compilers.
  • Develop customized and advanced tools for programmer support such as feature rich IDEs, static analysis engine and programmer productivity tools.

Recommended Courses

  • CSCI 3155-4 Principles of Programming Languages
  • CSCI 3434-3 Theory of Computation
  • CSCI 3753-4 Design and Analysis of Operating Systems
  • CSCI 4448-3 Object-Oriented Analysis & Design
  • CSCI 4555-3 Compiler Construction

Robotics is the science of building physical devices that interact with their environment and people. In the near future, a robot might be folding your laundry, driving you home, or flipping your next burger. It is a truly interdisciplinary field of study that lies at the convergence of computer science, mathematics, physics, engineering and cognitive science. As a computer scientist in the field, you will be tasked with designing algorithms and frameworks for perception (computer vision, force and tactile sensing, inertial data, distance sensors), cognition (knowledge, representation, planning, learning) and control (kinematics, dynamics, manipulation, locomotion). The Robotics course of study requires solid foundations in core CS courses (e.g. computing and algorithms) as well as advanced courses (e.g. probability & statistics, mathematics, artificial intelligence, computer vision). The Robotics curriculum will prepare you for a career trajectory full of exciting future opportunities, from visionary jobs that challenge your creativity on a daily basis, to concrete applications that drive the development of the next generation of industrial machines.

Recommended Courses

  • CSCI 2820-3 Linear Algebra with CS Applications
  • CSCI 3002-4 Fundamentals of Human Computer Interaction
  • CSCI 3022-3 Introduction to Data Science with Probability & Statistics
  • CSCI 3202-3 Introduction to Artificial Intelligence*
  • CSCI 3302-3 Introduction to Robotics*
  • CSCI 3832-3 Natural Language Processing
  • CSCI 4302-3 Advanced Robotics*
  • CSCI 4831-3 Topics: Computer Vision
  • Other topics courses, availability varies by semester

*highly recommended

Software permeates the very fabric of modern society. Entire industries such as transportation, shipping, banking, government and medicine would be unable to function without software infrastructure. Software engineers work in teams to create and maintain this software, ensuring that the resulting systems are reliable, efficient and safe.

The Software Engineering plan emphasizes courses in:

  • Core software engineering concepts, methods and tools
  • The understanding of user requirements and user interface design
  • Working in teams to achieve complex objectives

Software Engineering is an exciting domain with significant potential for lifelong employment. The position of software engineer was recently ranked as the "best job" in America. High salaries and opportunities for creativity were key to this No. 1 rating. Furthermore, the demand for software engineers is projected only to increase for the foreseeable future; the field of software engineering is one of the fastest-growing occupations in the country.

Recommended Courses

  • CSCI 3002-4 Fundamentals of Human Computer Interaction*
  • CSCI 3010-3 Programming Project Workshop*
  • CSCI 3287-3 Design & Analysis of Data Systems
  • CSCI 3308-3 Software Methods and Tools*
  • CSCI 4229-3 Computer Graphics
  • CSCI 4448-3 Object-Oriented Analysis and Design*
  • ATLS 4120-3 Mobile Application Development
  • ATLS 4320-3 Mobile Application Development: Advanced Topics
  • ATLS 4214-3 Big Data Architecture
  • Other topics courses, availability varies by semester

*highly recommended

The use of technology is escalating in everyday tasks for communication and collaboration. As we become increasingly dependent on services such as email and cell phones, the demand for interconnection of communication devices and systems grows. Systems and networked systems professionals work with hardware and software to select, design, deploy, integrate, evaluate and administer network and communication infrastructures, and help application developers make these devices a reality.

The Systems, Networks and Security plan emphasizes courses in:

  • Direct control of hardware through low-level software
  • The design and implementation of operating systems and programming languages
  • Networking and performance analysis
  • Deployment of networks with specific design and protocol requirements
  • Applying networking to deploy services in multimedia, information storage and distribution, security and services on the Internet such as the World Wide Web and email
  • Operating systems analysis and management.

This plan emphasizes a significant understanding of the computer from low-level machine architecture to user-level application and service management. Examples of everyday services managed by networked systems professionals are:

  • Router and smart switch management for deploying and securing networks
  • Server configuration, management, analysis, modeling and evaluation
  • Intrusion prevention and detection, system auditing and forensics
  • Software for smartphones
  • Supercomputers that are used to predict weather, design pharmaceuticals and simulate earthquakes and tidal waves
  • Robots that explore space, handle hazardous materials and accidents, and vacuum floors.

If you are interested in this plan, you may also be interested in the BS/MS concurrent degree option between Computer Science and the Interdisciplinary Telecommunications Program.

Recommended Courses

  • CSCI 2400-4 Computer Systems
  • CSCI 3403-4 Introduction to CyberSecurity for a Converged World
  • CSCI 3753-4 Design & Analysis of Operating Systems*
  • CSCI 4113-3 (or TLEN 5842) Linux System Administration*
  • CSCI 4253-3 Datacenter Scale Computing - Methods, Systems and Techniques
  • CSCI 4273-3 Network Systems*
  • CSCI 4413-3 Computer Security and Ethical Hacking*
  • CSCI 4593-3 Computer Organization
  • CSCI 4753-3 Computer Performance Modeling
  • ECEN 4133-3 Fundamentals of Computer Security
  • Other topics courses, availability varies by semester

*highly recommended

The Theory of Computing studies the math underlying all aspects of computing, from the fundamentals of algorithms, to the design of programming languages, and the inherent complexity of computational problems. Developing this mathematical foundation informs what is possible or impossible (hint: machine learning can't solve everything!), often leading to surprising connections and new possibilities. Many central developments in computer science began in Theory: cryptography, content delivery networks (such as Akamai), web search, and of course, computers themselves and now quantum computers.  Many more developments wait to be discovered! The Theory curriculum builds a strong foundation in the mathematics behind computer science, and prepares students to design algorithms and programming languages in a variety of domains, and to understand their capabilities and limitations.

Recommended Courses

  • CSCI 3090-3 Introduction to Quantum Computing
  • CSCI 3104-4 Algorithms
  • CSCI 3155-4 Principles of Programming Languages
  • CSCI 3434-3 Theory of Computation*
  • CSCI 3656-3 Numerical Computation (or APPM/MATH 4650)
  • CSCI 4114-3 Practical Algorithmic Complexity
  • MATH 4440-3 Mathematics of Coding and Cryptography

*highly recommended