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 in a subsequent section.
Applications for admission to the M.S. program, and all of the required supporting documents, must be received by December 8, 2009. Exceptions are made for applicants who are already students at Stanford and are applying to the coterminal program. Information on these deadlines is available from the department.
For University coterminal degree program rules and University application forms, see http://registrar.stanford.edu/shared/publications.htm#Coterm.
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 21 units of courses from those listed below in Requirements 1 and 2. Thus, students needing to take more than seven of the courses listed in Requirements 1 and 2 actually complete more than 45 units of course work in this program. Only well-prepared students may expect to finish the program in one year; most 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 of the courses in Requirement 2.
Requirement 1The following courses may be needed as prerequisites for other courses in the program: CS 103, or 103A, B, or X, 106A, B, or X, 107, 108, 110; MATH 51.
Requirement 2Students must demonstrate breadth of knowledge in the field by completing the following courses:
- Area A: Mathematical and Theoretical Foundations
- Statistics (CS 109 or STATS 116 or MS&E 220 or CME 106)
- Algorithms (CS 161)
- Automata (CS 154)
- Choose one of:
- Numerical Analysis (CME 108 or 302)
- Logic (CS 156, 157, 258, or PHIL 251)
- Mathematical Methods (CS 205A)
- Area B: Computer Systems
- Required: Architecture (EE 108B or 282)
- Choose two of:
- Operating Systems (CS 140)
- Compilers (CS 143 or 243)
- Introduction to Computer Networks (CS 144 or EE 284)
- Area C: AI and Applications
- Choose two of the following, with at least one 200-level course:
- AI (CS 121 or 221)
- Databases (CS 145 or 245)
- Graphics (CS 148 or 248)
- Choose two of the following, with at least one 200-level course:
Individual specializations may narrow the set of choices in specific areas of the breadth requirement; see the individual specialization sheets at http://cs.stanford.edu/degrees/mscs/programsheets for details. Breadth courses are waived only if evidence is provided that similar or more advanced courses have been taken, either at Stanford or another institution. Courses that are waived rather than taken may not be counted toward the M.S. degree. Breadth 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.
Requirement 3At least 1 but no more than 3 units of 500-level seminars must be taken.
Requirement 4A program of 21 units in an area of specialization must be completed. All courses in this area must be taken for letter grades. Ten approved programs are listed below. Students may propose to the M.S. program committee other coherent programs that meet their goals and satisfy the basic requirements.
- Artificial Intelligence
- at least four of: CS 223A, 223B, 224M, 224N, 224S, 224U, 226, 227, 228, 229
- a total of 21 units from category (a) and the following: CS 124, 205A, 222, 225A, 225B, 227B, 228T, 262, 270, 273A, 274, 275, 276, 277, 278, 279, 294A, 321, 322, 323, 327A, 328, 329, 374, 377,* 379*; ECON 286; EE 263, 363, 364A, 364B, 376A; ENGR 205, 209A; MS&E 251, 252, 339, 351, 352, 353; PSYCH 202, 205; STATS 202, 315A, 315B
- at least four of: CS 262, 270, 272, 273A, 274, 278, 279
- a total of 21 units from category (a) and the following: CS 228, 229, 245, 261, 268, 275, 277, 345, 346, 365, 374; BIOC 218; BIOMEDIN 234; GENE 203, 211; SBIO 228
- Computer and Network Security
- CS 155, 244, 255
- at least three of: CS 142, 240, 241, 244B, 244C, 259, 261, 340, 344, 365
- at least one additional course chosen from (b) and the following: CS 240E, 244E, 245, 295, 344B, 345, 347, 355, 361A; EE 384A, 384B, 384C, 384M, 384S
- Database Systems
- CS 245
- at least two of: CS 345, 346, 347
- at least four additional courses from category (b) and the following: CS 240, 242, 243, 244, 244B, 244C, 249A, 249B, 255, 262, 270, 271, 272, 275, 276, 315A, 321, 344, 364B, 374
- Human-Computer Interaction
- CS 147, 247
- at least one of: ME 313, 377; MS&E 27*, 28* (where 27* and 28* are any of the MS&E courses beginning with those digits that are offered in 2009/10): Psych 205, 252
- at least one of: CS124, 142, 148, 294H, 376, 377 (may be repeated for credit), 378, 448
- a total of 21 units from categories (a), (b), (c), and the following: CS 221, 223B, 229, 242, 248, 249A, 249B, 276, 379L: COMM 268, 269, 272; ENGR 231; ME 206A, 206B, 312, 314, 377; EDUC 124; MUSIC 205A: SYMBSYS 145
- Numerical Analysis/Scientific Computation
- CME 302, 306; CS 205A
- at least two of: CME 326; CS 205B; MS&E 121; MATH 131, 132, 220; STATS 200
- at least two of: CS 223A, 327A, 339; AA 214A, 214B; CME 324, 342
- Real-World Computing
- at least two of: CS 223A, 223B, 248
- at least three of: CS 205A, 205B, 226, 249A, 249B, 262, 268, 277, 348A, 348B, 374; CME 302, 306, 326
- a total of 21 units from the above and from the following: CS 225A, 225B, 228, 229, 247, 270, 271, 272, 273A, 274, 294A, 327A, 328, 448; CME 324
- Software Theory
- CS 242, 243
- CS 241 or 258 or 259
- at least one of: CS 244, 245, 295, 343, 345
- at least one course from the following: CS 255, 261, 268, 355, 361A, 361B, 365
- at least two additional courses chosen from (b), (c), and CS 346
- CS 240, 242
- at least three of: CS 243, 244, 245, 248, 348B; EE 271
- at least two additional courses chosen from (b) and the following: CS 194, 240C, 240D, 240E, 240X, 244B, 244C, 244E, 249A, 249B, 255, 259, 262, 270, 271, 272, 276, 294S, 295, 315A, 315B, 340, 343, 344, 344B, 344E, 345, 346, 347, 348A, 349, 374, 448; EE 384A, 384B, 384C, 384S, 384X, 384Y
- Theoretical Computer Science
- CS 241 or 258 or 259, 261 (361A, 361B, or 365 may be substituted for 261)
- at least five additional courses chosen from CS 228, 241, 255, 258, 259, 262, 268, 345, 355, 357, 358, 359,* 361A, 361B, 364A, 364B, 365, 369,* 374; MS&E 310
* With consent of faculty adviser.
Requirement 5Additional elective units must be technical courses (numbered 100 or above) related to the degree program and approved by the adviser. 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./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./CS degree:
- 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.
- 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. Note that the writing and research units described in parts (1) and (2) must be taken in addition to the 21 units required for the specialization, although they do count toward the 45 units required for the degree.
- 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 advisors from each academic unit will 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 school. 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. and the M.S. degrees as specified in the Stanford Bulletin or elsewhere.
The Law School shall approve courses from the Computer Science Department that may count toward the J.D. degree, and the Computer Science Department shall approve 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 will normally be through the school in which the student is then enrolled.