Beginning with the class that matriculates at Duke in 2019, the requirements below define the BS degree. The classes of 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)
- COMPSCI 250 (Computer Organization and Programming)
- 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 and Distributed Systems)

- 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 has been offered as a 290 and 590 course with the same name, and will satisfy this requirement.

**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

*** The CompSci Department is revising the requirements for both concentrations. Check back here later for the revisions.***

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.

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

Out of the five electives required by the BS degree, at least 4 must be drawn from below. These 4 electives, together with the required COMPSCI systems course, must cover at least 4 separate bullets in the list below.

- COMPSCI 307 (Software Design and Implementation), 308 (Advanced Software Design and Implementation), or a COMPSCI 290 course as approved by DUS
- COMPSCI 310 (Introduction to Operating Systems) or 510 (Advanced Operating Systems)
- COMPSCI 316 (Introduction to Databases) or 516 (Database Systems)
- COMPSCI 351 (Computer Security) or 551 (Advanced Computer Security)
- COMPSCI 356 (Computer Network Architecture) or 514 (Computer Networks and Distributed Systems)
- COMPSCI 512 (Distributed Systems)
- COMPSCI 553 (Compiler Construction), cross-listed as ECE 553

### Concentration in Data Science

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

- STA 230 or MATH 340 (Probability)

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

- MATH 218 or MATH 221 (Linear algebra)
- STA 250 or MATH 342 (Statistics)

Out of the five electives required by the BS degree, three 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), 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)

Additional courses from the above list as well as courses from the list below are pre-approved and recommended to satisfy the two remaining electives required by the BS degree:

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

Other courses will require approval of the Director of Undergraduate Studies.

Note that this concentration in data science is intended for COMPSCI majors interested in pursuing a career in data science, with a distinctively computational focus. If you are interested in data science but not necessarily becoming a COMPSCI major, another option available is the **IDM (interdepartmental major) in Stat+CS on Data Science,** which is less concerned with the lower-level computational aspects but covers more topics on statistical data analysis.