Considering CS?

We're so glad you're considering CS at Stanford!

If you are a High School student considering the CS major at Stanford, you might also want to check out the High School FAQ.

If you are enrolled at Stanford and considering majoring in CS but are not quite ready to declare, you can sign up for the considering_cs list. We forward selected departmental announcements, social events, and class changes to this list periodically.

If you are ready to declare, you may want to look at the pages on Choosing an Advisor or Declaring CS.

Exciting Aspects of Stanford CS

Research

Undergraduates in CS have opportunities to get involved in research. With faculty and resources that are among the strongest in the world, a great deal of leading-edge academic research has been and continues to be carried out at Stanford. If you show that you can do the work, you can get involved in this type of research as an undergraduate, which will provide you with extraordinarily valuable training for future work in the field. The department also has a special program, called CURIS, which provides research opportunities for students during the summer. Please see the Research page for more information.

Teaching

Undergraduates in CS have opportunities to get involved in teaching. The discussion sections for the introductory CS106 courses are led primarily by undergraduates. As a section leader, you'll have the chance to teach the next generation of CS majors and get them excited about programming. If you have done well in your CS courses and can demonstrate both an aptitude for and an interest in teaching, you should check out the online application!

Internships and Jobs

The Stanford CS department is right in the middle of Silicon Valley. The department has excellent connections to local companies (many of which were founded by people connected with the department). These connections provide help in getting summer internships as well as permanent positions after graduation. Check out the Recruiting page for more information.

Getting Started

The usual first step in learning about computer science is to take CS106. Even if you don't end up majoring in CS, this class will serve you well in most engineering and scientific disciplines. Because students enter Stanford with varying backgrounds, there are two different paths through the CS106 course.

The standard introductory sequence for students without significant background in computing is to take CS106A followed by CS106B. For those with some experience in programming (or who have passed the CS AP exam), you can reach basically the same point by taking the one-quarter course, CS106X.

CS106X covers the same topics as CS106B, but with more in-depth coverage and at a faster pace. Note that it is also possible to take CS106X (rather than CS106B) after taking CS106A. Even if you've had a considerable amount of prior programming experience, you might still want to take CS106X, particularly if you do not know C++. By doing so, you will learn a lot more about how to develop well-engineered software and get a more solid foundation for more advanced work than you are likely to have from high school programming courses.

If you haven't done much programming before or don't feel comfortable with your programming skills, take the CS106A/B sequence. Don't let anyone tell you that "real engineers take CS106X." Students who take the CS106A/B sequence still go on to be very successful computer scientists!

No matter which course you take, you will learn about the C++ programming language along with many fundamental programming concepts and software engineering techniques.

The Major Requirements

As a CS major, you are required to complete School of Engineering requirements (which include math, science, and engineering fundamentals), core CS classes, depth courses within a chosen track, and a senior capstone project. For the full major requirements, check out our Major Requirements page.

Our current tracks are:

For details about individual tracks and advice for choosing a track, see the tracks page. For more details about the specific academic requirements for each track, please refer to the relevant program sheet.

After Graduation

After Stanford, computer science majors typically have many options in terms of pursuing their interest in the field. Many students get jobs immediately after leaving Stanford, both here in Silicon Valley and elsewhere. Others choose to pursue graduate studies in computer science, specializing in a diverse set of areas. Since the computer science curriculum gives students a broad exposure to the subject matter within the field, graduates are usually prepared to pursue any subfield in their graduate studies.

For those who want to go on to graduate study, the first decision is whether to pursue a master's degree or a Ph.D. The master's degree usually consists of additional coursework and will give you a stronger foundation of the same sort you had as an undergraduate. Getting a Ph.D. is a much longer commitment (often five or more years), the core of which is an independent research project leading to a doctoral dissertation. Still other graduates choose to pursue other forms of graduate studies, obtaining an M.B.A., J.D., or M.D., after receiving their B.S. in computer science.

At Stanford, you can pursue both a B.S. and M.S. degree concurrently by participating in the coterminal master's program, or "coterm" for short. This program is extremely popular in computer science, with students from a variety of undergraduate backgrounds (including CS, CSE, EE, Psychology, etc.) pursuing an MSCS. You may apply to this program as soon as you've completed 120 units up until the quarter before you finish your undergraduate degree. Applications to the program are available from Graduate Admissions (in the Gates Building, Room 196) and differ very little from the regular application to the masters program in computer science. Students accepted to the coterminal program who have completed 180 units or more are officially considered graduate students and are therefore eligible to get teaching and research assistantships, graduate tuition rates, and so forth.

Options for Studying CS

Computer Science Major

At Stanford, most students interested in learning about computing major in computer science. Within the CS major, students can pursue many different interests such as artificial intelligence, programming languages, systems and networking, graphics, databases, theory of computation, human/computer interaction, robotics, and biocomputation. The CS major is quite flexible and meets the needs of most students.

Computer Science Minor

A minor in CS exposes students to the undergraduate core of the CS major and gives them the opportunity to explore the major without the full engineering or course requirements. It consists of six to eight classes and is suited for schedules permitting two years. By completing the minor, students will gain a strong foundation in programming fundamentals and will be introduced to the theoretical branch of Computer Science. Furthermore, through two electives, students can take more advanced classes in areas they find interesting.

Electrical Engineering

Some students interested in computer science, particularly those who are even more interested in hardware than those in CSE, major in electrical engineering, which has several undergraduate degree options that involve computer science. Like the CS department, the EE department is no longer ABET accredited. While such accreditation is useful in certain disciplines such as civil engineering, it has no practical significance whatsoever in computer science.

Mathematical and Computational Sciences

Mathematical and computational science (MCS) presents an opportunity to combine aspects of computer science with classes in pure mathematics. The major requires a core set of classes which include the introductory computer science classes (such as CS103 and CS106) along with a variety of math classes. Beyond these core classes, students are allowed to pick an emphasis in either computer science or mathematics, after which they select appropriate course work to complete the unit requirements for the major.

Symbolic Systems

Symbolic systems is an interdisciplinary program that combines computer science, psychology, philosophy, and linguistics in order to better understand cognition in both humans and machines. Viewing people and computers as symbol processors, the symbolic systems major strives to understand how people and computers reason, perceive, and act. Within the symbolic systems major, there is a core set of required classes; beyond this core, students choose an area of concentration in order to gain depth.

Content by CS Course Advisor
Last updated on Friday, 07-Jun-2019 19:52:24 PDT.
Design by Linda Nguyen, '05