Computer Science Department: MSCS Degree Requirements


MASTER OF 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 new program leading to a master’s degree with distinction in research. This degree is described in more detail in a subsequent section.

A candidate is required to complete a program of 45 units. At least 36 of these must be graded units, passed with an average 3.0 (B) grade point average (GPA) or better. Units are acquired in four of the following categories:

  • Foundations - the first and most basic requirement on your program sheet. A maximum of 10 units can be applied from foundations towards the 45.
  • Depth - There are two options for the depth requirement. A student may choose to do Single Depth or Dual Depth. Single Depth requires that you take 27 units of a single specialization, and a minimum of 3 ’breadth’ courses (~9-12 units). Dual depth requires that students take 21 units in their primary depth and 15 units in their secondary depth.
  • Electives - If a candidate has completed their program requirements and is still short of their 45 units, they may take electives to apply to the 45 units. With a few exceptions, generally CS courses above CS110 can count as electives. Courses in other departments may also count, but they must be approved by your advisor, and they must be technical in nature.

Additionally, at some point in a candidate’s program, the candidate must complete a significant implementation course. These courses are listed below in Table 1.

Foundations Requirement

Below are the Foundation courses required for all candidates.

  • Logic, Automata and Complexity (CS103)
  • Probability (CS 109 or Stat 116 or CME 106 or MS&E 220)
  • Algorithmic Analysis (CS 161)
  • Computer Organization and Systems (CS 107)
  • CS110 (Principles of Computer Systems)

Rules for the Foundation requirements:

  • If you take one of the Stanford courses listed on the program sheet for a particular requirement, you satisfy the corresponding requirement directly and do not need to get your adviser’s approval.
  • If you have already taken equivalent coursework at another institution and have received at least a B in that coursework, you may ask your adviser to accept that coursework as satisfying the Foundations requirement in that area. To do so, fill in the details of the substituted course on your program sheet, collect the required supporting documents online at https://cs.stanford.edu/degrees/mscs/waivers/, and then ask your adviser to sign in the space provided on the Foundations course waiver form.
  • If you use coursework from another institution to satisfy the Foundations requirements in a particular area, that coursework does not count for any units in the Stanford program. The advantage of using a previous course to fill a Foundations requirement is simply that it allows you to take more advanced courses in your program. It does not reduce the number of units you will have to complete.
  • You may count no more than 10 units from the set of courses listed under the Foundations requirement category. If you need to take more courses in that category, your program will likely have to include more than 45 total units.

Significant Implementation Requirement

In order to complete an MS CS, students must demonstrate the ability to do substantial software development as part of their coursework. To satisfy the Significant Implementation (SI) requirement, students complete a course designated as satisfying the SI requirement. This course may be one of the courses taken to satisfy some other program requirement (e.g., Breadth, Depth, or Elective). Note that the SI requirement must be satisfied by coursework at Stanford – this requirement may not be waived by coursework elsewhere. (Coterminal students who took two courses with the SI designation as part of their undergraduate programs may waive out of this requirement.) Finally, SI courses must be taken for a grade.

Table 1. List of approved significant implementation courses
CS 140: Operating Systems and Systems Programming
CS 143: Compilers
CS 144: Introduction to Computer Networking
CS 145: Introduction to Databases
CS 148: Introduction to Computer Graphics and Imaging
CS 210B: Software Project Experience with Corporate Partners
CS 221: Artificial Intelligence: Principles and Techniques
CS 243: Program Analysis and Optimizations
CS 248: Interactive Computer Graphics
CS 347: Database System Implementation

Depth Options


Option 1: Single Depth (Breadth and Single Depth)

Breadth requirement: The breadth requirement is aimed at giving students exposure to topics in computing outside of their chosen depth area. The list of breadth courses generally includes the majority of non-experimental courses in CS, with one important caveat: for students in a particular depth area, courses that are part of the depth requirements in that area are not included in the list of breadth courses. This enforces breadth beyond the student’s chosen depth area. Note that more advanced versions of courses satisfying the breadth requirement can be substituted (e.g., CS 245 instead of CS 145). The breadth requirement must be satisfied by course work at Stanford – this requirement may not be waived by coursework elsewhere. All course work must be taken for a letter grade.

Depth requirement (single specialization, 27 units): Students are required to complete 27 units of course work in their chosen specialization area, satisfying the specific requirements of that specialization area. Most students complete one of the nine approved specializations listed in Figure 5, but you may also petition the MSCS committee to approve a specialization of your own design. In order to be approved, individually designed specializations must represent a coherent area of study and must include courses at both the 200 and 300 level. All course work must be taken for a letter grade.

Option 2: Dual Depth (Primary and Secondary Depth)

Primary depth (21 units): Students are required to complete 21 units of course work in their chosen primary specialization area, satisfying the specific requirements of that primary specialization area. All course work must be taken for a letter grade.

Secondary depth (5 courses, 15 units minimum): Students are required to complete 5 courses (minimum of 3 units each) in their chosen secondary specialization area, satisfying the specific requirements of that secondary specialization area. All course work must be taken for a letter grade.

1. Artificial Intelligence
a. CS 221**
b. At least four of: CS 223A, 223B, 224M, 224N, 224S, 224U, 224W, 226, 227, 228, 229
c. 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*; Elect. Eng. 263, 363, 364A, 364B, 376A; Engr. 205, 209A; Man. Sci. 251, 252, 339, 351, 352, 353; Psych. 202, 205; Stat. 202, 315A, 315B

Students with a 27 or 21 unit depth option simply need to take that many units subject to satisfying the area (a), (b), and (c) requirements above.
Students with a secondary concentration in AI need to take five total courses satisfying the area (a) and (b) requirements above. Students waiving out of CS221 may take an additional course in either area (b) or (c).

2. Biocomputation
a. At least four of the following: CS 262, 270, 272, 273A, 274, 278, 279
b. Sufficient depth units from category (a) and the following: CS 228, 229, 245, 246, 261, 268, 275, 277, 341, 345, 346, 374, 393*, 395*, 399*; BioC 218; Gene 203, 211; StructBio 228

Students with a 27 or 21 unit depth option simply need to take that many units subject to satisfying the area (a) and (b) requirements above.
Students with a secondary concentration in Biocomputation need to take five total courses. Three of those courses must come from area (a) and the remaining two courses may come from either area (a) or (b).

3. Computer and Network Security
a. Each of the following: CS 140**, 144**, 155, 244, 255
b. At least three of the following: CS 142, 240, 241, 244B, 244C, 259, 261, 340, 344, 355
c. Sufficient additional units selected from (b) and the following: CS 240E, 244E, 245, 294S*, 295, 341, 344B, 345, 347, 355, 361A, 393*, 395*, 399*; EE 384A, 384B, 384C, 384M, 384S, 384X, 384Y

Students with a 27 or 21 unit depth option simply need to take that many units subject to satisfying the area (a), (b), and (c) requirements above.
Students with a secondary concentration in Computer and Network Security need to take five courses. Those courses must satisfy the area (a) requirement and additional courses from area (b) should be taken if any area (a) requirements are waived.

4. Database Systems
a. Required: CS 145**, 245
b. At least two of the following: CS 341, 345, 346, 347
c. Sufficient additional units selected from category (b) and the following: CS240, 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 simply need to take that many units subject to satisfying the area (a), (b), and (c) requirements above.
Students with a secondary concentration in Database Systems need to take five courses satisfying the area (a), (b), and (c) requirements above.

5. Human-Computer Interaction
a. CS 147**
b. One of: CS 247, 294H
c. One of: CS 376, 378, 448B
d. One of: CS 124, 142, 148
e. One of: CS 303; Psych 110, 252; Comm 206, 268
f. One of: ArtStudio 160; ME 203, 216A, 313, 377
g. One or more courses from areas (b) through (f), or the following: CS 140, 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://www.stanford.edu/group/dschool/participate/classes.php noted as counting toward the MS CS 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 simply need to take that many units subject to satisfying the area (a)-(g) requirements above.
Students with a secondary concentration in Human-Computer Interaction need to take five courses as follows: one course each from areas (a), (d), (e), and (f), and 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)-(g).

6. Real-World Computing
a. At least three of the following: CS 148, 223A, 223B, 248
b. At least three of the following: CS 205A, 205B, 226, 249A, 249B, 262, 268, 277, 348A, 348B, 374; CME 302, 306, 326
c. Sufficient additional units selected from categories (a), (b), and 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 simply need to take that many units subject to satisfying the area (a), (b), and (c) requirements above.
Students with a secondary concentration in Real-World Computing need to take 5 total courses satisfying the 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)).

7. Software Theory
a. Each of the following: CS 242, 243
b. At least one of the following: CS 241, 258, 259
c. At least one of the following: CS 244, 245, 295, 341, 343, 345
d. At least one of the following: CS 255, 261, 268, 355, 361A, 361B, 365
e. At least two additional courses from (b), (c), (d), or the following: CS 294S*, 346, 393*, 395*, 399*>

Students with a 27 or 21 unit depth option simply need to take that many units subject to satisfying the area (a)-(e) requirements above.
Students with a secondary concentration in Software Theory need to take 5 total courses satisfying the area (a)-(d) requirements above (i.e., two courses in area (a) and one course each in areas (b)-(d))

8. Systems
a. Each of the following: CS 140**, 144*, 240, 242
b. At least three of the following: CS 243, 244, 245, 248, 348B; EE 271, 282
c. At least two additional courses selected 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 simply need to take that many units subject to satisfying the area (a), (b), and (c) requirements above.
Students with a 21 unit depth option need to 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 concentration in Systems need to take five courses. Those courses must satisfy the area (a) requirement and additional courses may be taken from area (b).

9. Theoretical Computer Science
a. CS241 or 258 or 259, 261 (361A or 361B may be used as substitutes for 261)
b. Sufficient additional units selected 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; Man Sci & Eng 310

Note: Multiple CS359, CS369, and/or CS468 courses may be taken as long as they are each on different topics (denoted by different suffixes for the courses).
Students with a 27 or 21 unit depth option simply need to take that many units subject to satisfying the area (a) and (b) requirements above.
Students with a secondary concentration in this area need to take 5 total courses satisfying the area (a) and (b) requirements above (i.e., two courses in area (a) and three courses in area (b)).
* With consent of advisor. **Students with equivalent course work may waive with the approval of their advisor.

Specializations do allow some flexibility. If you have a particularly strong background, for example, you may already have taken some of the courses required for your area of specialization. You may also find that you are unable to complete the precise set of requirements because of course-scheduling conflicts or because certain courses are not offered in every year. Thus, it sometimes happens that the specialization you propose differs in some respect from the stated requirements.

To allow for the necessary flexibility, your adviser has some authority to approve exceptions to the requirements listed in Figure 5. It is always appropriate, for example, for the adviser to approve more advanced work in lieu of specific requirements that you have already taken elsewhere. Beyond standard substitutions such as this, advisers will approve only minor changes in the specialization requirements. If you propose more extensive deviations from the standard specializations, advisers will refer those changes to the MSCS committee for review. The general rule is that advisers have the authority to approve a single course change in the stated requirements as long as they believe that the change makes good academic sense and does not weaken the overall program. If you propose a specialization that differs from the stated requirements in two or more courses, your revised program is referred back to the full committee. The MSCS committee is empowered to approve any course proposal, but is generally not willing to support major changes in the requirements unless there are compelling reasons to do so.

Electives

After you have filled in the courses in the various areas described in the preceding sections, you may still fall short of the 45 units required for a MSCS degree, particularly if you have satisfied most of the Foundations courses with previous study at other institutions. If you are short of units, you must specify additional electives to bring your program up to the required 45-unit level.

Elective courses are really up to you to select, even though the entire program must be approved by your adviser. Courses in related departments, such as Electrical Engineering, Mathematics, and Statistics, numbered at the 100-level or above and that are technical in nature, are also likely to be approved. You may count up to a maximum of three units of 500-level CS seminars, CS 300, EE 380, EE 385A, or other 1-2 units seminars offered in the School of Engineering, as Electives toward the MS degree. In addition, courses in computer science numbered above 110 (with the exception of CS196 and 198) are suitable as electives. On the other hand, courses that are completely unrelated to computer science would not normally be appropriate as electives. If you are unsure about a particular course, check with the MS program administrator in Gates room 182.

Additional Requirements

everal of the additional requirements listed at the bottom of the program sheet have already been covered in earlier sections of this guide. A couple of the requirements, however, deserve some additional explanation.

  • Minimum GPA requirement. In order to receive your MSCS degree, your GPA in the courses you submit on your program sheet must be at least 3.0, which corresponds to a B in Stanford’s grading scale. Note that you need not get a B in every course. All the requirement states is that the overall GPA, which is simply the average of the numeric grade weighted by the number of units in each course, must be at least a 3.0. Note, however, that the GPA is computed only for the courses you submit on your program sheet. If you do poorly in several courses, it may be wise for you to eliminate those courses from your program sheet and substitute other courses in which you have done better. Such substitutions may require you to take more than 45 units, but it is important to know that a single disastrous grade will not necessarily doom your entire program.
  • Letter-grade requirement. This requirement is mostly self-explanatory but nonetheless deserves emphasis. At least 36 of your 45 units, including all of the breadth and depth units submitted for your specialization(s), must be taken for a letter grade. Note that seminar courses, which must be taken on an S/NC basis, are not letter-graded courses. The remaining nine units may be taken on a credit/no credit basis if you so choose. All depth, breadth, and significant implementation courses must be taken for a grade. The only eligible courses for Credit/No Credit are courses that are applied as foundations or elective courses.

Master of Science with Distinction in Research

A student who wishes to pursue the M.S./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.

REQUIREMENTS:

In addition, the student must complete the following requirements beyond those for the regular M.S./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.

3. 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. Three copies 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.