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