Undergraduate Major in
Computer Science

Undergraduate Option Rep

Prof. Adam Wierman

Options Administrator

Maria Lopez
mlopezSymbolatcms.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. 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

  1. CS fundamentals. CS 1; CS 2; CS 4; CS 11,
  2. Intermediate CS. CS 21; CS 24; CS 38.
  3. CS Project Sequence. One of the following
    • An undergraduate thesis (CS 80abc) 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 81abc.
    • Any of the following three-quarter sequences. Each of the sequences is expected to be available (nearly) yearly.
      • Databases: CS 121, CS 122, CS 123.
      • Graphics: CS/CNS 174 and two other CS 17x courses.
      • Learning & Vision: At least three courses chosen from ME/CS 132ab, EE/CNS/CS 148 ab, CS/CNS/EE 154, 155, 156 ab, 159, CNS/Bi/EE/CS 186, CNS/Bi/Ph/CS 187, ACM/CS/EE/CMS 218, including at least one of 156 b, 148 b, 132 b or 159.
      • Networking & Distributed Systems: CS/EE 145 combined with two courses chosen from CS 142, CS/EE 143, and CS/EE 144.
  4. Advanced CS. A total of 63 CS units that are not applied to requirements 1 or 2 above, and that either (i) are numbered CS 114 and above or (ii) are in satisfaction of requirement 3 above.
  5. Mathematical fundamentals. Ma 2; Ma 3; Ma/CS 6a or Ma 121a.
  6. Communication fundamentals. E10; E11.
  7. Scientific fundamentals. In addition to all above requirements, 18 units selected from the following courses Bi 8, Bi 9, Ch 21abc, Ch 24, Ch 25, Ch 41abc, Ph 2abc, Ph 12abc, or any 100+ course in Bi, Ch, or Ph.
  8. Breadth. In addition to all 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 interested in simultaneously pursuing a degree in a second option must fulfill all the requirements of the computer science option. Courses may be used to simultaneously fulfill requirements in both options. However, it is required that students have at least 63 units of computer science courses numbered 80abc, 81abc, or 114 and above that are not simultaneously used for fulfilling a requirement of the second option, i.e., requirement 4 in computer science must be fulfilled using courses that are not simultaneously used for fulfilling a requirement of the second option. To enroll in the program, the student should meet and discuss his/her plans with the option representative. In general, approval is contingent on good academic performance by the student and demonstrated ability for handling the heavier course load.

Advising

Because of large enrollments, students will not usually be able to have an advisor from the CS faculty during their freshman year. Starting in the sophomore year CS students will be assigned a faculty advisor whom they should meet with regularly, typically once per quarter.  Students seeking a CS advisor should contact the undergraduate option secretary at academicsSymbolatcms.caltech.edu.

Research

There are many opportunities for undergraduate research in the computer science field, both at Caltech and outside of Caltech. There are a wide variety of research opportunities in computing across campus and at JPL, 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, upper-class students can pursue an Undergraduate Thesis (CS 80), Undergraduate Projects (CS 81), or Undergraduate Projects (CS 90), 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.  Outside of Caltech, there are also excellent oportunities for summer undergraduate research in computer science through NSF sponsored REUs (Research Experience for Undergraduates), please visit the REU website for more information.

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:

Units per term
Second Year 1st 2nd 3rd
Ma 2/3 Sophomore Mathematics
9 9 -
CS 1 Intro. to Computer Programming1
9 - -
CS 2 Intro. to Programming Methods1
- 9 -
CS 4 Fundamentals of Computer Program. - 9 -
Ma/CS 6 a Intro. to Discrete Math 9 - -
CS 21 Decidability and Tractability
- 9 -
CS 24 Intro. to Computing Systems
- - 9
CS 38 Introduction to Algorithms
- - 9
Scientific Fundamentals 9 9 -
HSS Electives 9 - 9
Other Electives - - 9
.. 45 45 36
Third Year 1st 2nd 3rd
CS Courses 9 9 9
CS Project 9 9 9
HSS Electives 9 9 9
E 10 Technical Seminar Presentations - - 3
EAS/Ma Courses 9 9 9
Other Electives 9 9 -
45 45 39
Fourth Year 1st 2nd 3rd
CS Courses 9 - -
HSS Electives 9 18 9
EAS/Ma Courses (or CS 80 Undergraduate Thesis) 9 9 9
Other Electives 18 9 18
45 36 36

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:

  • Algorithms & Complexity
    Ma/CS 117 Computability Theory
    CS 139 Analysis and Design of Algorithms
    CS 149 Introduction to Algorithmic Economics
    CS 150 Probability And Algorithms
    CS 151 Complexity Theory
    CS/CNS/EE 154 Artificial Intelligence
    CS/CNS/EE 155 Machine Learning & Data Mining
    Ph/CS 219 abc Quantum Computation
  • Algorithmic Economics 
    CS 139 Analysis and Design of Algorithms
    CS 149 Introduction to Algorithmic Economics
    CS 152 Introduction to Data Privacy
    SS/CS 241 Advanced Algorithmic Economics
  • BioComputes 
    ACM/EE/CMS 116 Introduction to Stochastic Processes and Modeling
    CDS 110 Introductory to Feedback Systems
    CS/EE/Ma 129ab Information & Complexity 
    CS/CNS/EE 156ab Learning Systems
    CNS/Bi/Ph/CS 187 Neural Computation
    BE/CS/CNS/Bi 191 ab Biomolecular Computation
    Ph/CS 219 abc Quantum Computation
  • Graphics
    CS/CNS 171 Introduction To Computer Graphics Laboratory
    CS/CNS 174 Computer Graphics Projects
    CS 176 Introduction To Computer Graphics Research
    CS 177 Discrete Differential Geometry: Theory And Applications
    ACM 106ab Introductory Methods Of Computational Mathematics
  • Machine Learning & Artificial Intelligence
    ACM/EE/CMS 116 Introduction to Stochastic Processes and Modeling
    EE/CNS/CS 148 ab Selected Topics in Computational Vision
    CS 150 Probability and Algorithms
    CS/CNS/EE 154 Artificial Intelligence
    CS/CNS/EE 155 Machine Learning & Data Mining
    CS/CNS/EE 156 ab Learning Systems
    CNS/Bi/Ph/CS 187 Neural Computation
  • Networks & Distributed Systems
    ACM/EE/CMS 116 Introduction to Stochastic Processes and Modeling
    CS 142 Distributed Computing
    CS/EE 143 Communication Networks
    CS/EE/CMS 144 Networks: Structure & Economics
    CS/EE 145 Projects in Networking
    CS/EE 146 Advanced Networking
    CS/EE 147 Network Performance Analysis
  • Robotics & Control
    CDS 110 Introductory to Feedback Systems
    ACM/EE/CMS 116 Introduction to Stochastic Processes and Modeling
    EE/CNS/CS 148ab Selected topics in Computational Vision
    CS/CNS/EE 156ab Learning Systems
    CNS/Bi/Ph/CS 187 Neural Computation
    ME 115ab Introduction To Kinematics And Robotics
    ME/CS 132ab Advanced Robotics: Navigation And Vision
  • Systems
    CS 115 Functional Programming
    CS 116 Reasoning about Program Correctness
    CS 118 Logic Model Checking for Formal Software Verification
    CS 119 Reliable Software: Testing and Monitoring
    CS 121 Introduction to Relational Databases
    CS 122 Database System Implementation
    CS 123 Projects in Database Systems
    CS 124 Operating Systems
Department of Computing + Mathematical Sciences