Computer Science Department

   
 
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 course descriptions and the official MSCS program description, see the Stanford Bulletin (pdf).

Back To Top

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

Background and Breadth (up to 21 units)

These courses give you a solid background in CS and exposure to a variety of areas. 

Background. People enter the MSCS program with a wide variety of background experience. Some people did CS undergrads, and others have never done any programming. But most every MSCS class will assume that you've taken these classes, or their equivalents elsewhere:

  • CS 103A&B or CS 103X: Discrete Math and Structures. Covers topics such as logic, proofs, algorithmic analysis, and data models. CS103X is the "accelerated" version for people who are already comfortable with mathematical formalism.
  • CS 106A&B or CS 106X: Programming Methodology and Abstractions. Our intro programming course. By the end of the sequence you should be comfortable with C++, data structures, and recursion. If you've "done programming" before but not formally, you might want to take the accelerated CS 106X to brush up and get some practice.
  • CS 107: Programming Paradigms. This is where most students start to really understand what's going on under the hood--the difference between just "knowing C++" and getting your hands dirty with memory management. Also covers functional programming (like LISP) and concurrency.
  • CS 108: Object-Oriented Systems Design. Students' first crack at large-scale object-oriented design (in Java). People come away with a greater understanding of the underlying Java libraries and valuable team design and development experience that makes future team projects much easier.

These courses are not required, and so they're not listed on the program sheets. However, if you haven't taken classes like them already or want a refresher, you can count any of them towards your degree. The decision is entirely up to you; some people may have already acquired much of this experience working in industry or be comfortable doing some background reading to catch up. Your advisor can help you determine whether you should take these courses here.You can count up to 21 units total of background and breadth courses.

Breadth. A Stanford MSCS degree is meant to show prospective employers that you have a solid, broad understanding of computer science courses. The breadth requirement is designed to ensure that you have a wide range of classroom experience that will prepare you to tackle most any application of software engineering. Even if you don't go on to write operating system kernels for a living, the techniques you pick up and concepts you learn keep popping up in computer science.

The breadth requirement has three components:

  1. Math and theory. All of the following:
    1. Probability (CME 106, MS&E 220, or Stat 116).
    2. Automata and Complexity Theory (CS 154).
    3. Algorithms (CS 161).
    4. And any one of:
      1. Numerical Analysis (CME 108 or CME 302)
      2. Logic (CS 156, CS 157, or Phil 251)
      3. Mathematical Models for Robotics, Vision, and Graphics (CS 205)
  2. Systems. Both of the following:
    1. Computer Architecture. Everyone must take EE 108B or EE 282. People specializing in Systems must take 282.
    2. And any two of:
      1. Operating Systems (CS 140)
      2. Compilers (CS 143)
      3. Networks (CS 244A or EE 284)
  3. Applications. Any two of the following, including one at the 200 level:
    1. Artificial Intelligence (CS 121 or CS 221). People specializing in AI must take 221.
    2. Databases (CS 145 or CS 245)
    3. Graphics (CS 148 or CS 248)

You may well have taken courses like these in your undergrad years. (Industry experience does not count.) If so, you can ask your advisor to waive part of the breadth requirement. Note that this doesn't grant you units--you still have to complete 45 units at Stanford. But it does mean you can take other electives instead. To see if you can waive a course:

  1. The Guide to the MSCS Program Sheet has a nice description of what we expect students to take away from each course and the criteria that professors typically use to evaluate waiver requests. It's a good starting point.
  2. Complete the Waiver Documents Checklist, which includes the description, syllabus and reading list for the Stanford course you want to waive and for its equivalent(s) at your other school, and a transcript showing the grade you got for the course.
  3. Meet with your faculty advisor to make your case. Be prepared to explain why your coursework is substantially similar to the Stanford courses

Up to 21 units of background and breadth courses altogether may be counted toward your degree.

Seminars (1-3 units)

You're required to take at least one 500-level seminar. There are a variety of these offered in different areas, including the popular CS 528 (AI, graphics, and vision) and CS 547 (human-computer interaction). Seminars are typically 1-unit ungraded courses where you get to hear from a variety of speakers about research in their field. You may repeat these courses as often as you like, but only 3 units of seminars can count toward your degree.

Depth (at least 21 units)

Everyone must complete 21 graded units toward his or her specialization. There are seven predefined specializations to choose from, or you can design your own. You're not bound to the specialization that you listed on your application and can switch specializations at any time.

If you wish to substitute courses for depth requirements you'll need to talk to your advisor and request a "deviation". There's no formal process for this but you do need his or her approval and a compelling reason why the deviation you're requesting makes sense in the context of your MSCS program.

Electives

Outside of the breadth, seminar, and depth requirements, you can take qualified electives to get up to 45 units. "Qualified" electives are:

  • Any CS course numbered above 109 (other than CS 196 and 198), including independent study and research units
  • Courses from other departments numbered 100 or higher, that are technical in nature, relevant to your degree program, and approved by your advisor.

The Fine Print: Grades

Here are the other rules:

  • At least 36 of your 45 units (including all your depth units) must be taken for a letter grade.
  • The GPA for all courses on your program sheet must be at least a 3.0 (B).
  • Units previously applied toward a BS program may not be double-counted toward the MSCS.
  • You must complete at least 45 units at Stanford to receive the degree. Transfer credit is not allowed.
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.
  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 breadth 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. Fill out one of the program sheets online. (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:

  • What are the assignments like? Problem sets, programming, or design assignments?
  • How many assignments are there? Are there weekly problem sets, or four large programs?
  • Is there a final project?

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.

Shopping

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. Here's how to shop for classes:

  1. At the start of each quarter, make a list of classes you're considering. Use the CS schedule and Axess 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. Within the first two weeks, file a study list on Axess. This is just a "rough draft" but be sure to sign up for any classes with limited enrollment that you plan to take. You want to start whittling down your list to a manageable 8-10-unit courseload.
  4. By the end of the third week, add any classes you've forgotten to your study list.
  5. By the end of the fourth week, drop any courses you don't want to take.
  6. By the end of the sixth week, decide whether you want to take your classes for a letter grade or "pass-fail" (credit/no-credit).
Back To Top

For More Information