CSD Home | SCS Home

 

 

Computer Science as a Secondary Concentration
Revised July, 2011

The School of Computer Science offers both a Double Major and a Minor in Computer Science as of Fall, 2010.

Double Major

NOTE: The double major/minor requirements have changed significantly as of Fall, 2010. Non-majors admitted in Fall, 2010 can follow the new double major/minor requirements (below) or the Fall, 2009 double major/minor requirements as determined by course availability. Students admitted in Fall, 2008 should follow the Fall, 2008 double major/minor requirements. Students admitted prior to Fall, 2008 but on or after Fall, 2006 should follow the Fall, 2006 double major/minor requirements. Students admitted prior to Fall, 2006 should follow the prior double major/minor requirements.

The following courses are required for a Double Major in Computer Science as of Fall, 2010:

Prerequisites:

  • 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

Double 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
    • 21-341: Linear Algebra

  • 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 Communications course:
    • 15-221: Technical Communication for Computer Scientists

  • one Algorithms & Complexity elective:
    • 15-354: Computational Discrete Mathematics
    • 15-355: Modern Computer Algebra
    • 15-453: Formal Languages, Automata, and Computability
    • 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-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-385: Computer Vision
    • 15-415: Database Applications
    • 15-462: Computer Graphics
    • 15/16-384: Robot Kinematics and Dynamics

  • one Logics & Languages elective::
    • 15-312: Foundations of Programming Languages
    • 15-317: Constructive Logic
    • 15-414: Bug Catching: automated Program Verification and Testing
    • 21-300: Basic 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)

Double-Counting Restrictions
In order to avoid excessive double-counting, students pursuing a Double Major or Minor in Computer Science must complete at least 6 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.


Minor

NOTE: The double major/minor requirements have changed significantly as of Fall, 2010. Non-majors admitted in Fall, 2010 can follow the new double major/minor requirements (below) or the Fall, 2009 double major/minor requirements as determined by course availability. Students admitted in Fall, 2008 should follow the Fall, 2008 double major/minor requirements. Students admitted prior to Fall, 2008 but on or after Fall, 2006 should follow the Fall, 2006 double major/minor requirements. Students admitted prior to Fall, 2006 should follow the prior double major/minor requirements.

The following courses are required for the Minor in Computer Science as of Fall, 2010:

Prerequisites:

  • 15-112: Fundamentals of Programming
  • 21-127: Concepts of Mathematics

Minor requirements:

  • 15-122: Principles of Imperative Computation (requires 21-127 as a co-req)
  • 15-150: Principles of Functional Programming
  • 15-210: Parallel and Sequential Data Structures and Algorithms
  • one of the following courses:
    • 15-213: Introduction to Computer Systems
    • 15-251: Great Theoretical Ideas in Computer Science
  • two Computer Science electives (15-213 or higher; 15-221 and 15-539 do not count; one can be from any SCS department, with prior approval)
  • N.B. Since ECE students must take 15-213/18-213 as part of the ECE curriculum as of Fall, 2008, they are required to take three Computer Science electives (15-251 or higher; two can be from any SCS department, with prior approval). This three-elective stricture applies to any student minoring in CS who is required to take 15-213/18-213 or 15-251 for their home major requirements (of course, students who are required to take 15-251 for their home department can take 213 as an elective).

Double-Counting Restrictions
In order to avoid excessive double-counting, students pursuing a Double Major or Minor in Computer Science must complete at least 6 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.


Maintained by Catharine Fichtner, CS Undergraduate Program Administrator.

 

      CSD Home   Webteam  ^ Top   SCS Home