![]() |
![]() |
|
|
Home .
FAQ .
Admissions .
Considering CS? .
Get Involved .
Program Planning .
Research .
Who to See .
Faculty .
Declare .
Xenon .
CSE
|
||
| Front Side of Program Sheet | Back Side of Program Sheet | ||
| Math
Requirement Science Requirement Engineering Fundamentals Technology in Society |
CS
107 CS 108 CS 154 CS 161 |
EE 108B Systems Electives CS 121/221 Application Elective |
Senior
Project Writing in the Major Restricted Electives |
Math Requirement
Math 41/42 or Math
19/20/21 - Calculus - (weekly problem sets, two
midterms and final)
If you recieved AP credit
placing you out of these courses, you can count that AP credit towards
the major instead of taking 41/42 as follows:
| AP Exam | Score | Do I have to take 41? | Do I have to take 42? |
| Math AB | 5 | No | No |
| Math AB | 4 | No | Yes |
| Math BC | 4 or 5 | No | No |
| Math BC | 3 | No | Yes |
Statistics - (weekly
problem
sets, midterm and final)
You must take either Stat 116, MS&E 120, or CME 106. AP
Statistics credit does not count towards the major. Stat 116 is a class
that meets every day for an hour. MS&E 120 meets three times a
week for about an hour and a half. If you have a limited interest in
statistics, some people recommend that you take the MS&E class
instead as it is somewhat less theoretical.
CS 103 - Discrete Mathematics and Structures
- (weekly problem sets, midterm and final)
CS 103 is an introduction to the type of math and theory which you will
see throughout the CS major. In order to satisfy the 103 requirement,
you can take the 103A/103B sequence, or you can take 103X. 103X covers
basically the same material as 103 A/B does, but it does so at a much
faster pace. In general, you should only take 103X if you have already
had some exposure to discrete math, or you are extremely comfortable
learning new mathematical concepts quickly. Check out the class
webpages to see what material is covered, so you can judge whether it
is stuff you are or will be comfortable with. If you take 103X, you
will need to take 3 electives to fulfill the major requirements. If you
take 103A/B, you will need to take 2 electives.
Math Electives
You need to take two of the following courses:
Science
Requirements
You must take 11 units of science.
Usually, once you have finished the Physics requirement and taken a
science elective, you will be well over 11 units, but if you are not,
then you must take more science electives until you have at least 11
units in total.
Physics - (weekly
problem sets, two midterms and final)
You need to
take Mechanics (physics 21, 53 or 61) and E&M (phsics 23, 55,
or 63) for the physics requirement. You are allowed to mix and match
between the series (so taking 53 and 23 is OK). However, note that
physics 21 and 23 are only 3 units each, and you need 11 units of
science. You can make up the extra units with science electives (see
below). You are not required to take the physics labs. In general,
almost any college level, first year physics class (that covers
mechanics and E&M) will transfer for the physics requirement,
so if you want to take physics at Foothill (the local community
college), or at home over the summer, that's usually OK - you just have
to take care of having the credit transferred (see the FAQ for transfer info). AP
units take care of the physics requirement as follows:
| AP Exam | Score | Do I have to take Mechanics? |
Do I have to take E&M? |
Units Towards 11-Unit Science Requirement |
| PhysicsB | 5 | No | No | 8 |
| PhysicsB | 4 | No | Yes | 4 |
| PhysicsC (both) | 4 or 5 | No | No | 9 |
| PhysicsC (both) | 3 | No | No | 8 |
| PhysicsC (Mech) | 4 or 5 | No | Yes | 4 |
| PhysicsC (Mech) | 3 | No | Yes | 4 |
| PhysicsC (E&M) | 4 or 5 | Yes | No | 5 |
| PhysicsC (E&M) | 3 | Yes | No | 4 |
Science Elective
You need to take at least one science elective. The list of approved science electives is
here, plus CS majors can take Psych 30 (Perception) or Psych 55 (Cognition and
the Brain). If you got a 4 or 5 on the Chemistry AP, that will count as 4 units of science
elective.
Engineering Fundamentals
CS 106 - Programming Abstractions/Methodology - (weekly
programming assignments, midterm and final)
CS106 is our introductory programming course. You can take it as a two quarter
sequence (CS 106A and 106B) or you can take the accelerated version CS
106X. 106X is recommended only for people who have already had some
exposure to programming or are extremely comfortable picking up
programming skills quickly. Technically, a 4 or 5 on the Computer
Science A or Computer Science AB exam fulfills the CS 106 requirement.
However, we strongly recommend that you take 106X
anyway. The 106's are some of our best courses. They are taught as a
lecture, but you will be assigned to a small section, where you will
get a lot of support and guidance as well as interactive grading. It is
also an introduction to how Computer Science works at Stanford, what
resources are available, and what is expected from students as far as
programming style. Last but not least, 106X (especially in the fall
quarter) will be a great way to meet lots of other people interested in
programming who might also be considering a CS major.
E40 - Introductory Electronics - (weekly problem sets,
labs, midterm and final)
E40 is an introduction to electronics offered by the EE department. Although there is
not any programming, the class is considered to be one of the more difficult classes
in the beginning of the major.
Engineering Fundamental Elective
You must take one additional
Engineering Fundamental. A list of Engineering fundamentals is listed here.
Note that you cannot count any version of CS 106 as a fundamental
elective.
Technology in Society
A list
of approved TIS courses is listed here.
You can take any one of them to fulfill the requirement. Also, if you
go abroad to the SCTI
program in Kyoto, the internship opportunities through those
programs will fufil the TIS requirement. For more information on this
option, contact the School of Engineering. If you are taking another
course that you feel should fulfill the TIS requirement, you'll need to
petition with the School of Engineering, see here
for more info.
CS
107 - Programming Paradigms - (weekly programming
assignments, midterm and final)
In CS 107 you will make the transition to programming on the UNIX machines. The
class usually spends a couple of weeks on nitty gritty C++ pointers and memory
management, and then a week or two each on LISP, and other programming
languages such as Python, Objective C, and C#. The class tends to have the
hardest assignments in the first few weeks (the C++ pointer stuff and
transitioning to UNIX) and then gets a bit easier as you get into the other
paradigms.
CS 108 - Object Oriented Systems - (weekly
programming assignments, midterm and final)
Considered by many to be the first "rite of passage" in the major,
CS108 is where you will write the infamous Bunny World. Bunny World is
the first open-ended, group project in the CS major, and the idea is to
give students a taste of this kind of assignment before they start
taking upper level classes (which almost all have group projecs).
Although 108 is not technically a prerequisite for many classes, we
recommend that you try to take it before launching into the upper level
CS classes unless you are quite comfortable with groupwork and open
ended projects.
CS
154 - Intro to Automata and Complexity Theory - (weekly problem sets,
midterm and final)
This is a pretty theoretical class and although not exactly time
intensive, some people have trouble with the very abstract material. A
good way to judge how hard this class (as well as CS 161) will be for
you is to think about how comfortable you were with the material
presented in CS 103 - especially the stuff towards the end.
CS
161 - Design and Analysis of Algorithms - (problem sets, midterm
and final)
The material in this theory course is somewhat difficult, but not as
abstract as 154. You'll learn many different algorithms that can be super
useful in solving problems you may encounter down the round (especially
in interviews).
EE 108B - Digital Systems II - (4-5problem sets, 2
programming assignments, midterm and final)
EE 108B officially lists EE 108A as a prerequisite, but as a CS major, you are not
required to take 108A. From what we have been told, 108A is mostly a prerequisite for
the lab portion of the class, and CS majors are not required to take the lab.
2
Systems Electives
You need to take 2 Systems
Electives and one of them must be 140 or 143. In general, the systems
electives get easier as you take more of them. For example people
who've taken 143 find that they have an easier time in 242 and vice
versa.
CS
121/221 Intro to Artificial Intelligence - (mix of
problem sets and programs, midterm and final)
You must take either 121 or 221, both of which are an introduction to
the field of AI. 121 is considered one of the easiest courses in the
major, and 221 is considered one of the hardest (but also one of the
best and most rewarding). If you have any interest in taking upper
level courses in AI, you should probably take 221 since it is a much
more rigorous introduction to the field and some upper level courses
will require 221 as a prerequisite. 221 also teaches abstract problem
solving and algorithm design skills that transcend AI, so even if you
are not sure you are interested in AI, it is a worthwhile course. The
problem sets in 221 are conceptually difficult and will take a
significant amout of time, so be prepared. The final project in 221 is
the infamous Othello competition (students write an AI powered Othello
player and play them against each other).
Application
Elective
You need to take one of the following
Application Electives
Senior
Project
Please see the Senior
Project page for more information.
Writing
in the Major
Almost everyone fulfills the WIM
requirement when they do Senior Project. If you took CS 201 for your
TIS requirement, then you do not need to fulfill WIM with Senior
Project. This means that you will be able to skip some of the writing
assignments in your Senior Project class. WIM is the only
requirement that can be fulfilled by a class that also fulfills another
requirement (so taking 194 or 191W fulfills the Senior Project
Requirement as well as the WIM requirement).
Restricted
Electives
If you took CS 103A/B, you need to take 2 CS Electives. If you took CS
103X, you need to take 3 CS Electives. Whether you took 106A/B or 106X
has no effect on how many electives you need to take. You must take the
electives in addition to the courses you take to fulfill other
requirements. For example, if you take CS140, it can count as a Systems
Elective or a Restricted Elective, but not both. A list of approved
electives is listed on the program
sheets. Many people use the electives to either explore more
introductory classes in other areas of CS, or pursue a particular
interest in more depth by taking some of the higher level grad classes.
Many of the elective options are already described in different parts
of this page, so please see those descriptions. The rest, you'll have
to find out about yourself. The best way to do this is to check out
previous versions of the class website.
If you have a class that you feel should count as a restricted elective
but is not on the list, you should first check the program sheets from
other years. If a class was approved as a restricted elective during
the year that you took it, you can use it as an elective on any other
year's sheet. If not, you can send an email to Jerry Cain (jerry@cs)
with a cc to Claire Stager (stager@cs). Keep in mind that classes that
are numbered below 100 (including freshman seminars) or above 400 are
not usually approved as restricted electives. The 193's also are not
approved.
![]()
![]() |
Stanford University Computer Science Site content maintained by the CS Course Advisor. Design by Linda Nguyen, '05. 01010011 01110111 01100101 01100101 01110100 01001000 01100001 01101100 01101100 01001100 01101111 01110110 01100101 00100001 |