Bulletin

Interested in attending Stanford?
Visit Undergraduate Admissions opens in a new tab or Graduate Admissions opens in a new tab.

Resources

  • About Stanford
  • About Bulletin
  • Academic Calendar opens in a new tab
  • Bulletin Archive
  • Enrollment Overview opens in a new tab
  • Enrollment Deadlines opens in a new tab
  • Degrees at a Glance

Schools

  • Doerr School of Sustainability opens in a new tab
  • Graduate School of Business opens in a new tab
  • Graduate School of Education opens in a new tab
  • School of Engineering opens in a new tab
  • School of Humanities and Science opens in a new tab
  • School of Law opens in a new tab
  • School of Medicine opens in a new tab
Give Feedback

Stanford University is accredited by the Accrediting Commission of Senior Colleges and Universities of the Western Association of Schools and Colleges opens in a new tab.

Give Feedback
Stanford
University
  • Stanford Home
  • Maps & Directions
  • Search Stanford
  • Emergency Info
  • Terms of Use
  • Privacy
  • Copyright
  • Trademarks
  • Non-Discrimination
  • Accessibility
© Stanford University.  Stanford, California 94305.
Skip to main content
Stanford University
Bulletin
Computer Science
School of Engineering
  • Major
  • Minor
Program Info
  • About the Program
  • Major: Bachelor of Science
    • Preparing for the Major
    • Policies
    • Learning Outcomes
  • Minor
  • Courses
  • Contact Us
Undergrad Info
  • Admissions
  • Advising
  • General Education
Loading major preparation
  1. Home
  2. Programs
  3. Undergraduate
  4. Computer Science
  5. Bachelor of Science
  6. Preparing for the Major

Preparing for the Major

Guide to Choosing Introductory Courses

Students arriving at Stanford have widely differing backgrounds and goals, but most find that using computers effectively benefits their education. The department offers many introductory courses to meet the needs of these students.

For students whose principal interest is exposure to the fundamental ideas behind computer science and programming, CS 101 or CS 105 are the most appropriate courses. They are intended for students in nontechnical disciplines who expect to make some use of computers but do not expect to go on to more advanced courses. CS 101 and CS 105 meet the Ways of Thinking Ways of Doing breadth requirements in Formal Reasoning and include an introduction to programming and the use of modern Internet-based technologies. Students interested in computer use should consider CS 1C, Introduction to Computing at Stanford.

Students who intend to pursue a serious course of study in computer science may enter the program at various levels, depending on their background. Students with little prior experience or those who wish to take more time to study the fundamentals of programming should take CS 106A, followed by CS 106B. Students in CS 106A need not have prior programming experience. Students with significant previous exposure to programming or those who want an intensive introduction to the field may start directly in CS 106B. CS 106A uses Python as its programming language; CS 106B uses C++. No prior knowledge of these languages is assumed, and the previous programming experience required for CS 106B may be in any language. In all cases, students are encouraged to discuss their background with the instructors responsible for these courses.

After the introductory sequence, Computer Science majors and those needing a significant computer science background for related engineering majors should take CS 103, CS 107, and CS 110 or CS 111. CS 103 offers an introduction to the mathematical and theoretical foundations of computer science. CS 107 exposes students to various programming concepts that illustrate critical strategies used in systems development; CS 110 and CS 111 build on this material, focusing on the development of larger-scale software, using systems and networking abstractions.

In summary:

For Exposure:

  • CS1C opens in a new tab: Introduction to Computing at Stanford

For nontechnical use:

  • CS101: opens in a new tabIntroduction to Computing Principles OR CS105: opens in a new tabIntroduction to Computers

For scientific use and a technical introduction:

  • CS106A: opens in a new tabProgramming Methodology

For significant use:

  • CS106A: opens in a new tabProgramming Methodology & CS 106B: Programming Abstractions

  • CS103: opens in a new tabMathematical Foundations of Computing

  • CS107: opens in a new tabComputer Organization and Systems

  • CS 110: Principles of Computer Systems OR CS111: opens in a new tabOperating Systems Principles

Overseas Studies Courses in Computer Science

See the listings in ExploreCourses opens in a new tab or the Bing Overseas Studies website opens in a new tab for course descriptions and additional offerings. Students should consult their department or program’s student services office for the applicability of Overseas Studies courses to a major or minor program.

See the Handbook for Undergraduate Engineering Programs (UGHB) opens in a new tab for additional information and sample programs,

Declaring the Major

Declaring the major is a straightforward process, and there are no specific course or major requirements you need to complete beforehand. Please note that processing can take up to two weeks, and we’re unable to expedite requests. We encourage students to plan ahead, especially if you have a target date for declaring. Additionally, keep in mind that we do not process declarations during finals week, academic breaks, or the Summer quarter. To get started, please follow the how to declare opens in a new tab steps outlined on the CS website.