Requirements for a degree in computer science changed as of the Class of 2025. What is outlined below is the requirements for the Class of 2024 and before. Current requirements are here.
Departmental Courses
Any computer science course at the 300 or 400 level (except independent work) counts as a computer science departmental if taken for a grade. In addition, some graduate (500-level) count as undergraduate departmentals (COS 551, COS 534), depending on their content and structure. (Please ask if you need to use a graduate course as a departmental.) However, graduate courses rarely count as special "tracked" departmentals (see the list below for the few exceptions).
In addition, any 300- or 400- level Math or ECE or Physics* or ORF course, Philosophy 312, MOL 437/NEU 437, NEU 330, MUS 315, ECO 326, and SOC 414 count as departmentals. (Beginning with the Class of 2023 CHM 301, ECO 312, and Physics courses will no longer count as COS departmentals.) Note that it is very, very, very rare for courses outside the computer science department that are not cross-listed with the computer science department to count as track-specific. Hence, in general, you will not be able to count more than 2 courses outside of the computer science department as COS departmentals.
Course Tracks
Theoretical computer science
Courses in this track explore the theoretical underpinnings of computing systems. They all use mathematical proofs for rigorous development of the area of study.
Theory courses:*
- 240 Reasoning about Computation (COS 340 renumbered to 240 as of 11/4/21)
- 423 Theory of Algorithms
- 433**Cryptography
- 445 Networks, Economics and Computing
- 451 Computational Geometry
- 487 Theory of Computation
- 488 Introduction to Analytic Combinatorics
- 510* (441) Programming Languages
- 511Theoretical Machine Learning
- 516* Reasoning About Software
- 521 Advanced Algorithm Design
- 522 Computational Complexity
- 533** Advanced Cryptography
- 585 Information Theory and Applications
*If you take COS 510 (or 441) and COS 516 only one will count as a theory requirement.
**If you take COS 433 and COS 533 only one will count as a theory requirement.
Systems
Courses in this track study the design and implementation of the foundational hardware and software that constitute a modern computing environment.
Systems courses:*
- 306 (ELE 206) Introduction to Logic Design
- 316 Principles of Computer System Design (Fall 2019 Course)
- 318 Operating Systems
- 320 Compiling Techniques
- 333 Advanced Programming Techniques
- 375 (ELE 375) Computer Architecture and Organization
- 418 Distributed Systems**
- 425 Database and Information Management Systems
- 461 Computer Networks*
- 463 Wireless Networks (Spring 2018 Course)
- 475 (ELE 475) Computer Architecture
- 518 Advanced Computer Systems**
- 561 Advanced Computer Networks*
*If you take COS 461 and COS 561 only one will count as a systems requirement.
**If you take COS 418 and COS 518 only one will count as a systems requirement.
Applications
Courses in this track treat a broad range of topics.
Applications courses:
- 311 (QCB 311) Genomics (Spring 2023)
- 314 (MUS 314) Computer and Electronic Music through Programming, Performance, and Composition (with programming precept)
- 323 (ORF 363) Computing and Optimization
- 324 Introduction to Machine Learning
- 326 Functional Programming
- 343 Algorithms for Computational Biology (Spring 2018 Course)
- 360 (PSY 360) Computational Models of Cognition (Fall 2019 Course)
- 396 (ECE 396) Introduction to Quantum Computing (Spring 2021)
- 401 (TRA 301) Introduction To Machine Translation
- 424 Fundamentals of Machine Learning
- 426* Computer Graphics
- 429 Computer Vision
- 432 Information Security
- 435 (ECE 433) Introduction to Reinforcement Learning (Spring 2024)
- 436 Human-Computer Interface Technology
- 454 (PSY 454) Probabilistic Models of Cognition
- 455 (MOL 455) Introduction to Genomics and Computational Molecular Biology
- 470 (ECE 470) Principles of Blockchain
- 471 Web3: Blockchains, Cryptocurrencies, and Decentralization (Spring 2023)
- 473 (ECE 473) Elements of Decentralized Finance (Spring 2023)
- 484 Natural Language Processing (Fall 2019 Course)
- 485 Neural Networks (Spring 2018 Course)
- 495 Special Topics in CS: Web3: Blockchains, Cryptocurrencies, and Decentralization (Spring 2022)
- 526* Advanced Computer Graphics
*If a student takes both COS 426 and 526, only one will count as an applications requirement
Some regular courses are COS departmentals but do not count in any specific track, such as COS 351 "Information technology and public policy". COS 495, Special Topics, is a departmental but may be associated with different tracks (or no track) depending on content. Other one-time courses may also be departmentals and may count in one of the tracks depending on level and content. Check with your adviser or the undergraduate coordinator for up-to-date information.