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 RequirementBelow 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)
- 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 RequirementIn 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, 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 OptionsOption 1: Single Depth (Breadth and Single Depth)
Option 2: Dual Depth (Primary and Secondary Depth)
- 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). - 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). - 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. - 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. - 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). - 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)). - 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)) - 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). - 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)).
1. Artificial Intelligence
2. Biocomputation3. Computer and Network Security4. Database Systems5. Human-Computer Interaction6. Real-World Computing7. Software Theory8. Systems9. Theoretical Computer ScienceSpecializations 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. ## ElectivesAfter 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 Requirementseveral 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 ResearchA 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. 2. 3. |