skip to content

Bulletin Archive

This archived information is dated to the 2010-11 academic year only and may no longer be current.

For currently applicable policies and information, see the current Stanford Bulletin.

Master of Science in Computer Science

In general, the M.S. degree in Computer Science is intended as a terminal professional degree and does not lead to the Ph.D. degree. Most students planning to obtain the Ph.D. degree should apply directly for admission to the Ph.D. program. Some students, however, may wish to complete the master's program before deciding whether to pursue the Ph.D. To give such students a greater opportunity to become familiar with research, the department has instituted a program leading to a master's degree with distinction in research. This program is described in more detail below.

Admission—Applications for admission to the M.S. program, and all of the required supporting documents, must be received by December 7, 2010. Exceptions are made for applicants who are already students at Stanford and are applying to the coterminal program. Information on these deadlines is available at http://cs.stanford.edu/wiki/admissions/Applying/Deadlines.

University requirements for the coterminal M.A. are described in the "Coterminal Bachelor's and Master's Degrees" section of this bulletin. For University coterminal degree program rules and University application forms, see http://studentaffairs.stanford.edu/registrar/publications#Coterm.

REQUIREMENTS

A candidate is required to complete a program of 45 units. At least 36 of these must be graded units, passed with a grade point average (GPA) of 3.0 (B) or better. The 45 units may include no more than 10 units of courses from those listed below in Requirement 1. Thus, students needing to take more than two of the courses listed in Requirement 1 actually complete more than 45 units of course work in the program. Only well-prepared students may expect to finish the program in one year; most students complete the program in six quarters. Students hoping to complete the program with 45 units should already have a substantial background in computer science, including course work or experience equivalent to all of Requirement 1 and some prior course work related to their specialization area.

Requirement 1: Foundations—

Students must complete the following courses, or waive out of them by providing evidence to their advisers that similar or more advanced courses have been taken, either at Stanford or another institution:

1. Logic, Automata, and Computability: CS 103

2. Probability: CS 109 or STATS 116 or MS&E 220 or CME 106

3. Algorithms: CS 161

4. Computer Organization and Systems: CS 107

5. Principles of Computer Systems: CS 110

Requirement 2: Significant Software Implementation—

Students must complete at least one course designated as having a significant software implementation component. The list of such courses includes: CS 140, 143, 144, 145, 148, 210B, 221, 243, 248, 346.

Requirement 3: Specialization—

Students may choose to satisfy this requirement through one of two options, Single Depth or Dual Depth, outlined following. All courses taken for this requirement must be taken for letter grades.

Specialization Areas—

Nine approved specialization areas which may be used to satisfy Requirement 3 are listed following. Students may propose to the M.S. program committee other coherent programs that meet their goals and satisfy the basic requirements.

Courses marked with an asterisk (*) require consent of the the faculty adviser. Courses marked with a double asterisk (**) may be waived by students with equivalent course work and with the approval of their adviser.

  1. Artificial Intelligence—
    1. CS 221**
    2. At least four of: CS 223A, 223B, 224M, 224N, 224S, 224U, 224W, 226, 227, 228, 229
    3. Sufficient depth units from category (b) and the following: CS 124, 205A, 222, 225A, 225B, 227B, 228T, 246, 262, 270, 273A, 274, 275, 276, 277, 278, 279, 294A*, 321, 322, 323, 326A, 327A, 328, 329, 341, 345, 364A, 364B, 374, 377,* 379*; 393*, 395*, 399*; EE 263, 363, 364A, 364B, 376A; ENGR 205, 209A; MS&E 251, 252, 339, 351, 352, 353; PSYCH 202, 205; STATS 202, 315A, 315B
      • Students with a 27- or 21-unit depth option (Option 1 or 2 above) must take 27 or 21 units respectively subject to satisfying the area (a), (b), and (c) requirements above.
      • Students with a secondary area of specialization (per Option 2 above) in Artificial Intelligence must take five total courses satisfying the area (a) and (b) requirements above.
      • Those students who have waived out of CS 221 may take an additional course in either area (b) or (c).

    Artificial Intelligence Breadth Courses—CS 140, 143, 144, 145, 147, 148, 149, 154, 155, 157, 164, 240, 240E, 242, 243, 244, 244E, 249A, 255, 258, 259, 261, 268; CME 108, 302; EE 108B, 282, 284

  2. Biocomputation—
    1. at least four of: CS 262, 270, 272, 273A, 274, 278, 279
    2. Sufficient depth units from category (a) and the following: CS 228, 229, 245, 246, 261, 268, 275, 277, 341, 345, 346, 365, 374, 393**, 395**, 399**; BIOC 218; GENE 203, 211; SBIO 228
      • Students with a 27- or 21-unit depth option (Option 1 or 2 above) must take 27 or 21 units respectively subject to satisfying the area (a) and (b) requirements above.
      • Students with a secondary area of specialization (per Option 2 above) in Biocomputation must take five total courses, three courses of which must come from area (a) and the remaining two courses may come from either area (a) or (b).

    Biocomputation Breadth Courses—CS 121 or 221, 124, 140, 143, 144, 145, 147, 148, 149, 154, 155, 157, 164, 205A, 222, 223A, 223B, 224M, 224N, 224S, 224U, 224W, 226, 227, 227B, 240, 240E, 242, 243, 244, 244E, 249A, 255, 258, 259, 276, 279; CME 108, 302; EE 108B, 282, 284.

  3. Computer and Network Security—
    1. CS 140**, 144**, 155, 244, 255
    2. At least three of: CS 142, 240, 241, 244B, 244C, 259, 261, 340, 344, 355, 365
    3. Sufficient depth units from category (b) and the following: CS 240E, 244E, 245, 294S*, 295, 341, 344B, 345, 347, 361A, 393*, 395*, 399*; EE 384A, 384B, 384C, 384M, 384S, 384X, 384Y
      • Students with a 27- or 21-unit depth option (Option 1 or 2 above) must take 27 or 21 units respectively subject to satisfying the area (a), (b), and (c) requirements above.
      • Students with a secondary area of specialization (per Option 2 above) in Computer and Network Security must take five courses; those five courses must satisfy the area (a) requirement and additional courses from area (b) should be taken if any area (a) requirements are waived.

    Computer and Network Security Breadth Courses—CS 121 or 221, 124, 143, 147, 148, 149, 154, 157, 164, 205A, 222, 223A, 223B, 224M, 224N, 224S, 224U, 224W, 226, 227, 227B, 228, 229, 242, 243, 249A, 258, 262, 268, 270, 273A, 274, 276, 279; CME 108, 302; EE 108B, 282.

  4. Database Systems—
    1. CS 145**, 245
    2. At least two of: CS 341, 345, 346, 347
    3. Sufficient depth units from category (b) and the following: CS 240, 242, 243, 244, 244B, 244C, 246, 249A, 249B, 255, 262, 270, 271, 272, 275, 276, 315A, 321, 344, 364B, 374, 393*, 395*, 399*
      • Students with a 27- or 21-unit depth option (Option 1 or 2 above) must take 27 or 21 units respectively subject to satisfying the area (a), (b), and (c) requirements above.
      • Students with a secondary area of specialization (per Option 2 above) in Database Systems must take five courses satisfying the area (a), (b), and (c) requirements above.

    Database Systems Breadth Courses—S121 or 221, 124, 140, 147, 148, 149, 154, 155, 157, 164, 205A, 222,223A, 223B, 224M, 224N, 224S, 224U, 224W, 226, 227, 227B, 228, 229, 240E, 244E, 258, 259, 261, 268, 273A, 274, 279; CME 108, 302; EE 108B, 282.

  5. Human-Computer Interaction—
    1. CS 147**
    2. One of: CS 247, 294H
    3. One of: CS 376, 378, 448B
    4. One of: CS 124, 142, 148
    5. One of: CS 303; COMM 206, 268; PSYCH 110, 252
    6. One of: ARTSTUDI 160; ME 203, 216A, 313, 377
    7. One or more courses from areas (b) through (f), or the following: CS140, 210A, 210B, 223A, 223B, 224N, 224S, 224U, 224W, 226, 228, 229, 242, 246, 248, 295, 341, 345, 393*, 395*, 399* or any d.school class listed at http://www.stanford.edu/group/dschool/participate/classes.php or any HCI class listed at http://hci.stanford.edu/courses noted as counting towards the CS M.S. degree. Such courses must be numbered 100 or above and be taken for at least 3 units to count for this requirement.
      • Students with a 27- or 21-unit depth option (Option 1 or 2 above) must take 27 or 21 units respectively subject to satisfying the area (a) through (g) requirements above.
      • Students with a secondary area of specialization (per Option 2 above) in Human-Computer Interaction must take five courses as follows:
        1. one course each from areas (a), (d), (e), and (f)
        2. then one course from either area (b) or (c)
      • Students waiving out of the area (a) requirement should take one additional course from areas (b) through (g).

    Human-Computer Interaction Breadth Courses—CS 121 or 221, 143, 144, 145, 149, 154, 155, 157, 164, 205A, 222, 224M, 227, 227B, 240,240E, 243, 244, 244E, 249A, 255, 258, 259, 261, 262, 268, 270, 273A, 274, 276, 279; CME 108, 302; EE 108B, 282, 284.

  6. Real-World Computing—
    1. At least three of: CS 148, 223A, 223B, 248
    2. At least three of: CS 205A, 205B, 226, 249A, 249B, 262, 268, 277, 348A, 348B, 374; CME 302, 306, 326
    3. Sufficient additional units chosen from the above and from the following: CS 225A, 225B, 228, 229, 247, 270, 271, 272, 273A, 274, 294A*, 323, 327A, 328, 448, 393*, 395*, 399*
      • Students with a 27- or 21-unit depth option (Option 1 or 2 above) must take 27 or 21 units respectively subject to satisfying the area (a), (b), and (c) requirements above.
      • Students with a secondary area of specialization (per Option 2 above) in Real-World Computing must take five total courses satisfying area (a) and two of the three courses in the area (b) requirements above (i.e., three courses in area (a) and two courses in area (b).

    Real-World Computing Breadth Courses—CS 121, or 221, 124, 140, 143, 144, 145, 147, 149, 154, 155, 157, 164, 222, 224M, 224N, 224S, 224U, 224W, 227, 227B, 240, 240E, 242, 243, 244, 244E, 246, 255, 258, 259, 261, 276, 279; CME 108, 302; EE 108B, 282, 284.

  7. Software Theory—
    1. CS 242, 243
    2. At least one of: CS 241, 258, 259
    3. At least one of: CS 244, 245, 295, 341, 343, 345
    4. At least one course from the following: CS 255, 261, 268, 355, 361A, 361B, 365
    5. At least two additional courses chosen from (b), (c), (d), or the following: CS 294S*, 346, 393*, 395*, 399*
      • Students with a 27- or 21-unit depth option (Option 1 or 2 above) must take 27 or 21 units respectively subject to satisfying the area (a)-(e) requirements above.
      • Students with a secondary area of specialization (per Option 2 above) in Software Theory need to take 5 total courses satisfying the area (a) through (d) requirements above:
        1. two courses in area (a)
        2. one course each in areas (b) through (d).

    Software Theory Breadth Courses—CS 121 or 221, 124, 140, 147, 148, 149, 154, 155, 157, 164, 205A, 222, 223A, 223B, 224M, 224N, 224S, 224U, 224W, 226, 227, 227B, 228, 229, 240, 240E, 244E, 249A, 262, 270, 273A, 274, 276, 279; CME 108, 302; EE 108B, 282.

  8. Systems—
    1. CS 140**, 144**, 240, 242
    2. At least three of: CS 243, 244, 245, 248, 348B; EE 271, 282
    3. At least two additional courses chosen from category (b) and the following: CS 240E, 244B, 244C, 244E, 246, 249A, 249B, 255, 259, 262, 270, 271, 272, 276, 294S*, 295, 315A, 315B, 340, 341, 343, 344, 344B, 345, 346, 347, 348A, 349, 374, 448, 393*, 395*, 399*; EE 273, 382A, 382C, 384A, 384B, 384C, 384M, 384S, 384X, 384Y
      • Students with a 27-unit depth option (Option 1 above) must take 27 units subject to satisfying the area (a), (b), and (c) requirements above.
      • Students with a 21-unit depth option (Option 2 above) must take that many units subject to satisfying the area (a) and (b) requirements above, and additional courses may be taken from area (c) if any courses in the area (a) requirement are waived.
      • Students with a secondary area of specialization (per Option 2 above) in Systems need to take five courses; those courses must satisfy the area (a) requirement and additional courses may be taken from area (b).

    Systems Breadth Courses—CS 121 or 221, 124, 147, 154, 155, 157, 164, 205A, 222, 223A, 223B, 224M, 224N, 224S, 224U, 224W, 226, 227, 227B, 228, 229, 255, 258, 261, 268, 273A, 274, 279; CME 108, 302

  9. Theoretical Computer Science—
    1. CS 241 or 258 or 259, 261 (361A or 361B may be used as substitutes for 261)
    2. Sufficient additional units chosen from: CS 228, 241, 246, 254, 255, 258, 259, 262, 268, 341, 345, 355, 356, 357, 358, 359,* 361A, 361B, 364A, 364B, 365, 369,* 374, 393*, 395*, 399*, 468*; MS&E 310
      • Multiple CS 359, CS 369, and/or CS 468 courses may be taken as long as they are each on different topics, denoted by different letter suffixes for the courses.
      • Students with a 27- or 21-unit depth option (Option 1 or 2 above) must take 27 or 21 units respectively subject to satisfying the area (a) and (b) requirements above.
      • Students with a secondary area of specialization (per Option 2 above) in Theoretical Computer Science need to take 5 total courses satisfying the area (a) and (b) requirements above:
        1. two courses in area (a)
        2. three courses in area (b).

    Theoretical Computer Science Breadth Courses—CS 121 or 221, 124, 140, 143, 144, 145, 147, 148, 149, 154, 155, 157, 164, 205A, 222, 223A, 223B, 224M, 224N, 224S, 224U, 224W, 226, 227, 227B, 229, 240,240E, 242, 243, 244, 244E, 249A, 270, 273A, 274, 276, 279; CME 108, 302; EE 108B, 282, 284.

* With consent of faculty adviser.

** Students with equivalent course work may waive with the approval of their adviser.

Requirement 4—

Additional elective units must be technical courses (numbered 100 or above) related to the degree program and approved by the adviser. All CS courses numbered above 110 (with the exception of CS 196 and 198) taken for 3 or more units are pre-approved as elective courses. Additionally, up to a maximum of 3 units of 500-level CS seminars, CS 300, EE 380, EE 385A, or other 1-2 unit seminars offered in the School of Engineering may be counted as electives. Elective courses may be taken on a satisfactory/no credit basis provided that a minimum of 36 graded units is presented within the 45-unit program.

MASTER OF SCIENCE WITH DISTINCTION IN RESEARCH

A student who wishes to pursue the M.S. in CS with distinction in research must first identify a faculty adviser who agrees to supervise and support the research work. The research adviser must be a member of the Academic Council and must hold an appointment in Computer Science. The student and principal adviser must also identify another faculty member, who need not be in the Department of Computer Science, to serve as a secondary adviser and reader for the research report. In addition, the student must complete the following requirements beyond those for the regular M.S. in CS degree:

  1. Research Experience—The program must include significant research experience at the level of a half-time commitment over the course of three academic quarters. In any given quarter, the half-time research commitment may be satisfied by a 50 percent appointment to a departmentally supported research assistantship, 6 units of independent study (CS 393, 395, or 399), or a prorated combination of the two (such as a 25 percent research assistantship supplemented by 3 units of independent study). This research must be carried out under the direction of the primary or secondary adviser.
  2. Supervised Writing and Research—In addition to the research experience outlined in the previous requirement, students must enroll in at least 3 units of independent research (CS 393, 395, or 399) under the direction of their primary or secondary adviser. These units should be closely related to the research described in the first requirement, but focused more directly on the preparation of the research report described in the next section. The writing and research units described in parts (1) and (2) may be counted toward the 45 units required for the degree.
  3. All independent study units (CS 393, 395, 399) must be taken for letter grades and a GPA of 3.0 (B) or better must be maintained.
  4. Research Report—Students must complete a significant report describing their research and its conclusions. The research report represents work that is publishable in a journal or at a high-quality conference, although it is presumably longer and more expansive in scope than a typical conference paper. A copy of the research report must be submitted to the student services office in the department three weeks before the beginning of the examination period in the student's final quarter. Both the primary and secondary adviser must approve the research report before the distinction-in-research designation can be conferred.

JOINT M.S. AND LAW DEGREE

Law students interested in pursuing an M.S. in Computer Science must apply for admission to the Computer Science Department either (i) concurrently with applying to the Law School; or (ii) after being admitted to the Law School, but no later than the earlier of: (a) the end of the second year of law school; or (b) the Computer Science Department's admission deadline for the year following that second year of law school.

In addition to being admitted separately to the Law School and the Computer Science Department, students must secure permission from both academic units to pursue degrees in those units as part of a joint degree program.

J.D./M.S. students may elect to begin their course of study in either the Law School or the Computer Science Department. Faculty advisers from each academic unit participate in the planning and supervising of the student's joint program. Students must be enrolled full-time in the Law School for the first year of law studies. Otherwise, enrollment may be in the graduate school or the Law School and students may choose courses from either program regardless of where enrolled. Students must satisfy the requirements for both the J.D. degree as specified by the Law School and the M.S. degree as specified in this Bulletin.

The Law School approves courses from the Department of Computer Science that may count toward the J.D. degree, and the Computer Science Department approves courses from the Law School that may count toward the M.S. degree in Computer Science. In either case, approval may consist of a list applicable to all join degree students or may be tailored to each individual student program. No more than 45 units of approved courses may be counted toward both degrees. No more than 36 units of courses that originate outside the Law School may count toward the Law degree. To the extent that courses under this joint degree program originate outside of the Law School but count toward the Law degree, the Law School credits permitted under Section 17(1) of the Law School Regulations shall be reduced on a unit-per-unit basis, but not below zero. The maximum number of Law School credits that may be counted toward the M.S. in Computer Science is the greater of: (i) 12 units; or (ii) the maximum number of units from courses outside of the department that M.S. candidates in Computer Science are permitted to count toward the M.S. in the case of a particular student's individual program. Tuition and financial aid arrangements are normally through the school in which the student is then enrolled.

© Stanford University - Office of the Registrar. Archive of the Stanford Bulletin 2010-11. Terms of Use | Copyright Complaints