Stanford > CS > Master's Degree > Choosing Classes > Program Planning

Program Planning

Welcome to the Stanford Master of Science in Computer Science (MSCS) program! The degree requirements can seem a little complicated at first. But here we’ll try to give a high-level overview of how to approach them.

For a more in-depth look at the courses that currently fulfill these requirements, and other fine-print details about the requirements, we recommend all new students read the Guide to the MSCS Program Sheet. Current and past Guides are available for reference on our  Program Sheets page.

For the official MSCS program description, see the Stanford Bulletin.

Degree Requirements

To complete an MSCS degree, you need to do 45 units at Stanford. (Units counting towards a Stanford BS program and transfer units are not eligible.) The units come from four areas:

Degree requirements

Foundations (up to 10 units)

These courses are required for all students in the program, but they may be waived if a student has taken a similar previous course. All waivers must be approved by a student’s advisor. 

Depth Options (choose one):

  1. Single Depth

    • Depth (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, 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.
    • Breadth (3 course minimum) - 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.
  2. Dual 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.

Significant Implementation (SI)

If a student has not already completed a SI course in his or her breadth, depth, or electives, he or she must complete one before graduating. The following is a list of the approved significant implementation courses:


After finishing one of the two depth requirements, students may take qualified electives to get up to 45 units. "Qualified" electives are:

The Fine Print

Here are the other rules:

Back To Top

Distinction in Research

While we don’t require all MSCS students to complete a research thesis, some students pursue a departmental honor called a "distinction in research". It’s a great option if you’re at all interested in research or considering a possible Ph.D program or a career as a researcher. The goal is to produce work that is publishable in a journal or a conference.

The requirements are formally stated in the Bulletin, but here’s how to go about doing a distinction in research:

  1. Find a faculty advisor. It could be any CS professor. Discuss and agree on a research objective for your work. Eventually the two of you will need to agree on a secondary advisor who will also review your research report.
  2. Notify Claire Stager (stager@cs). Just let her know who your two advisors are and be sure your research plan is included in your program sheet.
  3. Do research. You need 18 units of independent study research (CS 393, 395, or 399), 3 quarters of a half-time research assistantship, or some pro-rated combination (50% RA-ship = 6 units; 25% RA-ship = 3 units). This work must be done with your primary or secondary advisor. Note that no more than 9 units of research may be counted towards your Depth requirement.
  4. Write a research report. In addition to the research experience in (2) above, you need 3 units of independent study that give you a chance to write a report on your research--essentially a longer version of a conference paper. Two copies of the report must be submitted to Claire in Gates 182 three weeks before finals week in your last quarter, and they must be approved by both your advisors.
Back To Top

Planning and Submitting Your Program Sheet

Your program sheet serves as a proposal showing how you could graduate with your MSCS. It’s not cast in stone, so you’re free to revise and resubmit your program sheet as you make changes. Completing your program sheet is a valuable exercise though to help you focus your academic career here.

We encourage new master’s students to meet with their faculty advisor (assigned at Orientation in September) in their first couple weeks here to talk about their academic plans. Early on you should talk about what waivers you’d like to request, so that you can find out soon whether you’ll have to take those foundation courses here.

In your first quarter, you should try to apply for any waivers and file a program sheet. Again, you’re free to change this later, but it’s very helpful for planning to make the most of your time here.

To submit your program sheet:

  1. If you are using a program sheet from 2010-2011 or later, fill out an electronic program sheet via logging into GIN. Otherwise, fill out one of the hardcopy program sheets. (Paper copies are also available outside Gates 182.)
  2. Get your faculty advisor to sign it and approve any waivers or deviations.
  3. Bring your program sheet and any waiver documentation to Claire in Gates 182.

If you make changes to your plan later, you just need to resubmit your program sheet. It’s best to keep your plan reasonably up-to-date, particularly if you want to do any deviations. If you’ve already gotten your advisor to sign off on waivers or deviations, you can just write "on-file" on the program sheet rather than reapplying for them.

Be sure to submit a final program sheet by the beginning of your final quarter, but you don’t need to wait until then if you already know what classes you’re going to take.

Back To Top

How to Choose Classes

Course Load

The MSCS program is 45 units, and most full-time students take two years to complete it. That works out to roughly 8-10 units per quarter, which is the most common courseload for MSCS students (and the maximum allowed if you are doing a 50% TAship or RAship). This typically translates to two or three classes.

New students are often tempted to plunge right in and load up their first quarter. We advise against this. Your first quarter here you’re probably still adjusting to Stanford, maybe want to explore the area more, and are accustomed to coursework at another school that may be significantly different. We suggest leaning toward a lighter quarter at first and then ramping up later to find your comfort level.

Courses vary widely in the type and intensity of workload, and they don’t correspond to course number, number of units, or any other handy rule of thumb. Most people find they’re happiest by balancing their quarter with a variety of types of work (e.g. programming, problem sets, design work). Taking three heavy programming classes with large final projects in one quarter may not be a great idea. 

Some factors to consider in evaluating how courses will fit together in a quarter:

To get a feel for these sorts of things, you can take a look at the course syllabi, or talk to the Course Advisor.

Also, if you have units to spare, consider taking some fun 1-2 unit activity courses in areas like athletics, dance, or music. While these courses certainly won’t count toward your 45 units, you can still enroll in them and they can be a nice form of stress relief.


Stanford is somewhat unique in that it doesn’t make on-campus students pre-register for most classes. (There are a few notable exceptions for classes with limited enrollment, such as some of the new design school classes.) This gives you the opportunity to get a feel for what each class is like before you commit to a schedule. HOWEVER, you must have a preliminary study list filed (be enrolled in at least 8 units) by 5:00pm on the first day of the quarter.

Here’s how to shop for classes (for exact dates, please visit the Stanford Academic Calendar):

  1. At the start of each quarter, make a list of classes you’re considering. Use the CS schedule, Axess, and/or Explore Courses to find out when and where they meet.
  2. Go to the first couple lectures. Collect each class’s syllabus and ask questions until you have a feel for what the course is about, what sort of workload to expect throughout the quarter, and whether you like the material and instructor.
  3. By the end of the third week, add any classes you’ve forgotten to your study list, and drop any courses you intend to drop.
  4. By the eigth week, withdraw from any courses you don’t want to take and decide which courses you wish to take "pass-fail" (credit/no-credit) as opposed to for a a letter grade

Back To Top

For More Information