Spring 2026 Course Bulletin

UPCOMING DATES AND QUICK LINKS for Undergraduate Students

Shopping carts open for Spring 2026 on Monday October 20, 2025 and the first registration window for Spring 2026 opens Wednesday, October 29, 2025.

DEADLINE to submit application for Spring 2026 Independent Study course - Friday, January 16, 2026

DEADLINE to apply for Graduation with Distinction for Spring 2026 - Wednesday, April 8, 2026


REGISTRATION CLEARANCE  -  Get info on clearance for registration HERE.

AN IN-PERSON OR VIRTUAL MEETING WITH THE DUS  -  Meeting times listed HERE to meet with the DUS.

COMPSCI ADVISOR  -  If you haven't submitted a preference for a CompSci advisor, or would like to change your CompSci advisor, please complete THIS FORM.

PERMISSION NUMBERS  -  To request a permission number for a Spring 2026 course, please fill out THIS FORM.


New! MS-CS FIVE-YEAR (4+1) UNDERGRAD PROGRAM:

The new CS 4+1 MS program offers an opportunity for Duke undergraduates to earn an MS degree in CS (MSCS) with an extra (fifth) year at Duke. The MSCS degree is in addition to your undergraduate degree. This 4+1 program may be a good path for you if you are able to take two or more “extra” graduate courses as an undergraduate, beyond any courses you need for your undergraduate degree. The 4+1 MSCS program is suitable primarily for CS majors and CS minors. Application deadline - October 1st.  Learn more.


Notes about CS Courses

New course!! For first-years only. COMPSCI 172CNS - Moral Artificial Intelligence and Algorithmic Justice | Instructor: Fain / This Constellation course is about ethical inquiry concerning fairness, justice, and power in modern applications of algorithmic systems and artificial intelligence.
 
New course!! For first-years only. COMPSCI 173CNL - Cinema Perspectives on Artificial Intelligence | Instructor: Nemecek / In this Constellation course, we will use cinema as a lens on society's view of artificial intelligence. We will discuss how this view has changed over time, and how it compares to the real-world status of AI. It will also include a unit on the usage of AI in creating cinema, and its accelerating impact on moviemaking. Throughout the course, we will be learning some of the real-life history of AIs and how a selection of modern systems work.
 
New course!! That can REPLACE MATH 218 requirement COMPSCI 270L - Mathematics for Artificial Intelligence | Instructor: Tomasi / Linear algebra; vector spaces; linear maps; orthogonality; singular-value decomposition; linear systems; eigenspaces; determinant; Schur decomposition. Calculus: gradient, Hessian, Jacobian matrix; back-propagation; Optimization: unconstrained minimization; Lagrange multipliers; gradient descent; Newton's method. Applications: principal component analysis; linear regression; rigid transformations; logistic regression classifier. Prerequisite: COMPSCI 101 or 201, and MATH 111L or 112L.
 
You could take COMPSCI 270L instead of MATH 218 for the CompSci BS major. This course plus a probability course like STAT 230 would prepare you to take an upperlevel ML course such as COMPSCI 371.
 
NOTE: You cannot take COMPSCI 270L if you have already taken, MATH 216, 218, or 221. However, it is ok to take this course if you took MATH 202.
 
COMPSCI 216 - Everything Data | Instructor: Stephens-Martinez / Usually offered every semester. This course will be offered Spring 2026 and Spring 2027, but it may not be offered in Fall 2026.
 
COMPSCI 316D - Intro to Database Systems | Instructors: J. Yang / Usually a Fall only course, we are offering it twice this year, Fall 2025 and Spring 2026. We also plan to offer it in Fall 2026, but not sure about Spring 2027.
 
NEW TITLE, SAME COURSE - COMPSCI 334 - Formal Languages and Automata with Applications | Instructor: Rodger / When you compile a program and you have an error on say line 36, how does the compiler know that? This course explores the elegant theory of how parsers work and then puts that theory to practice.  We explore formal languages, grammars and automata, and show how they can be applied to parsing.  We will explore several parsing techniques such as SLR and write an interpreter for a simple language.
 
RE-SCHEDULED -- COMPSCI 356 - Computer Network Architecture (cross ECE 356) | Instructor: Brockelsby / This course WILL now be offered Spring 2026.
 
New Special Topics Course that will count for systems requirement!! COMPSCI 390-03 - Distributed Systems | Instructor: Chase / This new course will count for the systems requirement for the CompSci BS and AB degree.
 
More special topics courses are listed below.
 

S/U Course Credit

MATH 111, MATH 112 and COMPSCI 101 -- Only these three courses are accepted as S/U (if they can be taken S/U) and count towards degree requirements for CompSci majors and minors. For other majors and minors you plan to have, you need to check if they will also allow these courses to count if taken S/U.

For IDM majors, only these three courses -- MATH 111, MATH 112 and COMPSCI 101 -- are accepted as S/U (if they can be taken S/U) and count towards the CompSci part of your IDM. Check with your other major in your IDM to find out whether they will also allow these courses to count if taken S/U.

It is possible these courses may not be offered with the option to take them S/U.


Reminder: Changes to Major/Minor Requirements

1) You are now able to use COMPSCI 210D in lieu of the COMPSCI 250D requirement. If you have already taken COMPSCI 250D, you will not be able to take 210D. If you are an ECE major, you must take COMPSCI 250D.

2) You can now use COMPSCI 231D or COMPSCI 232 in lieu of the COMPSCI 230 requirement. If you are using any of the other substitutions in lieu of COMPSCI 230 or COMPSCI 231D or COMPSCI 232 as the prerequisite for a course--for example, Math 371 and STA 230--you will need to request a permission number through the CS PIN request form. Dukehub does not recognize substitutions for prerequisites.

3) For the CompSci majors and minor, only one CompSci course can be included which falls into the category of Social and Policy Oriented Computing courses. Examples of Social and Policy Oriented Computing courses include COMPSCI 240, COMPSCI 247S, COMPSCI 255, COMPSCI 265S, COMPSCI 342 and COMPSCI 290/290D-001 - Cinema Perspectives on Artificial Intelligence.

4) For the CompSci BS and BA majors as well as the Software Systems and AI/Machine Learning concentrations, COMPSCI 345 - Graphics Software Architecture AND COMPSCI 512 - Distributed Systems now count as systems core classes.


PERMISSION NUMBER REQUESTS FOR SPRING 2026

Please use the following form (Duke login required) to request a Permission Number for a Spring 2026 COMPSCI course. This permission number is generally only for bypassing pre-requisites, and will place you on the waitlist if a course is full.


LIST OF COMPSCI COURSES FOR SPRING 2026

COMPSCI 101, 201, 210, 230, 250, and 330 are offered every semester.

  • 94 - Programming and Problem Solving | Rodger
  • 101L - Introduction to Computer Science | Velasco
  • 172CNS - Moral Artificial Intelligence and Algorithmic Justice | Fain
  • 173CNL - Cinema Perspectives on Artificial Intelligence (cross CINE 173CNL) | K. Nemecek
  • 201 - Data Structures and Algorithms | Astrachan (001), Steiger (002)
  • 210D - Introduction to Computer Systems | Lentz
  • 216 - Everything Data | Stephens-Martinez
  • 230 - Discrete Math for Computer Science | K. Nemecek
  • 232 - Discrete Mathematics and Proofs (cross MATH 242) | Akin
  • 240 - Race, Gender, Class, & Computing (cross GSF 242) | Washington
  • 250D - Computer Architecture (cross ECE 250D) | Wills
  • 260 - Introduction to Computational Genomics | Hartemink
  • 270L - Mathematics for Artificial Intelligence | Tomasi
  • 288 - Logic and Its Application (cross PHIL 350) | Richardson
  • 308 - Advanced Software Design and Implementation | Duvall
  • 316D - Introduction to Database Systems |  J. Yang
  • 320D - Numerical Data Analysis and Methods | Sun
  • 330 - Introduction to the Design and Analysis of Algorithms | Agarwal, Steiger
  • 334 - Formal Languages and Automata with Applications | Rodger
  • 342 - Technical and Social Analysis of Information and the Internet | Astrachan
  • 345 - Graphics Software Architecture | Reed
  • 350L - Digital Systems (cross ECE 350L) | Board
  • 356 - Computer Network Architecture (cross ECE 356) | Brockelsby
  • 370D - Introduction to Artificial Intelligence | Songdechakraiwut
  • 372 - Introduction to Applied Machine Learning | Fain
  • 376 - Computational Approaches to Human Language (cross LINGUIST 399) | Osborne
  • 391 - Independent Study | Departmental Staff
  • 394 - Research Independent Study | Departmental Staff
  • 474 - Data Science Competition | Rudin
  • 516 - Database Systems | Roy
  • 520D - Numerical Analysis (cross MATH 565D, STA 612D)  | Sun
  • 527 - Introduction to Computer Vision  | Tomasi
  • 531D - Introduction to Algorithms | Rossman
  • 553 - Compiler Construction (cross ECE 553) | Hilton
  • 561 - Computational Sequence Biology (cross CBB 561) | CANCELLED
  • 564 - Edge Computing (cross ECE 654) | Gorlatova
  • 571D - Probabilistic Machine Learning (cross STA 561D) | Laber
  • 572 - Introduction to Natural Language Processing | Dhingra
  • 582 - Cryptography (cross ECE 656) | Reiter
  • 586 - Human-Centered Security and Privacy (cross ECE 657, ISS 586, PUBPOL 586) | Emami-Naeini
  • 650 - Advanced Computer Architecture II (cross ECE 652) | Sorin
  • 655L - Full-Stack IoT Systems (cross ECE 655L) | T. Chen
  • 675D - Introduction to Deep Learning (cross ECE 685D) | Tarokh
  • 791  - Internship | Ge

Special Topics Courses*

  • 290-01 - Advanced Data Structures and Applications | CANCELLED
  • 390-02 - Programming Languages | D. Zhang
  • 390-03 - Distributed Systems | Chase
  • 590-01 - Seminar in Computational Biology: Protein Structure & Drug Design using CS, AI, & ML | Donald
  • 590-02 - Programming Languages | D. Zhang
  • 590-03 - Software Development Studio | Duvall
  • 590-04 - Deep Learning | Ge
  • 590-06 - Systems for Machine Learning | D. Zhuo
  • 590-07 - Algorithms for Sequential Decision Making - MDPs, Reinforcement Learning, Decision and Game Theory | Parr
  • 590-08 - Advanced Topics in Computational Complexity | Liu
  • 590D-001 - Molecular Assembly and Computation | Reif

*Special Topics Course descriptions below


More About Special Topics Courses

Special Topics courses are new courses that we are trying out and eventually may give a permanent number.

CANCELLED -- COMPSCI 290-01 - Advanced Data Structures and Applications | Instructor: Fouh / Analysis, design, use, and implementation of advanced data structures, including hashing and advanced /general tree structures, graphs, and probabilistic data structures. File system organization and access methods. Course projects require advanced problem-solving, design, and implementation skills. At the end of this course, students will be able to: choose the data structures that effectively model the information in a problem; judge efficiency tradeoffs among alternative data structure implementations or combinations; apply algorithm analysis techniques to evaluate the performance of an algorithm and to compare data structures;  implement and know when to apply standard algorithms for searching and sorting; design, implement, test, and debug programs using a variety of data structures; and select appropriate methods for organizing data files and implement file-based data structures. Prerequisite: COMPSCI 201 or equivalent.

COMPSCI 390-02 - Programming Languages | Instructor: D. Zhang / Whether designing systems, writing high-quality code or learning a new programming language, the ability to reason about language behavior and structure is a critical skill. This course equips students with the knowledge to not only use programming languages proficiently but also to understand why they work the way they do and how good language designs help programmers to build reliable code—an asset for anyone pursuing careers in software engineering, language design, or graduate study in computer science. This course provides a rigorous introduction to the fundamental concepts and design principles underlying modern programming languages and programming paradigms, including imperative, functional and object-oriented. Through analytical comparison, the course examines core topics such as language syntax and semantics, type systems, control structures, memory management, as well as cutting-edge language features, such as formal verification and static program analysis. Emphasis will be placed on both theoretical foundations and practical insights. By the end of the course, students will be able to critically evaluate language design choices, understand the trade-offs involved in language implementation, and apply this knowledge to write clearer, more reliable programs. Prerequisites: COMPSCI 201 and COMPSCI 230 (or COMPSCI 231D or COMPSCI 232).

COMPSCI 390-03 - Distributed Systems | Instructor: Chase / This course introduces core concepts in distributed systems with supporting elements from networking, operating systems, and cryptosystems.   Examples are drawn from real-world platforms for cloud computing, Internet/Web, and the software supply chain.  Networked services: transport streams, request/response messaging, cloud instances, elastic scaling.   Secure naming and identity: domain names, identity services, authentication, and certified trust.   Reliable data at scale: sharding and replication, snapshots, updates and version histories, consistency, coordination, recovery, and consensus.  As time allows we draw out connections to cyber-policy topics such as cryptocurrency and cyberwar.  Prerequisite: COMPSCI 210 or COMPSCI 250.

COMPSCI 590-01 - Seminar in Computational Biology: Protein Structure & Drug Design using CS, AI, & ML | Instructor: Donald / The Nobel Prize was given last year for AI-enabled protein structure prediction and design. This year's seminar will focus on AI, Machine Learning, and algorithmic approaches to computational and experimental studies of protein structure and design. However, background material and fundamental basic science, algorithms, and computational methods will be covered in order to get to the foothills of this field. Some of the most challenging and influential opportunities for Physical Geometric Algorithms (PGA) arise in developing and applying information technology to understand the molecular machinery of the cell. Recent work shows that PGA techniques may be fruitfully applied to the challenges of structural molecular biology and rational drug design. Concomitantly, a wealth of interesting computational problems arise in proposed methods for discovering new pharmaceuticals. Recently, the intriguing success of Alpha Fold 3 from DeepMind of Google/Alphabet has energized the field to pursue machine learning techniques for protein structure prediction and molecular design. Among other topics, we will read some papers on these techniques from the intersection of machine learning and computational structural biology. This seminar course focuses on topics in computational biology. We will emphasize themes that unite algorithms, modelling, machine learning, or experimental results. Prerequisites: for undergraduate students, COMPSCI 230 (or COMPSCI 231D or COMPSCI 232).

COMPSCI 590-02 - Programming Languages | Instructor: D. Zhang / Whether designing systems, writing high-quality code or learning a new programming language, the ability to reason about language behavior and structure is a critical skill. This course equips students with the knowledge to not only use programming languages proficiently but also to understand why they work the way they do and how good language designs help programmers to build reliable code—an asset for anyone pursuing careers in software engineering, language design, or graduate study in computer science. This course provides a rigorous introduction to the fundamental concepts and design principles underlying modern programming languages and programming paradigms, including imperative, functional and object-oriented. Through analytical comparison, the course examines core topics such as language syntax and semantics, type systems, control structures, memory management, as well as cutting-edge language features, such as formal verification and static program analysis. Emphasis will be placed on both theoretical foundations and practical insights. By the end of the course, students will be able to critically evaluate language design choices, understand the trade-offs involved in language implementation, and apply this knowledge to write clearer, more reliable programs. Students are required to complete external reading materials and related questions. Prerequisite: Data Structure, Discrete Math. Prerequisites: for undergraduate students, COMPSCI 201 and COMPSCI 230 (or COMPSCI 231D or COMPSCI 232).

COMPSCI 590-03 - Software Development Studio | Instructor: Duvall / Practice programming features and methodologies, compare trade-offs, justify program design choices. Software development tasks such as designing software, evaluating software libraries, deploying projects, monitoring deployment, and utilitizing LLMs. Discuss the realities of being a software developer, how to stay mentally healthy and balanced, how to thrive in a software team, the impact of software on society, and ethical issues inherent in developing software. Recommended prerequisite for graduate students, experience programming. Prerequisites: for undergraduate students, COMPSCI 210 or COMPSCI 250.

COMPSCI 590-04 - Deep Learning | Instructor: Ge / This course will cover basic mathematical ideas for understanding the training and application of deep learning. Topics include random initializations, (stochastic) gradient descent, momentum and adaptivity, batch normalization, neural tangent kernel, implicit regularization, adversarial examples, calibration, transformers, graph neural networks, GANs. Students will get a basic mathematical understanding for key ideas in deep learning and see their effects through labs. Prerequisites: probability, linear algebra, multivariate calculus, algorithms; for undergraduate students, STAT 230 (or STAT 231 or STAT 240) and MATH 221 (or MATH 218) and MATH 202 (or MATH 212 or MATH 219) and COMPSCI 330.

COMPSCI 590-06 - Systems for Machine Learning | Instructor: D. Zhuo / This is a graduate-level seminar course on system support for machine learning. We will cover a set of widely adopted techniques to enhance system performance and efficiency for training and inference of machine learning models. The course contains a set of programming assignments and a final project. Prerequisite: for undergraduate students, COMPSCI 310 or COMPSCI 510 or COMPSCI 512.

COMPSCI 590-07 - Algorithms for Sequential Decision Making - MDPs, Reinforcement Learning, Decision and Game Theory | Instructor: Parr / This class will cover the foundations of sequential decision making under uncertainty: game theory, Markov decision processes, reinforcement learning, and, if time permits, game theory. Prerequisites: linear algebra, calculus, and machine learning; for undergraduate students, COMPSCI 671D.

COMPSCI 590-08 - Advanced Topics in Computational Complexity | Instructor: Liu / This course introduces a range of advanced topics in computational complexity. We will study the power of randomness in computation, constructions of pseudorandom objects, and interactive proof systems, including probabilistically checkable proofs. Additional topics include hardness of approximation and coding theory. Prerequisites: computational complexity, probability, and analysis.

COMPSCI 590D-001 - Molecular Assembly and Computation | Instructor: Reif / The course will cover the topics of Molecular Assembly, Molecular Computation, and Molecular Robotics. Special emphasis will be on DNA-based approaches, and the course will cover DNA nanostructures, DNA assemblies, DNA-based robotic devices,  Hybridization Reactions for DNA Computation and Detection, and Abstract Models of Tiling Assembly. Prerequisites: mathematical maturity.  Recommended prerequisite: algorithms.


New! RE-NUMBERED COURSES

These new courses, which have all been taught previously as Special Topics courses (i.e., COMPSCI 290 and/or 590), now have permanent course numbers. If you have already taken them as a Special Topics course, you may not take the re-numbered course.

COMPSCI 290 (old - previously taught Fall 2024 and Spring 2025) → COMPSCI 372 Introduction to Applied Machine Learning

COMPSCI 390 (old - previously taught Spring 2023 and Spring 2024) → COMPSCI 376 Computational Approaches to Language Processing (cross LINGUIST 399)

COMPSCI 390 (old - previously taught Fall 2022) → COMPSCI 335 Computational Complexity

COMPSCI 590 (old) → COMPSCI 526 Introduction to Data Science

COMPSCI 590 (old) → COMPSCI 535 Algorithmic Game Theory

COMPSCI 590 (old) → COMPSCI 565 Modern Optimization for Statistical Learning

COMPSCI 590 (old) → COMPSCI 574 Elements of Deep Learning

COMPSCI 590 (old - previously taught Fall 2022) → COMPSCI 584 Foundations of Blockchains

COMPSCI 590 (old) → COMPSCI 585 Secure Software Systems

COMPSCI 590 (old) → COMPSCI 586 Human-Centered Security and Privacy

COMPSCI 590 (old - previously taught Fall 2024) → COMPSCI 587 Language-Based Security


Questions? Email dus@cs.duke.edu.


PREVIOUS COURSE BULLETINS: