The following requirements are effective for students starting the degree in Summer 2020 or later.
Students who started the degree before Summer 2020 should see the curriculum guide for their specific requirement term (term they entered the major).
Table of Contents
Any declarable program of at least 15 hours from any CU Boulder college (approved major, minor, certificate)
All of the following courses are required:
- CSCI 1300 (4) Computer Science 1: Starting Computing
- CSCI 2270 (4) Computer Science 2: Data Structures
- CSCI 2400 (4) Computer Systems
- CSCI 3104 (4) Algorithms
- CSCI 3155 (4) Principles of Programming Languages
- CSCI 3308 (3) Software Development Methods and Tools
Select four of the following (12-15):
- CSCI 3002 Fundamentals of Human-Computer Interaction
- CSCI 3202 Introduction to Artificial Intelligence
- CSCI 3287 Design and Analysis of Data Systems
- CSCI 3302 Introduction to Robotics
- CSCI 3403 Introduction to CyberSecurity for a Converged World
- CSCI 3434 Theory of Computation
- CSCI 3656 Numerical Computation
- CSCI 3753 Design and Analysis of Operating Systems
- CSCI 4022 Advanced Data Science
- CSCI 4273 Network Systems
- CSCI 4448 Object-Oriented Analysis and Design
CSCI Upper Division Electives
Additional courses from the Computer Science Core list or the list below to bring the total number of computer science credit hours to 45 or more and upper division CSCI credit hours to at least 18.
- CSCI 3010 (3) Programming Project Workshop
- CSCI 3022 (3) Introduction to Data Science with Probability and Statistics (can count for probability/statistics requirement OR CS elective credit, but not both)
- CSCI 3090 (3) Introduction to Quantum Computing
- CSCI 3112 (1) Human-Centered Computing Professional Development
- CSCI 3352 (3) Biological Networks
- CSCI 3702 (3) Cognitive Science
- CSCI 3832 (3) Natural Language Processing
- CSCI 4113 (3) Linux System Administration (also offered as TLEN 5842; only one of these will count)
- CSCI 4114 (3) Practical Algorithmic Complexity
- CSCI 4122 (3) Information Visualization
- CSCI 4229 (3) Computer Graphics
- CSCI 4239 (3) Advanced Computer Graphics
- CSCI 4253 (3) Datacenter Scale Computing
- CSCI 4302 (3) Advanced Robotics
- CSCI 4314 (3) Dynamic Models in Biology
- CSCI 4413 (3) Computer Security & Ethical Hacking
- CSCI 4446 (3) Chaotic Dynamics
- CSCI 4502 (3) Data Mining
- CSCI 4555 (3) Compiler Construction
- CSCI 4576 (4) High-Performance Scientific Computing
- CSCI 4593 (3) Computer Organization
- CSCI 4622 (3) Machine Learning
- CSCI 4753 (3) Computer Performance Modeling
- CSCI 4802 (1) Data Science Team Companion Course (can count up to 3 credits)
- CSCI 4809 (3) Computer Animation
- CSCI 4830 (3) Special Topics in Computer Science (up to 9 credit hours total from 4830/4831 combined can count toward CS electives)
- CSCI 4831 (3) Special Topics in Algorithms (up to 9 credit hours total from 4830/4831 combined can count toward CS electives)
- CSCI 4849 (3) Input, Interaction, and Accessibility
- CSCI 4889 (3) Interactive Machine Learning for Customizable and Expressive Interfaces
- CSCI 4900 (3) Upper Division, Undergraduate Independent Study
- APPM 4120/MATH 4120 (3) Introduction to Operations Research
- APPM 4370 (3) Computational Neuroscience
- APPM 4720 (3) Open Topics in Applied Mathematics: Randomized Algorithms, instructor permission required
- APPM 4720 (3) Open Topics in Applied Mathematics: Applied Deep Learning, instructor permission required
- ATLS 4120 (3) Mobile Application Development (formerly offered as ATLS 4519 Special Topics: Mobile App Dev; only one of these will count toward the CSEN-BS)
- ATLS 4214 (3) Big Data Architecture (formerly offered as CSCI 4830 Special Topics: Big Data or ATLS 4519 Special Topics: Big Data; only one of these will count toward the CSEN-BS)
- ATLS 4320 (3) Mobile Application Development: Advanced Topics (formerly offered as ATLS 4519 Special Topics: Adv Mobile App Development; only one of these will count toward the CSEN-BS)
- ECEN 2350 (3) Digital Logic
- ECEN 4133 (3) Fundamentals of Computer Security
- ECEN 4313 (3) Concurrent Programming
- INFO 3504 (3) Problems in Information Science: Digital Identity
- INFO 4602 (3) Mastery in Information Science: Information Visualization
- INFO 4604 (3) Mastery in Information Science: Applied Machine Learning
- INFO 4609 (3) Mastery in Information Science: User Centered Design
- INFO 4611 (3) Mastery in Information Science: Ubiquitous Computer Experience Design
- MATH 4440 (3) Mathematics of Coding and Cryptography
- MCDB 4520 (3) Bioinformatics & Genomics
Select one of the following calculus sequences (8-12):
Sequence 1 (preferred)
- MATH 1300 Calculus 1
- MATH 2300 Calculus 2
- APPM 1350 Calculus 1 for Engineers
- APPM 1360 Calculus 2 for Engineers
- APPM 1340 Calculus 1 with Algebra, Part A
- APPM 1345 Calculus 1 with Algebra, Part B
- APPM 1360 Calculus 2 for Engineers
Select one of the following courses (3):
- CSCI 2824 Discrete Structures
- MATH 2001 Introduction to Discrete Mathematics
- APPM 3170 Discrete Applied Mathematics
Students are responsible for knowing and adhering to course prerequisites as listed in the course catalog. Some courses on this approved list may have prerequisites that are not otherwise required for the computer science major. CSCI 2824 is not approved for MATH courses that require MATH 2001; students may seek instructor approval to take such courses but admission is not guaranteed.
Linear Algebra or Probability/Statistics
Select one of the following courses (3-4):
- CSCI 2820 Linear Algebra with Computer Science Applications
- MATH 2130 Introduction to Linear Algebra for Non-Mathematics Majors
- MATH 2135 Introduction to Linear Algebra for Mathematics Majors
- APPM 3310 Matrix Methods and Applications
- CSCI 3022 Introduction to Data Science with Probability and Statistics
- MATH 3510 Introduction to Probability and Statistics
- MATH 4510 Introduction to Probability Theory
- APPM 3570 Applied Probability
- STAT 3100 Applied Probability
- ECON 3818 Introduction to Statistics with Computer Applications
- STAT 4000 Statistical Methods and Application I
Students are responsible for knowing and adhering to course prerequisites as listed in the course catalog. Some courses on this approved list may have prerequisites that are not otherwise required for the computer science major.
Logic and Ethics
Select one of the following logic courses:
Select one of the following ethics courses:
- PHIL 1100 Ethics
- PHIL 1200 Contemporary Social Problems
- PHIL 2160 Ethics and Information Technology
- INFO 4601 Mastery in Information Science: Ethical and Policy Dimensions of Information and Technology
- CSCI 2750 Computing, Ethics and Society
Upper Division PHIL Logic or Ethics courses may be substituted by petition.
General Education Curriculum
The gen ed requirements allow students to pursue their passions while also ensuring that they venture into diverse areas of learning. The flexibility of the gen ed requirements enables students to explore areas of particular interest in depth and facilitates the addition of minors or second majors.
The general education curriculum consists of three basic categories of requirements:
- Skills: foreign language proficiency, quantitative reasoning and written communication.
- Distribution: 12 credit hours of art and humanities, 12 credit hours of social sciences and 12 credit hours of natural sciences.
- Diversity: includes a U.S. perspective and a global perspective course. These courses may also count toward the distribution requirement.
BA students are eligible to participate in the Software Engineering Project or Entrepreneurial Project courses, provided they meet the following criteria.
Senior Capstone Course Options
Software Engineering Project
- CSCI 4308-4, Software Engineering Project 1 (fall)
- CSCI 4318-4, Software Engineering Project 2 (spring)
- CSCI 4348-4, Startup Essentials: Entrepreneurial Project 1
- CSCI 4358-4, Entrepreneurial Project 2
Either sequence must be taken contiguously and may not be taken before the senior year.
Requirements to Participate in Capstone Options
To participate in either option, BA students must have taken the following courses:
- CSCI 1300-4 (or equivalent)
- CSCI 2270-4
- CSCI 2400-4
- CSCI 2824-3 (or other discrete math option)
- CSCI 2820-3 (or other linear algebra option)
- CSCI 3308-3, Software Development Methods and Tools
- CSCI 3155-4, Principles of Programming Languages
At least two CS upper division courses (BA core preferred) in addition to CSCI 3308 and CSCI 3155 – 6-8 hours
- TOTAL at least 31 hours in the major
- GPA 3.0 or better in CSCI
- Completed upper division writing course
- Must have fall and spring semesters remaining in academic plan.
If you meet the above criteria and want to apply for the upcoming fall, make an appointment with the BA advisor to review your degree audit. If you are not about to start your senior year, but have an interest in Senior Capstone for the future, use the criteria as guidelines for your upcoming course plans.
Senior Capstone are controlled enrollment courses. The CS department will give priority to BS students for whom they are a requirement. BA students taking them for elective credit will be enrolled with instructor approval on a space-available, first-come, first-served basis.
Credit Hours and Free Elective Credit
Satisfying all the other course requirements as described above totals a minimum of 116 credit hours, the exact number depending on specific courses selected and/or transfer credit. Students take “free electives” to reach the required minimum 120 total credits. All courses are considered acceptable free electives.
Students need to have the following grade point averages:
- A cumulative GPA of 2.25 or better in all courses taken at CU for computer science requirements.
- A cumulative GPA of 2.25 or better in all courses attempted at CU.
- A cumulative GPA of 2.25 or better in all CU courses used to satisfy graduation requirements.
Students need to have the following grades in individual courses:
- A grade of C- or better is required in each Computer Science Foundation course, as well as in each course used to satisfy the Computer Science Core and the Computer Science Capstone.
- A grade of C- or better is needed in all prerequisite courses to take a subsequent course.
- The minimum passing grade for a course that is considered a prerequisite for another required course is C-. If a grade of D+ or lower is received in a course which is prerequisite to another, the student is required to repeat the course until the minimum acceptable course grade has been earned. If a student takes the advanced course, it does not remove the obligation to repeat the prerequisite course, even if the grade earned in the advanced course is a C- or above.
- In general, aside from the above restrictions, any passing grade, i.e., a D- or better, is acceptable to fulfill a degree requirement.
- A student may not enroll more than three times in a course that applies towards degree requirements; furthermore, after the third attempt, a student may not substitute an equivalent course. See the Academic Policies page from the College of Engineering and Applied Science for more detail.
- The department allows courses counting as free electives to be taken pass/fail. Students must petition the department to take a course pass/fail. The College of Engineering and Applied Science has further restrictions on taking a course Pass/Fail. These restrictions are outlined in the college's Academic Policies page.
- The last 45 credit hours toward the degree must be earned on the Boulder campus after admission to the College of Engineering and Applied Science.
- Study abroad courses through a CU Boulder-approved study abroad program are considered resident courses.
- In addition, the courses used to fulfill the Senior Capstone requirement in Computer Science must be taken on the Boulder campus.
Minimum Academic Preparation Standards (MAPS)
Students must take care of any MAPS deficiencies. Please see the Undergraduate Admissions MAPS page for further information.
Applying for Graduation
The College of Engineering and Applied Science requires that you apply for graduation by going to Buff Portal the semester ahead of the semester you plan to graduate. Check with your undergraduate advisor to see if you have completed the degree requirements.
Consult the four-year guarantee requirements for information on eligibility. The concept of "adequate progress" as it is used here only refers to maintaining eligibility for the four-year guarantee; it is not a requirement for the major. To maintain adequate progress toward a BA in computer science, students should meet the following requirements:
- Declare the computer science BA major and have taken Calculus 1 and CSCI 1300 by the end of their second semester.
- Consult with a major advisor to determine adequate progress toward completion of the major and meeting other requirements of the degree.