CS Major Upper Division Degree Requirements

Enrollment Policy

All upper division Computer Science course enrollments are restricted. If a student is a declared CS or EECS major, they may be able to enroll directly in upper division courses during phase 1. If students are not in one of these categories, then they will have to add to the waiting list for the course(s) students hope to take during phase 2. See the Course Enrollment Policy for specific information

Required Courses for completion of the CS Major

All courses taken for the major must be at least 3 units and taken for a letter grade. All upper division courses applied toward the major must be completed with an overall GPA of 2.0 or above. The prerequisites for upper division courses are listed in the Berkeley Academic Guide. For course planning, HKN course guides, maps, and prerequisite charts are a great resource. 

Students need to complete:

¹Denotes that all courses for the major must be technical in nature. 199, 198, 197, 195, select 194, 191, 190, and various seminars do not count. Please see the table of approved CS 194's and grad courses. If you are unsure, please check with the CS Advisors (cs-advising@cs.berkeley.edu).

²Denotes that Info 159 and STAT/DATA/CS C100 are the only non CS/EE/EECS titled classes that may be used to fulfill this requirement


EECS151 (Digital Systems), CS 152 (Computer Architecture), CS 162 (Operating Systems), CS 164 (Programming Languages and Compilers), CS 169 (Software Engineering), CS 170 (CS Theory), CS 184 (Computer Graphics), and CS 189 (Machine Learning) are known to have heavy workloads. It is not recommended to take these courses in combination.

Taking CS courses at other institutions

The Department allows CS majors to satisfy at most three upper division course requirement at another four-year institution. CS minors may satisfy at most one upper division course requirement elsewhere. We suggest making prior arrangements and consulting with CS Advisors to ensure the course(s) you select is transferrable.

  • If you’re taking the course(s) through study abroad, please begin by reviewing this webpage and the list of pre-approved courses.
  • If the course is not on that list, review UC Berkeley course descriptions and webpages.
    • If you believe the course(s) to be equivalent to a UC Berkeley upper division computer science or electrical engineering course, contact the current faculty of the corresponding UC Berkeley EECS course. You should send them the syllabus and any additional information about the course. The faculty should review the course materials for equivalency. They may deem the course fully or partially equivalent. Ask them to copy cs-advising@cs.berkeley.edu on their evaluation. 
    • For course equivalency requests for CS 169 – Software Development, please first visit this page and then review the link for the CS169 articulation requirements:  http://cs169.saas-class.org/
  • If the UC Berkeley EECS Department does not offer a similar course, consider if it may qualify as an upper division technical elective. If so, submit a Computer Science Major Appeals and Exceptions Requests form and include the syllabus and/or other course materials. The request will be reviewed by the Faculty Vice Chair and you will be notified of the decision via email. This may take around six weeks, so please plan ahead.