Beginning with the class that matriculated at Duke in 2019, the requirements below define the BS degree. The classes that matriculated in 2016, 2017, and 2018 can use either these new requirements or the **previous requirements.**

- Note: Students graduating in Spring 2019 or later can (optionally) pursue two specific concentrations within the BS degree:
*Software Systems*and*Data Science*(see below for further information).

### Prerequisites

- One of the following introductory COMPSCI courses or equivalent:
- COMPSCI 101L (Introduction to Computer Science)
- COMPSCI 102 (Interdisciplinary Introduction to Computer Science)
- COMPSCI 116 (Foundations of Data Science)

- MATH 111L (Introductory Calculus I) or equivalent
- MATH 112L (Introductory Calculus II) or equivalent

### Requirements

- COMPSCI 201 (Data Structures and Algorithms)
- COMPSCI 230 (Discrete Math for Computer Science)
**see substitutions** - COMPSCI 250 (Computer Architecture)
- COMPSCI 330 (Introduction to the Design & Analysis of Algorithms)
- One of the following COMPSCI courses on systems:
- COMPSCI 310 (Introduction to Operating Systems) or 510 (Advanced Operating Systems)
- COMPSCI 316 (Introduction to Databases) or 516 (Database Systems)
- COMPSCI 350 (Digital Systems, cross-listed as ECE 350) or 550 (Advanced Computer Architecture, cross-listed as ECE 552)
- COMPSCI 351 (Computer Security) or 551 (Advanced Computer Security)*
- COMPSCI 356 (Computer Network Architecture) or 514 (Computer Networks)

- Two courses in MATH/STA:
- One STA course at or above STA 111**, including the cross-listed MATH 230
- One of MATH 202, 216, 218, or 221***

- Five electives at 200-level or higher (beyond those counted towards the requirements above):
- Three COMPSCI courses that are not independent study courses
- Two in COMPSCI (independent study possible), MATH, STA, or a related area approved by the Director of Undergraduate Studies

* Both courses have been offered as a 290 and 590 course with the same name, and will satisfy this requirement.

** STA 111 will not be offered after Summer 2020. We recommend you take STA 199 or higher.

***MATH 212 does not count towards this requirement, but can count towards an elective.

### Course Substitutions

**Possible course substitutions** pre-approved by the Director of Undergraduate Studies.

# Concentrations in BS

These concentrations are pathways through our curriculum designed to guide students with interests and career goals in these areas. They conform to the BS requirements above and do not require any additional courses, but they may require more specific choices of courses and sometimes additional prerequisites. They are not required for the BS major.

To declare one of these concentrations for your BS, please refer to the page on **declaring or changing your major on T-Reqs.** By successfully completing a pathway below, you will receive the corresponding concentration designation on your official transcript.

### Concentration in Software Systems

For this concentration, you must take 5 courses from the list below, with at most one course from each bullet. For example, if you took 316 for the Systems requirement, you would take four additional courses to complete the concentration, e.g. 307, 356, 408, 510.

- COMPSCI 307 (Software Design and Implementation) or 308 (Advanced Software Design and Implementation) or 290 (Mobile/Web Dev)
- COMPSCI 310 (Introduction to Operating Systems) or 510 (Advanced Operating Systems)
- COMPSCI 316 (Introduction to Databases) or 516 (Database Systems)
- CompSci 350 (Digital Systems) or CompSci 550 (Advanced Computer Architecture)
- COMPSCI 351 (Computer Security) or 551 (Advanced Computer Security) or CS 290/590 Security equivalent or ECE 590 Computer and Info Security
- COMPSCI 356 (Computer Network Architecture) or 514 (Computer Networks)
- COMPSCI 408 (Delivering Software)
- COMPSCI 512 (Distributed Systems)
- COMPSCI 553 (Compiler Construction), cross-listed as ECE 553

Independent Study cannot be used as a course for this concentration.

### Concentration in Data Science

This concentration in data science is intended for COMPSCI majors interested in studying data science in depth, with a distinctively computational focus. If you are interested in data science but not necessarily in becoming a COMPSCI major, there are other options that are less concerned with the lower-level computational aspects:

- The IDM (interdepartmental major) in
**Stat+CS on Data Science**covers more topics on statistical data analysis, while - The IDM in
**Math+CS on Data Science**focuses more on the mathematical foundations of data science.

The following prerequisite is needed in addition to those for the BS degree:

- Probability: STA 230, STA 231, STA 240

The two MATH/STA courses required by the BS degree must be drawn from below (one from each bullet):

- Linear Algebra: MATH 218 or MATH 221
- Statistics: STA 250*, STA 360, STA 432, or MATH 342

Three courses must be drawn from below, one from each bullet:

- COMPSCI 216 (Everything Data)
- COMPSCI 371 (Elements of Machine Learning), 370* (Intro. Artificial Intelligence), 570 (Artificial Intelligence), 571 (Probabilistic Machine Learning) or 671* (Machine Learning)
- *Note: 370 was renumbered from 270 in Fall 2019, and 671 from 571 in Spring 2019.

- COMPSCI 316 (Intro. to Databases) or 516 (Database Systems)

Two additional courses must be drawn from either the above list or the list below. Note that three out of the five electives for the BS major must be CompSci courses.

- STA 325 (Machine Learning and Data Mining)
- STA 360 (Bayesian Inference)
- COMPSCI 527 (Computer Vision)
- COMPSCI 290 (Topics on Data Science Competition)
- COMPSCI 290 (Algorithms in the Real World)
- COMPSCI 590 (Topics) on following subjects (some may not be offered regularly):
- Reinforcement Learning
- Algorithmic Foundations of Data Science

Exceptions:

- You cannot count both 370 and 570 towards the five courses.
- You cannot count both 316 and 516 towards the five courses.
- In rare circumstances a CompSci Independent Study can be used in place of one of the courses listed here. The student completing the IS and the CS professor supervising the IS must write 250-500 words explaining which course is being replaced and how the IS is substituting for the course. Both must sign the explanation. The DUS will then make a determination as to whether the IS will count.