Additional Major in Computer Science (entry year 2018)

ENTRY YEAR 2018

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
    • 21-325: Probability
    • 36-218: Probability Theory for Computer Science
    • 36-225: Introduction to Probability Theory AND 36-226: Introduction to Statistical Inference

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 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
    • One Artificial Intelligence elective:
      • 10-315: Introduction to Machine Learning (formerly 10-401)
      • 11-411: Natural Language Processing
      • 11-485: Introduction to Deep Learning
      • 15-281: Artificial Intelligence: Representation and Problem Solving (formerly 15-381)
      • 15-386: Neural Computation
      • 16-384: Robot Kinematics and Dynamics
      • 16-385: Computer Vision
      • Others as posted by the CS Undergraduate Program
    • One Domains elective:
      • 02-251: Great Ideas in Computational Biology
      • 05-391: Designing Human-Centered Software
      • 15-322: Introduction to Computer Music
      • 15-330: Introduction to Computer Security
      • 15-455: Undergraduate Complexity Theory
      • 15-462: Computer Graphics
      • 17-313: Foundations of Software Engineering
      • 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.)
        NOTE: In the CMU Undergraduate Catalog, this requirement was mistakenly left off. It is required for the additional major.

        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).