Additional Major in Computer Science

The additional major in computer science allows students pursuing a primary major in another department to also earn a CS degree. Students must complete the following requirements.

Prerequisite Courses

  • 15-112: Fundamentals of Programming
  • 15-122: Principles of Imperative Computation (requires 21-127 as a co-req)
  • 15-150: Principles of Functional Programming
  • 21-120: Differential & Integral Calculus
  • 21-122: Integration, Differential Equations, and Approximation
  • 21-127: Concepts of Mathematics

Additional Major Requirements

  • Computer Science Core
    • 15-210: Parallel and Sequential Data Structures and Algorithms
    • 15-213: Introduction to Computer Systems
    • 15-251: Great Theoretical Ideas in Computer Science
    • 15-451: Algorithm Design and Analysis
  • One of the following Linear Algebra courses:
    • 21-241: Matrices and Linear Transformations
    • 21-242: Matrix Theory
  • One of the following Probability courses:
    • 15-359: Probability and Computing
    • 21-325: Probability
    • 36-217: Probability Theory and Random Processes
    • 36-225: Introduction to Probability and Statistics I
  • One Technical Communications course:
    • 76-270: Writing for the Professions
    • 15-300: Research and Innovation in CS
    • 08-200: Ethics and Policy Issues in Computing
  • 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
    • 21-301: Combinatorics
    • 21-484: Graph Theory
  • One Applications elective:
    • 02-450: Automation of Biological Research
    • 05-391: Designing Human-Centered Software
    • 05-431: Software Structures for User Interfaces
    • 10-401/10-601: Machine Learning
    • 11-411: Natural Language Processing
    • 15-313: Foundations of Software Engineering
    • 15-322/15-323: Computer Music
    • 15-381: Artificial Intelligence: Representation and Problem Solving
    • 15-415: Database Applications
    • 15-462: Computer Graphics
    • 16-384: Robot Kinematics and Dynamics
    • 16-385: Computer Vision
  • One Logics & Languages elective::
    • 15-312: Foundations of Programming Languages
    • 15-316: Sofware 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 (approved for Spring 2018 only)
    • 21-300: Basic Logic
    • 80-310: Formal Logic
    • 80-311: Computability and Incompleteness
  • 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
  • Two Computer Science electives (can be from any SCS department; usually 200-level or above)

In order to avoid excessive double-counting, students pursuing a double major or minor in computer science must complete at least six courses in their home department, of at least 9 units each, none of which are required by (or are cognates for requirements in) the computer science major.