Undergraduate Major in
Computer Science
Undergraduate Option Rep
Prof. Tracey Ho
Options Administrator
Maria Lopez
mlopez
cms.caltech.edu
Study in the computer science option emphasizes rigor and creativity, and is good preparation either for graduate study followed by a research career, or for a variety of professional or entrepreneurial occupations.
The option introduces students to the mathematical and engineering foundations of the discipline. It provides considerable flexibility in course selection, together with a capstone project giving an opportunity for independent work in an area of the student’s choice. Individual programs will be worked out in consultation with faculty advisers (the materials at www.cs.caltech.edu/academics/ undergrad_study.html may be helpful for this purpose). Any student in the computer science option whose grade-point average is less than 1.9 at the end of the academic year in the subjects listed in the option requirements may be refused permission to continue work in the option.
Option Requirements
- CS 1; CS 2; CS 4; Ma/CS 6 a or Ma 121 a; CS 21 or CS/EE/Ma 129 a; CS 24; CS 38; E 10, E 11.
- One of the following:
- An undergraduate thesis (CS 80 abc) supervised by a CS faculty member.
- A project in computer science, mentored by the student’s academic adviser or a sponsoring faculty member. The sequence must extend at least two quarters and total at least 18 units of CS 81 abc.
- Any of the following three-quarter sequences involving a large project in their last quarter. Each of the sequences is expected to be available yearly, with the exception of sequence vi.
- Databases: CS 121, CS 122, CS 123.
- VLSI: Either of the three-term sequences CS/EE 181 abc or CS 185 abc.
- Networking & Distributed Systems: Either CS 141 c or CS/EE 145 combined with two courses chosen from CS 141 ab, CS/EE 143, and CS/EE 144.
- Learning & Vision: At least three courses chosen from EE/CNS/CS 148 ab, CS/CNS/EE 154, 155, 156 ab, 159, CNS/Bi/EE/CS 186, CNS/Bi/Ph/CS 187, including at least one of 156 b, 148 b, and 159.
- Graphics: CS/CNS 174 and two other CS 17 x courses.
- Information & Complexity: CS/EE/Ma 129 abc.
- A total of 63 CS units that are not applied to requirement (1), and that are either numbered CS 114 and above or are in satisfaction of requirement (2).
- In addition to the above requirements, 36 units in Ma, ACM, or CS; 18 units in EAS or Ma; and 9 units not labeled PE or PA.
- Units used to fulfill the Institute Core requirements do not count toward any of the option requirements. Pass/fail grading cannot be elected for courses taken to satisfy option requirements. Passing grades must be earned in a total of 486 units, including all courses used to satisfy the above requirements.
Double Majoring
Students can double major if they satisfy the unit and courses requirements of both options. Note that double counting a class is not allowed, although reasonable exceptions can be made on a case-by-case basis.
Typical Course Schedule
The first year for a CS major is generally spent on satisfying most of the core requirements, but CS 1, CS 2, and/or CS 4 may be taken as well. After that, a typical course schedule looks as follows:
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1Commonly taken during the freshman year.
Study Tracks
We have collected here, for the benefit of Computer Science students and their advisors, various recommended study tracks in a few areas:
- VLSI
Aph 9a (solid-state electronics)
CS 181a (VLSI design lab)
CS 137a (electronic design automation) or CS139a (concurrency)
CS 184a (computer architecture)
EE 180 (solid-state devices) - Distributed Systems
CS139a (distributed/concurrent systems)
CS 141abc (compilers)
CS 143 (communication networks)
CS 144 (ideas behind the web)
CS 145 (projects in networking)
CS 146 (advanced networking)
CS 147 (network performance analysis)
CS 245 (special topics in networking) or CS 253 (special topics in machine learning) - Molecular Programming
BE 163 (biomolecular engineering)
BE 191ab (biomolecular computation)
ACM 116 (probability models) or EE 162 (random processes)
CS 138b (algorithms) or CS150 (probability) or CS151 (complexity)
CDS 110a (intro control theory) or EE 113 (feedback and control)
ChE 101 (chemical reaction engineering) or ChE 105 (dynamics and control of chemical systems)
CS 129ab (information & complexity) or EE 126ab (information theory)
CS 154 (artificial intelligence) or CS 155 (graphical models) or CS 156ab (learning systems) - ECE
ACM 95abc (applied math)
EE 20ab (electronics lab)
CS 138a (algorithms)
CS 138b or CS150 or CS151 (algorithms; probability; complexity) - Networks
ACM 116 (probability models) or EE162 (random processes)
EE 111 (signals, systems, and transforms)
CS 143 (communication networks)
CS 144 (ideas behind the web)
CS 145 (projects in networking)
CDS 110a (intro control theory) or EE113 (feedback and control) - Robotics
CDS 110a (introductory control theory)
CS 154 (artificial intelligence)
EE 148ab (selected topics in computational vision)
ME 115ab (introduction to kinematics and robotics)
ME 132ab (advanced robotics: navigation and vision) - Graphics
CS 171 (introduction to computer graphics laboratory)
CS 174 (computer graphics projects)
CS 176 (introduction to computer graphics research)
CS 177 (discrete differential geometry: theory and applications)
ACM 106abc (introductory methods of computational mathematics) - Theory
CS 138 (algorithms)
CS 150 (probability and algorithms)
CS 151 (complexity)
CS 154 (current topics in theoretical CS)
CS 219 (quantum computation)
Courses in algebra, probability, and combinatorics
Advising
Because of large enrollments, students will not usually be able to have an advisor from the CS faculty during their freshman year. Students seeking a CS advisor should contact the undergraduate option secretary at academics
cms.caltech.edu.
Research
There are many opportunities for undergraduate research in the computer science field. Students may work with faculty in the computer science department and in other departments and JPL. There are a wide variety of research opportunities in computing across campus, ranging from pervasive computing using wireless devices, to building and exploiting novel graphics devices, to algorithms, networking, molecular computing, or to using computing to search for quasars. In particular, upperclass students can pursue an Undergraduate Thesis (CS 80), carried out under the supervision of a member of the computer science faculty (or other faculty as approved by the computer science undergraduate option representative). Campus-wide, there is also a SURF (Summer Undergraduate Research Fellowships) program, please visit the SURF website for more information. The application deadline is typically in February. Students should begin talking with professors at least two months before the deadline.