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:

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:
- Math and theory. All of the following:
- Probability (CME 106, MS&E 220, or Stat 116).
- Automata and Complexity Theory (CS 154).
- Algorithms (CS 161).
- And any one of:
- Numerical Analysis (CME 108 or CME 302)
- Logic (CS 156, CS 157, or Phil 251)
- Mathematical Models for Robotics, Vision, and Graphics (CS 205)
- Systems. Both of the following:
- Computer Architecture. Everyone must take EE 108B or EE 282. People specializing in Systems must take 282.
- And any two of:
- Operating Systems (CS 140)
- Compilers (CS 143)
- Networks (CS 244A or EE 284)
- Applications. Any two of the following, including one at the 200 level:
- Artificial Intelligence (CS 121 or CS 221). People specializing in AI must take 221.
- Databases (CS 145 or CS 245)
- 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:
- 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.
- 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.
- 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:
- 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.
- 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.
- 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.
- 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:
- Fill out one of the program sheets online. (Paper copies are also available outside Gates 182.)
- Get your faculty advisor to sign it and approve any waivers or deviations.
- 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:
- 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.
- 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.
- 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.
- By the end of the third week, add any classes you've forgotten to your study list.
- By the end of the fourth week, drop any courses you don't want to take.
- 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