# Computer Science Program

### From Undergraduate Engineering Handbook

(26 intermediate revisions not shown) | |||

Line 1: | Line 1: | ||

- | == | + | == 2016-17 Computer Science Program Requirements<br> == |

*UG Director: Mehran Sahami, Gates 180, sahami@cs.stanford.edu<br> | *UG Director: Mehran Sahami, Gates 180, sahami@cs.stanford.edu<br> | ||

*Student Services Meredith Hutchin, 193 Gates, hutchin@cs.stanford.edu<br> | *Student Services Meredith Hutchin, 193 Gates, hutchin@cs.stanford.edu<br> | ||

- | *Dept Chair: | + | *Dept Chair: Alex Aiken, chair@cs.stanford.edu<br> |

Looking at technology today, it is hard to believe that the first computers were developed only seventy years ago. Computers are everywhere, and much of modern engineering involves the application of computer technology. The undergraduate major in computer science offers a broad and rigorous training for students interested in the science of computing. The track structure of the CS program also allows you to pursue the area(s) of CS you find most interesting while giving you a solid overall foundation in the field. | Looking at technology today, it is hard to believe that the first computers were developed only seventy years ago. Computers are everywhere, and much of modern engineering involves the application of computer technology. The undergraduate major in computer science offers a broad and rigorous training for students interested in the science of computing. The track structure of the CS program also allows you to pursue the area(s) of CS you find most interesting while giving you a solid overall foundation in the field. | ||

Line 12: | Line 12: | ||

The Computer Science Department also participates in two interdisciplinary majors: Mathematical and Computational Sciences, and Symbolic Systems.<br> | The Computer Science Department also participates in two interdisciplinary majors: Mathematical and Computational Sciences, and Symbolic Systems.<br> | ||

+ | |||

+ | Joint Majors in CS + one of 10 Humanities majors: Joint majors follow the full CS requirements but can drop two CS depth electives. Read the notes for each track's Depth requirements for<br>specific details. For further detail on the Joint Majors and how to declare go to [https://exploredegrees-nextyear.stanford.edu/schoolofengineering/#jointmajorwithcstext Explore Degrees, CS Joint Majors].<br> | ||

== <br>Undergraduate Research Opportunities == | == <br>Undergraduate Research Opportunities == | ||

Line 19: | Line 21: | ||

'''CURIS (Undergraduate Research in Computer Science)'''<br>Each summer undergraduates work with CS faculty through the summer research college. Interested students apply for positions during the winter quarter, and CURIS decisions are then made and offers sent out before spring quarter begins. These positions are fully-funded and provide invaluable experience in cutting-edge research. All CS students are notified via email of CURIS opportunities and the application process. | '''CURIS (Undergraduate Research in Computer Science)'''<br>Each summer undergraduates work with CS faculty through the summer research college. Interested students apply for positions during the winter quarter, and CURIS decisions are then made and offers sent out before spring quarter begins. These positions are fully-funded and provide invaluable experience in cutting-edge research. All CS students are notified via email of CURIS opportunities and the application process. | ||

- | + | '''Research Seminars and Talks''' <br>At various times throughout the year the CS department hosts talks and presentations on various research and technology topics. In addition to these one-time events, there are regularly scheduled seminars that are open to undergraduates. Many of these seminars are available as 1 unit, 500-level courses, but enrollment is not required for attendance. | |

- | + | ||

- | + | ||

- | + | ||

- | '''Research Seminars and Talks''' <br>At various times throughout the year the CS department hosts talks and presentations on various research and technology topics. In addition to these one-time events, there are regularly scheduled seminars | + | |

'''For Students Interested in Pursuing a Research-Oriented Undergraduate Program: '''<br>''Freshman and Sophomore Year''<br>Students interested in pursuing research should plan to finish the majority of the CS core (CS 103, 106, 107, 109, 110, and 161) by the end of the sophomore year. If you already have an idea of the area in CS you'd like to pursue, you may find these course suggestions useful:<br>If you’re considering… <br> | '''For Students Interested in Pursuing a Research-Oriented Undergraduate Program: '''<br>''Freshman and Sophomore Year''<br>Students interested in pursuing research should plan to finish the majority of the CS core (CS 103, 106, 107, 109, 110, and 161) by the end of the sophomore year. If you already have an idea of the area in CS you'd like to pursue, you may find these course suggestions useful:<br>If you’re considering… <br> | ||

Line 44: | Line 42: | ||

Students doing summer research through CURIS should expect to take a course or two spring quarter to prepare them for their research project. <br> | Students doing summer research through CURIS should expect to take a course or two spring quarter to prepare them for their research project. <br> | ||

- | <br>''Senior Year''<br>At the end of the junior year students who qualify are encouraged to apply for the CS honors program (see the Computer Science ‘honors’ section in Chapter 6). Students who are accepted spend the senior year exploring a research topic in depth and writing an honors thesis. | + | <br>''Senior Year''<br>At the end of the junior year students who qualify are encouraged to apply for the CS honors program (see the Computer Science ‘honors’ section in Chapter 6). Students who are accepted spend the senior year exploring a research topic in depth and writing an honors thesis. <br> |

Note: The above are meant to be taken only as suggestions. If you have questions, contact the CS course advisor at advisor@cs.stanford.edu.<br><br> | Note: The above are meant to be taken only as suggestions. If you have questions, contact the CS course advisor at advisor@cs.stanford.edu.<br><br> | ||

Line 54: | Line 52: | ||

'''(26 units minimum; see program sheet footnotes for options and restrictions)'''<br> | '''(26 units minimum; see program sheet footnotes for options and restrictions)'''<br> | ||

- | *MATH 41 & 42. Calculus, 10 units, Aut-Wtr ( | + | *MATH 19, 20, 21, OR 41 & 42. Calculus, 10 units, Aut-Wtr (or AP credit) -- Freshman year |

- | *CS 103. Mathematical Foundations of Computing, 5 units, Aut-Wtr | + | *CS 103. Mathematical Foundations of Computing, 5 units, Aut-Wtr-- Freshman year |

*CS 109. Introduction to Probability for Computer Scientists, 5 units, Wtr-Spr -- Sophomore year | *CS 109. Introduction to Probability for Computer Scientists, 5 units, Wtr-Spr -- Sophomore year | ||

- | *Mathematics electives, 6 units -- see footnotes on program sheets | + | *Mathematics electives, two required, 6 units minimum -- see footnotes on program sheets |

=== '''Science '''<br> === | === '''Science '''<br> === | ||

Line 71: | Line 69: | ||

'''(13 units minimum)'''<br> | '''(13 units minimum)'''<br> | ||

- | *ENGR 40 or ENGR 40A or ENGR | + | *ENGR 40 or ENGR 40A or ENGR 40M. Introductory Electronics or Making Stuff: What is EE, 3-5 units ( if one of these courses is taken for fewer than 5 units, students are required to complete 2 additional units of of ENGR Fundamentals or CS depth)-- Sophomore year |

*CS 106B or CS 106X. Programming Abstractions or Accelerated version. 5 units -- Freshman or Sophomore year | *CS 106B or CS 106X. Programming Abstractions or Accelerated version. 5 units -- Freshman or Sophomore year | ||

- | *Fundamentals Elective (see list of approved courses in Fig. 3-4; may not be 106A, B or X) | + | *Fundamentals Elective (see list of approved courses in Fig. 3-4; may not be 106A, B or X or second 40-series course) |

=== '''Technology in Society '''<br> === | === '''Technology in Society '''<br> === | ||

- | '''(One course, 3-5 units)''' See list of approved courses | + | '''(One course, 3-5 units)''' See list of approved courses on Approved Courses page of UGHB website; a course must be on list the year it is taken<br> |

=== <br>'''Writing in the Major '''<br> === | === <br>'''Writing in the Major '''<br> === | ||

Line 85: | Line 83: | ||

=== '''Core '''<br> === | === '''Core '''<br> === | ||

- | '''(14 units)''' '''<span style="color: rgb(153, 0, 0);">See Program Sheet footnotes for crucial details about Core & Depth course and unit requirements</span>'''<br>CS 107. Computer Organization and Systems, 5 units, AWS -- Sophomore year<br>CS 110. Principles of Computer Systems, 5 units, AWS So/Jr<br>CS 161. Design and Analysis of Algorithms, 5 units, | + | '''(14 units)''' '''<span style="color: rgb(153, 0, 0);">See Program Sheet footnotes for crucial details about Core & Depth course and unit requirements</span>'''<br>CS 107 or 107E. Computer Organization and Systems, 5 units, AWS or S-- Sophomore year<br>CS 110. Principles of Computer Systems, 5 units, AWS So/Jr<br>CS 161. Design and Analysis of Algorithms, 5 units, AW So/Jr<br> |

+ | |||

+ | === Senior Project<br> === | ||

+ | |||

+ | <br>CS 191, 191W, 194, 194H, 194W, 210B, 294, or 294W (see Note 8 below) 3 units, Sr<br> | ||

=== Depth <br> === | === Depth <br> === | ||

Line 93: | Line 95: | ||

*'''Artificial Intelligence Track''' | *'''Artificial Intelligence Track''' | ||

- | a) CS 221<br>b) Any two of: CS 223A | + | a) CS 221<br>b) Any two of: CS 223A, 224N, 228, 229, 131 or 231A<br>c) One additional course from category (b) or the following: CS 124, 205A, 224S, 224U, 224W, 225A, 227B, 213A (if not taken for Track Requirement B) 231B, 231M, 231N, 262, 276, 277, 279, 327A, 329 (with advisor approval), 331A, 371, 374, 379 (with advisor approval); EE 263, 376A; ENGR 205, 209A; MS&E 251, 351; Stat 315A, 315B<br>d) Track Electives: At least three additional courses selected from (b), (c), the general CS electives list, or the following: CS 238, 275, CS 334A or EE 364A; EE 278, 364B; ECON 286; MS&E 252, 352, 355; PHIL152; PSYCH 202, 204A, 204B; STATS 200, 202, 205. (Joint Majors take one additional course, not three.)<br><br> |

*'''BiocomputationTrack: ''' <br> | *'''BiocomputationTrack: ''' <br> | ||

Line 101: | Line 103: | ||

*'''Computer Engineering Track''' | *'''Computer Engineering Track''' | ||

- | a) EE 108A, | + | a) EE 108A, 180<br>b) Any two of: EE 101A, 101B, 102A, 102B. (Joint Majors take one course, not two.)<br>c) Satisfy the requirements of one of the following concentrations:<br>1. Digital Systems concentration:<br>CS 140 or 143; EE 109, 271<br>Any two of: CS140 or 143 (if not counted above), 144, 149, 240E, 244; EE 273, 282. (Joint Majors take one course, not two.)<br>2. Robotics and Mechatronics concentration:<br>CS 205A, 223A; ME 210, ENGR 105<br>Any one of: CS 225A, 231A, 277; ENGR 205, 207B. (Joint Majors do not need to take one of these courses.)<br>3. Networking concentration: <br>CS 140, 144<br>Any three of: CS 240, 240E, 241, 244, 244B, 244E, 249A; EE 179, 276. (Joint Majors take two courses, not three.)<br> |

*'''Graphics Track''' | *'''Graphics Track''' | ||

- | a) CS 148, 248<br>b) Any one of: CS 205A; CME 104, 108; Math 52, 113<br>c) Any two of: CS | + | a) CS 148, 248<br>b) Any one of: CS 205A (strongly recommended); CME 104 (prereq of CME 102), 108; Math 52, 113<br>c) Any two of: CS 178, 205B, 131A or 231A, 233, 268, 348A, 348B, 348C, 448<br>d) Track Electives: At least two additional courses selected from (b), (c), the general CS electives list (see Note 9 below), or the following: ARTSTUDI 160, 170, 179; CME 302, 306; EE 168, 262, 264, 278, 368; ME 101; PSYCH 30, 221. (Joint Majors waive these two electives.)<br> |

- | *'''Human-Computer Interaction Track''' | + | *'''Human-Computer Interaction Track'''<br> |

- | a) CS 147 | + | a) CS 147, 247 |

- | b) Any | + | b) Any three of: CS 142, 148, 194H, 210A, 376, 377 ‘Topics in HCI’ courses of three or more units, 448B; ME216M |

+ | |||

+ | c) At least two additional courses selected from (b), the general CS electives list 6, or the following: ArtStudio 160, 162, 163, 164, 165, 168, 264, 266, 267; COMM 121, 124/224, 140/240, 166, 169/269, 172/272, 182, 324; EDUC 191X, 236, 281X, 239X, 338X, 342; HUMBIO 82A; MS&E 125, 185, 331; ME 101, 115A, 203, 210, 216A; MUSIC 220A, 220B, 220C, 250A, 256A; PYSCH 30, 45, 70, 75, 110, 131, 154, 252, 254; SYMSYS 145/245; STATS 203; any class of three or more units at hci.stanford.edu under the 'courses' link; any d.school class of three or more units. (Joint Majors waive these two courses.) <br><u>Example HCI Depth course plans: </u><br>Design Thinking: CS 147, 247, 448B, 142, 194H, ME 101, 115A <br>Front-End Development: CS 147, 247, 142, 448B, 194H, 148, 221 <br>User Experience: CS 147, 247, 194H, 210A, 376, COMM 121, MS&E 125 <br>Product Management: CS 147, 247, 194H, 210A, 142, COMM 169, 140 <br>Digital Art: CS 147, 247, 148, 448B, 142, ARTSTUDI 160, 168 <br>Research Frontiers: CS 147, 247, 376, 448B, ME 216M, COMM 124, 166, PSYCH 252<br> | ||

*'''Information Track''' | *'''Information Track''' | ||

- | a) CS 124, 145<br>b) Two courses, which must be from different areas below:<br> i. Information-based AI applications: CS 224N, 224S, 229<br> ii. Database and Information Systems: CS 140, 142, 245, 246, 341, 345, 346, 347<br> iii .Information Systems in Biology: CS262, 270, 274<br> iv. Information Systems on the Web: CS 224W, 276 | + | a) CS 124, 145<br>b) Two courses, which must be from different areas below:<br> i. Information-based AI applications: CS 224N, 224S, 229, 233<br> ii. Database and Information Systems: CS 140, 142, 245, 246, 341, 345, 346, 347<br> iii. Information Systems in Biology: CS262, 270, 274<br> iv. Information Systems on the Web: CS 224W, 276<br>c) At least three additional courses selected from (b) or the general CS electives list (see Note below). (Joint Majors take one course, not three)<br> |

*'''Systems Track''' | *'''Systems Track''' | ||

- | a) CS 140<br>b) One of: CS 143 or EE | + | a) CS 140<br>b) One of: CS 143 or EE 180<br>c) Two additional courses from category (b) or the following: CS 144, 145, 149, 155, 240, 242, 243, 244, 245; EE 271, 282<br>d) Track Electives: At least three additional courses selected from (c), the general CS electives list (see Note below), or the following: CS 240E, 241, 244E, 315A, 315B, 341, 343, 344 (3 or more units, any suffix), 344E, 345, 346, 347, 349 (with advisor approval), 448; EE 108, 382C, 384A, 384B, 384C, 384S, 384X (Joint Majors take one course, not three)<br> |

*'''Theory Track''' | *'''Theory Track''' | ||

- | a) CS 154<br>b) Any one of: CS | + | a) CS 154<br>b) Any one of: CS 167, 168, 255, 258, 261, 264, 265, 268<br>c) Two additional courses from category (b) or the following: CS 143, 155, 157 or Phil 151, 205A, 228, 233, 242, 250, 251, 254, 259 (with advisor approval), 262, 263, 266, 354, 355, 357, 358, 359 (with advisor approval), 364A, 367, 369 (with advisor approval), 374; MS&E 310<br>d) Track Electives: At least three additional courses selected from (b), (c), the general CS electives list (see Note below), or the following: CME 302, 305; Phil 152 (Joint Majors take one course, not three)<br> |

*'''Unspecialized Track''' | *'''Unspecialized Track''' | ||

- | a) CS 154<br>b) Any one of: CS 140, 143<br>c) One additional course from (b) or the following: CS 144, 155, 242, 244; EE | + | a) CS 154<br>b) Any one of: CS 140, 143<br>c) One additional course from (b) or the following: CS 144, 155, 242, 244; EE 180<br>d) Any one of: CS 221, 223A, 228, 229, 231A<br>e) Any one of: CS 145, 147, 148, 248, 262<br>f) At least two courses from the general CS electives list (see Note below) (Joint Majors waive these two courses)<br> |

*'''Individually Designed Track:''' Students may propose an individually designed track. Proposals should include a minimum of seven courses, at least four of which must be CS courses numbered 100 or above<br> | *'''Individually Designed Track:''' Students may propose an individually designed track. Proposals should include a minimum of seven courses, at least four of which must be CS courses numbered 100 or above<br> | ||

- | '''Note''': < | + | '''Note'''s: |

+ | |||

+ | 1. MATH 19, 20 and 21 or AP Calculus may be used instead of MATH 41 and 42, as long as at least 26 math units are taken.<br>2. The Mathematics electives list consists of: Math 51, 104, 108, 109, 110, 113; CS 157, 205A; PHIL 151; CME 100, 102, 103 (or EE 103), 104. Completion of Math 52 and 53 will (together) count as one Math elective. Restrictions: CS 157 and PHIL 151 may not be used in combination to satisfy the Math electives requirement. Students who have taken both Math 51 and 52 may not count CME 100 as an elective.<br>3. Any course of 3 or more units from the School of Engineering list of “Courses Approved for the Science Requirement” (Figure 3-2); PSYCH 30; PSYCH 55, or AP Chemistry credit may also be used. Either of the physics sequences 61/63 or 21/23 may be substituted for 41/43 as long as at least 11 science units are taken.<br>4. Students who complete ENGR 40A, or take 40M for fewer than 5 units, are required to complete one-two additional units of Engineering Fundamentals, or one-two additional units of Depth <br>5. CS 191 and 191W independent study projects require faculty sponsorship and must be approved, in advance, by the advisor, faculty sponsor, and the CS senior project advisor (Patrick Young). A form bearing these signatures, along with a brief description of the project, should be filed with the department representative in Gates 160 the quarter before work on the project is begun.<br>6. General CS Electives: CS 108, 124, 131, 140, 142, 143, 144, 145, 147, 148, 149, 154, 155, 157 or Phil 151, 164, 166, 167, 168, 190, 205A, 205B, 210A, 221, 223A, 224N, 224S, 224U, 224W, 225A, 227B, 228, 228T, 229, 229A, 229T, 231A, 231B, 231M, 231N, 232, 233, 240, 240H, 242, 243, 244, 244B, 245, 246, 247, 248, 249A, 251, 254, 255, 261, 262, 263, 264, 265, 266, 267, 270, 272, 173 or 273A, 274, 276, 279, 348B; CME 108; EE 180, 282, 364A.<br>7. Of the category (b) options for the Graphics track, CS 205A is strongly recommended as a preferred choice. Note that students taking CME 104 are also required to take its prerequisite course CME 102.<br> | ||

=== Declaring CS<br> === | === Declaring CS<br> === | ||

For instructions on declaring CS, go the the [http://cs.stanford.edu/degrees/undergrad/Declare.shtml Declaring] page on the CS site.<br><br> | For instructions on declaring CS, go the the [http://cs.stanford.edu/degrees/undergrad/Declare.shtml Declaring] page on the CS site.<br><br> |

## Latest revision as of 15:42, 16 August 2016

## Contents |

## 2016-17 Computer Science Program Requirements

- UG Director: Mehran Sahami, Gates 180, sahami@cs.stanford.edu

- Student Services Meredith Hutchin, 193 Gates, hutchin@cs.stanford.edu

- Dept Chair: Alex Aiken, chair@cs.stanford.edu

Looking at technology today, it is hard to believe that the first computers were developed only seventy years ago. Computers are everywhere, and much of modern engineering involves the application of computer technology. The undergraduate major in computer science offers a broad and rigorous training for students interested in the science of computing. The track structure of the CS program also allows you to pursue the area(s) of CS you find most interesting while giving you a solid overall foundation in the field.

Many students obtaining a BS in CS will go on to work in industry or do graduate work in a branch of CS such as artificial intelligence, robotics, software design, graphics, theory, or hardware design. But CS is not just for future computer scientists. There is an increasing demand for people trained in CS and some other field. If you are interested in working as a manager of a high-tech company, a BS in CS along with an MBA is a great combination. If you want to work on court cases involving software piracy, you will be well served by a BS in CS combined with a JD. Similar opportunities exist for those who combine a BS in CS with an MD or other graduate degree.

The minimum major in computer science consists of 96 units, including 26 units of math, 11 units of science, 13 units of engineering fundamentals, one course in TIS (Technology in Society), and 43 units of core depth. After learning essential programming techniques in CS106 (via the CS106A/B/X courses) and the mathematical foundations of computer science in CS103, the computer science major offers coursework in areas such as artificial intelligence, biocomputation, computer engineering, graphics, human-computer interaction, information, systems, and theory.

The Computer Science Department also participates in two interdisciplinary majors: Mathematical and Computational Sciences, and Symbolic Systems.

Joint Majors in CS + one of 10 Humanities majors: Joint majors follow the full CS requirements but can drop two CS depth electives. Read the notes for each track's Depth requirements for

specific details. For further detail on the Joint Majors and how to declare go to Explore Degrees, CS Joint Majors.

##

Undergraduate Research Opportunities

In addition to the honors program in CS (see the link to Honors on the home page of this site), there are many opportunities for undergraduates to get involved in research. Here is a partial list:

**CURIS (Undergraduate Research in Computer Science)**

Each summer undergraduates work with CS faculty through the summer research college. Interested students apply for positions during the winter quarter, and CURIS decisions are then made and offers sent out before spring quarter begins. These positions are fully-funded and provide invaluable experience in cutting-edge research. All CS students are notified via email of CURIS opportunities and the application process.

**Research Seminars and Talks**

At various times throughout the year the CS department hosts talks and presentations on various research and technology topics. In addition to these one-time events, there are regularly scheduled seminars that are open to undergraduates. Many of these seminars are available as 1 unit, 500-level courses, but enrollment is not required for attendance.

**For Students Interested in Pursuing a Research-Oriented Undergraduate Program: ***Freshman and Sophomore Year*

Students interested in pursuing research should plan to finish the majority of the CS core (CS 103, 106, 107, 109, 110, and 161) by the end of the sophomore year. If you already have an idea of the area in CS you'd like to pursue, you may find these course suggestions useful:

If you’re considering…

- Possible AI courses: make sure to take CS 109 freshman/sophomore year
- Possible graphics courses: make sure to take Math 51 and/or Math 104 freshman/sophomore year
- Possible theory courses: make sure to take CS 109, CS 154, or CS 161 freshman/sophomore year

Students doing summer research through CURIS should expect to take a course or two spring quarter to prepare them for their research project.

*Junior Year*

During the junior year students considering research can take one of the following sequences, depending upon your field of interest:

- Artificial Intelligence: Autumn: CS 221, Winter: Any 22X, Spring: Coursework suggested by CURIS advisor
- Databases: Autumn: CS 145, Winter: CS 245, Spring: Coursework suggested by CURIS advisor
- Graphics: Autumn: CS 148, Winter: CS 248, Spring: Coursework suggested by CURIS advisor
- Human-Computer Interaction: Autumn: CS 147, Winter: CS 247, Spring: Coursework suggested by CURIS advisor
- Systems: Autumn: CS 144, Winter: CS 140, Spring: Coursework suggested by CURIS advisor
- Theory: Autumn: CS 157 & 161, Winter: CS 259, Spring: Coursework suggested by CURIS advisor

Students doing summer research through CURIS should expect to take a course or two spring quarter to prepare them for their research project.

*Senior Year*

At the end of the junior year students who qualify are encouraged to apply for the CS honors program (see the Computer Science ‘honors’ section in Chapter 6). Students who are accepted spend the senior year exploring a research topic in depth and writing an honors thesis.

Note: The above are meant to be taken only as suggestions. If you have questions, contact the CS course advisor at advisor@cs.stanford.edu.

## CS Requirements

### **Mathematics **

**(26 units minimum; see program sheet footnotes for options and restrictions)**

- MATH 19, 20, 21, OR 41 & 42. Calculus, 10 units, Aut-Wtr (or AP credit) -- Freshman year
- CS 103. Mathematical Foundations of Computing, 5 units, Aut-Wtr-- Freshman year
- CS 109. Introduction to Probability for Computer Scientists, 5 units, Wtr-Spr -- Sophomore year
- Mathematics electives, two required, 6 units minimum -- see footnotes on program sheets

### **Science **

**(11 units minimum)**

- PHYSICS 41 (or 21 or 61). Mechanics, 4 units, Wtr -- Freshman year
- PHYSICS 43 (or 23 or 63). Electricity and Magnetism, 4 units, Spr -- Freshman year
- Science Elective (see footnotes on program sheets for options and restrictions)

### **Engineering Fundamentals **

**(13 units minimum)**

- ENGR 40 or ENGR 40A or ENGR 40M. Introductory Electronics or Making Stuff: What is EE, 3-5 units ( if one of these courses is taken for fewer than 5 units, students are required to complete 2 additional units of of ENGR Fundamentals or CS depth)-- Sophomore year
- CS 106B or CS 106X. Programming Abstractions or Accelerated version. 5 units -- Freshman or Sophomore year
- Fundamentals Elective (see list of approved courses in Fig. 3-4; may not be 106A, B or X or second 40-series course)

### **Technology in Society **

**(One course, 3-5 units)** See list of approved courses on Approved Courses page of UGHB website; a course must be on list the year it is taken

###

**Writing in the Major **

**One course:** Choose from CS 181W, 191W, 194W, 210B, or 294W

### **Core **

**(14 units)** **See Program Sheet footnotes for crucial details about Core & Depth course and unit requirements**

CS 107 or 107E. Computer Organization and Systems, 5 units, AWS or S-- Sophomore year

CS 110. Principles of Computer Systems, 5 units, AWS So/Jr

CS 161. Design and Analysis of Algorithms, 5 units, AW So/Jr

### Senior Project

CS 191, 191W, 194, 194H, 194W, 210B, 294, or 294W (see Note 8 below) 3 units, Sr

### Depth

**Choose one of the following tracks: minimum of 7 courses (25 units minimum required)**

**Artificial Intelligence Track**

a) CS 221

b) Any two of: CS 223A, 224N, 228, 229, 131 or 231A

c) One additional course from category (b) or the following: CS 124, 205A, 224S, 224U, 224W, 225A, 227B, 213A (if not taken for Track Requirement B) 231B, 231M, 231N, 262, 276, 277, 279, 327A, 329 (with advisor approval), 331A, 371, 374, 379 (with advisor approval); EE 263, 376A; ENGR 205, 209A; MS&E 251, 351; Stat 315A, 315B

d) Track Electives: At least three additional courses selected from (b), (c), the general CS electives list, or the following: CS 238, 275, CS 334A or EE 364A; EE 278, 364B; ECON 286; MS&E 252, 352, 355; PHIL152; PSYCH 202, 204A, 204B; STATS 200, 202, 205. (Joint Majors take one additional course, not three.)

**BiocomputationTrack:**

See Biocomputation Track program sheet; Mathematics, Science, and Engineering Fundamentals requirements are non-standard

**Computer Engineering Track**

a) EE 108A, 180

b) Any two of: EE 101A, 101B, 102A, 102B. (Joint Majors take one course, not two.)

c) Satisfy the requirements of one of the following concentrations:

1. Digital Systems concentration:

CS 140 or 143; EE 109, 271

Any two of: CS140 or 143 (if not counted above), 144, 149, 240E, 244; EE 273, 282. (Joint Majors take one course, not two.)

2. Robotics and Mechatronics concentration:

CS 205A, 223A; ME 210, ENGR 105

Any one of: CS 225A, 231A, 277; ENGR 205, 207B. (Joint Majors do not need to take one of these courses.)

3. Networking concentration:

CS 140, 144

Any three of: CS 240, 240E, 241, 244, 244B, 244E, 249A; EE 179, 276. (Joint Majors take two courses, not three.)

**Graphics Track**

a) CS 148, 248

b) Any one of: CS 205A (strongly recommended); CME 104 (prereq of CME 102), 108; Math 52, 113

c) Any two of: CS 178, 205B, 131A or 231A, 233, 268, 348A, 348B, 348C, 448

d) Track Electives: At least two additional courses selected from (b), (c), the general CS electives list (see Note 9 below), or the following: ARTSTUDI 160, 170, 179; CME 302, 306; EE 168, 262, 264, 278, 368; ME 101; PSYCH 30, 221. (Joint Majors waive these two electives.)

**Human-Computer Interaction Track**

a) CS 147, 247

b) Any three of: CS 142, 148, 194H, 210A, 376, 377 ‘Topics in HCI’ courses of three or more units, 448B; ME216M

c) At least two additional courses selected from (b), the general CS electives list 6, or the following: ArtStudio 160, 162, 163, 164, 165, 168, 264, 266, 267; COMM 121, 124/224, 140/240, 166, 169/269, 172/272, 182, 324; EDUC 191X, 236, 281X, 239X, 338X, 342; HUMBIO 82A; MS&E 125, 185, 331; ME 101, 115A, 203, 210, 216A; MUSIC 220A, 220B, 220C, 250A, 256A; PYSCH 30, 45, 70, 75, 110, 131, 154, 252, 254; SYMSYS 145/245; STATS 203; any class of three or more units at hci.stanford.edu under the 'courses' link; any d.school class of three or more units. (Joint Majors waive these two courses.) __Example HCI Depth course plans: __

Design Thinking: CS 147, 247, 448B, 142, 194H, ME 101, 115A

Front-End Development: CS 147, 247, 142, 448B, 194H, 148, 221

User Experience: CS 147, 247, 194H, 210A, 376, COMM 121, MS&E 125

Product Management: CS 147, 247, 194H, 210A, 142, COMM 169, 140

Digital Art: CS 147, 247, 148, 448B, 142, ARTSTUDI 160, 168

Research Frontiers: CS 147, 247, 376, 448B, ME 216M, COMM 124, 166, PSYCH 252

**Information Track**

a) CS 124, 145

b) Two courses, which must be from different areas below:

i. Information-based AI applications: CS 224N, 224S, 229, 233

ii. Database and Information Systems: CS 140, 142, 245, 246, 341, 345, 346, 347

iii. Information Systems in Biology: CS262, 270, 274

iv. Information Systems on the Web: CS 224W, 276

c) At least three additional courses selected from (b) or the general CS electives list (see Note below). (Joint Majors take one course, not three)

**Systems Track**

a) CS 140

b) One of: CS 143 or EE 180

c) Two additional courses from category (b) or the following: CS 144, 145, 149, 155, 240, 242, 243, 244, 245; EE 271, 282

d) Track Electives: At least three additional courses selected from (c), the general CS electives list (see Note below), or the following: CS 240E, 241, 244E, 315A, 315B, 341, 343, 344 (3 or more units, any suffix), 344E, 345, 346, 347, 349 (with advisor approval), 448; EE 108, 382C, 384A, 384B, 384C, 384S, 384X (Joint Majors take one course, not three)

**Theory Track**

a) CS 154

b) Any one of: CS 167, 168, 255, 258, 261, 264, 265, 268

c) Two additional courses from category (b) or the following: CS 143, 155, 157 or Phil 151, 205A, 228, 233, 242, 250, 251, 254, 259 (with advisor approval), 262, 263, 266, 354, 355, 357, 358, 359 (with advisor approval), 364A, 367, 369 (with advisor approval), 374; MS&E 310

d) Track Electives: At least three additional courses selected from (b), (c), the general CS electives list (see Note below), or the following: CME 302, 305; Phil 152 (Joint Majors take one course, not three)

**Unspecialized Track**

a) CS 154

b) Any one of: CS 140, 143

c) One additional course from (b) or the following: CS 144, 155, 242, 244; EE 180

d) Any one of: CS 221, 223A, 228, 229, 231A

e) Any one of: CS 145, 147, 148, 248, 262

f) At least two courses from the general CS electives list (see Note below) (Joint Majors waive these two courses)

**Individually Designed Track:**Students may propose an individually designed track. Proposals should include a minimum of seven courses, at least four of which must be CS courses numbered 100 or above

**Note**s:

1. MATH 19, 20 and 21 or AP Calculus may be used instead of MATH 41 and 42, as long as at least 26 math units are taken.

2. The Mathematics electives list consists of: Math 51, 104, 108, 109, 110, 113; CS 157, 205A; PHIL 151; CME 100, 102, 103 (or EE 103), 104. Completion of Math 52 and 53 will (together) count as one Math elective. Restrictions: CS 157 and PHIL 151 may not be used in combination to satisfy the Math electives requirement. Students who have taken both Math 51 and 52 may not count CME 100 as an elective.

3. Any course of 3 or more units from the School of Engineering list of “Courses Approved for the Science Requirement” (Figure 3-2); PSYCH 30; PSYCH 55, or AP Chemistry credit may also be used. Either of the physics sequences 61/63 or 21/23 may be substituted for 41/43 as long as at least 11 science units are taken.

4. Students who complete ENGR 40A, or take 40M for fewer than 5 units, are required to complete one-two additional units of Engineering Fundamentals, or one-two additional units of Depth

5. CS 191 and 191W independent study projects require faculty sponsorship and must be approved, in advance, by the advisor, faculty sponsor, and the CS senior project advisor (Patrick Young). A form bearing these signatures, along with a brief description of the project, should be filed with the department representative in Gates 160 the quarter before work on the project is begun.

6. General CS Electives: CS 108, 124, 131, 140, 142, 143, 144, 145, 147, 148, 149, 154, 155, 157 or Phil 151, 164, 166, 167, 168, 190, 205A, 205B, 210A, 221, 223A, 224N, 224S, 224U, 224W, 225A, 227B, 228, 228T, 229, 229A, 229T, 231A, 231B, 231M, 231N, 232, 233, 240, 240H, 242, 243, 244, 244B, 245, 246, 247, 248, 249A, 251, 254, 255, 261, 262, 263, 264, 265, 266, 267, 270, 272, 173 or 273A, 274, 276, 279, 348B; CME 108; EE 180, 282, 364A.

7. Of the category (b) options for the Graphics track, CS 205A is strongly recommended as a preferred choice. Note that students taking CME 104 are also required to take its prerequisite course CME 102.

### Declaring CS

For instructions on declaring CS, go the the Declaring page on the CS site.