CS text 97/98

MAJORS INVOLVING COMPUTER SCIENCE

While all engineering students are involved with computers to some extent during their undergraduate years, some will want to go beyond using the computer as a tool to study the process of computation as a discipline in its own right. Stanford now has five different majors that deal in one way or another with computers and computer science. Three of these majors are housed in the School of Engineering (Computer Science, Computer Systems Engineering, and the computer specialization within Electrical Engineering), and two reside outside of the School (Mathematical and Computational Science, and Symbolic Systems). The following paragraphs provide a brief introduction to these majors; further details on the three majors housed in the School of Engineering can be found later in this Handbook, while details on the other two can be found in the Stanford Bulletin and other University publications. In addition, the Computer Science Department maintains an advising office in Gates room 160 (723-3027).

Students interested in any of these majors must first acquire a background in programming methodology. Though high school Advanced Placement programming courses may be sufficient for some students, most will begin with either CS106A (Programming Methodology) and CS106B (Programming Abstractions), or, CS106X (Programming Methodology and Abstractions). The core set of courses that begin the actual study of computer science are CS107 (Programming Paradigms), CS108 (Object-Oriented Systems Design), and CS109 (Introduction to Computer Science).

COMPUTER SCIENCE

Computer Science as a major is developed around four parallel paths that emerge from the CS107/108/109 sequence. The first path explores software systems and consists of the following courses: CS143 (Compilers) and CS240A (Operating Systems). The second outlines the basics of computer hardware: E40 (Basic Electronics) and EE182 (Computer Architecture). The third covers the foundations of theoretical computer science: CS154 (Automata and Computability), CS157 (Logic), and CS161 (Algorithms and Data Structures). The fourth is a single course--CS121 or CS221--that examines the basic theories employed in artificial intelligence research. In addition, students are required to select three elective courses from an approved list and to complete an extensive senior project. There are 100-102 units required for the major: 27 units of Math, 12 units of Science, 10 units of Engineering Fundamentals, one course in Technology in Society, and 48 units of Depth. The degree is a Bachelor of Science in Computer Science.

COMPUTER SYSTEMS ENGINEERING

The Computer Systems Engineering program is a School of Engineering major that provides a unique blend of computer science and electrical engineering. The program is targeted for undergraduates with interest in practical implementation and application of computers and computer-based systems. Through course and laboratory experiences, students learn the essential principles required to define, design, and build both general purpose and application-specific computer systems. Coursework emphasizes fundamental elements of electrical engineering and computer science, as well as underlying circuit and logic technologies. A senior project caps the program and provides a special hands-on experience. There are 104-106 units required and the resulting degree is a Bachelor of Science in Engineering (Computer Systems Engineering). This major is not accredited by the EAC of ABET.

Minors

COMPUTER SCIENCE

Courses fulfilling the minor: Units

Prerequisites: Standard Mathematics sequence through Math 51.

Introductory Programming:

CS106A/B Programming Methodolgy/Abstractions 10

or CS106X Prog. Methodology/Abstractions (accelerated) 5

AP Credit may be used to fulfill this requirement

Core: CS107 Programming Paradigms 5

CS108 Object-Oriented Systems Design 4

CS109 Intro to Computer Science 4

CS150 Intro to CS Theory for Non-CS Majors 4

Electives:

Select two (2) courses. Selection must be from different areas.

Systems:

CS143 Compilers 4

CS145 Intro to Databases 4

CS148 Intro to Graphics 3

CS240A Operating Systems 4

Theory:

CS154 Automata & Complexity Theory 4

CS157 Logic and Automated Reasoning 4

CS161 Data Structures and Algorithms 4

Artificial Intelligence:

CS121 Intro to Artificial Intelligence 3

CS221 AI: Principles and Techniques 3

Numerical Computing:

CS137 Introduction to Scientific Computing 4

Human-Computer Interaction:

CS147 Introduction to HCI Design 3-4

Note: For students who come to Stanford with no programming background and begin with CS106A, the minor consists of eight (8) courses. All courses must be taken for a letter grade. Minimum acceptable Letter-Grade-Indicator (LGI) is 2.0.