**ENTRY YEAR 2017**

*Updated February 2019*

Students pursuing a major in another department may also pursue an additional major in computer science. Students are expected to complete the CS minor before proceeding on to the CS additional major. Due to high demand for CS courses, students may find it harder to get into specific courses and should have alternate plans in place.

For the additional major in computer science, students must complete the following requirements:

**Prerequisites**

- 15-112: Fundamentals of Programming

(students with no prior experience may consider taking 15-110 Principles of Computing first)

**Mathematics Requirements**

- 21-120: Differential & Integral Calculus
- 21-122: Integration, Differential Equations, and Approximation
- 21-127: Concepts of Mathematics (or 21-128)
- One of the following Matrix/Linear Algebra courses:
- 21-241: Matrices and Linear Transformations
- 21-242: Matrix Theory
- One of the following Probability requirements:
- 15-259: Probability and Computing (formerly 15-359)
- 21-325: Probability
- 36-218: Probability Theory for Computer Science (or 36-217 prior to Fall 2018)
- 36-225: Introduction to Probability Theory

**Core CS Requirements***

- 15-122: Principles of Imperative Computation (requires 21-127/128 as a co-req)
- 15-150: Principles of Functional Programming (requires 21-127/128 as a pre-req)
- 15-210: Parallel and Sequential Data Structures and Algorithms
- 15-213: Introduction to Computer Systems
- 15-251: Great Ideas in Theoretical Computer Science
- 15-451: Algorithm Design and Analysis

**Additional CS/SCS Requirements***

- One Algorithms & Complexity elective:
- 15-354: Computational Discrete Mathematics
- 15-355: Modern Computer Algebra
- 15-453: Formal Languages, Automata, and Computability
- 15-455: Undergraduate Complexity Theory
- 15-456: Computational Geometry
- 15-458: Discrete Differential Geometry
- 21-301: Combinatorics
- 21-484: Graph Theory
- Others as posted by the CS Undergraduate Program

- One Applications elective:
- 02-251: Great Ideas in Computational Biology
- 05-391: Designing Human-Centered Software
- 05-431: Software Structures for User Interfaces
- 10-315: Introduction to Machine Learning (formerly 10-401)
- 11-411: Natural Language Processing
- 15-281: Artificial Intelligence: Representation and Problem Solving (or 15-381)
- 15-322/15-323: Computer Music
- 15-415: Database Applications
- 15-462: Computer Graphics
- 16-384: Robot Kinematics and Dynamics
- 16-385: Computer Vision
- 17-313: Foundations of Software Engineering (formerly 15-313)
- Others as posted by the CS Undergraduate Program

- One Logics & Languages elective::
- 15-312: Foundations of Programming Languages
- 15-314: Programming Language Semantics
- 15-316: Software Foundations of Security and Privacy
- 15-317: Constructive Logic
- 15-414: Bug Catching: automated Program Verification and Testing
- 15-424: Foundations of Cyber-Physical Systems
- 17-355: Program Analysis
- 80-413: Category Theory
- Others as posted by the CS Undergraduate Program

- One Software Systems elective:
- 15-410: Operating System Design and Implementation
- 15-411: Compiler Design
- 15-418: Parallel Computer Architecture and Programming
- 15-440: Distributed Computer Systems
- 15-441: Computer Networks
- 15-445: Database Systems
- Others as posted by the CS Undergraduate Program

- Two Computer Science electives* (can be from any SCS department; usually 200-level or above )

(See the Stellic audit application for disallowed courses.)

**Technical Communications**

- One of the following courses:
- 15-300: Research and Innovation in CS (based on seat availability)
- 17-200: Ethics and Policy Issues in Computing (formerly 08-200)
- 76-270: Writing for the Professions
- Others as posted by the CS Undergraduate Program

*In order to avoid excessive **double-counting**, students pursuing an additional major in computer science can double-count at most 5 courses total from the CS/SCS course requirements toward all other majors and minors being pursued. Mathematics and technical communications courses may double count without restriction. Students with majors that overlap CS substantially should consult with the our program coordinator (see below) to review their audit for any potential issues.

**For More Information**

Students with questions or concerns should contact Mary Widom in the CS Undergraduate Office in GHC 4115 (marwidom@andrew.cmu.edu).