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. CS, EECS, and EIS minors may enroll into pre-selected CS upper division courses courses during phase 1. If students are not in one of these categories, please review our 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, Data 101, and STAT/DATA/CS C100 are the only non-CS/EE/EECS titled classes that may be used to fulfill this requirement. If you took either or both semesters of NW MEDIA 190, contact cs-advising@cs.berkeley.edu to see how this may count toward the major.



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 that you 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 a course 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 to be equivalent to a UC Berkeley upper division computer science or electrical engineering course, contact the current faculty member in charge of the corresponding UC Berkeley EECS course. You should send them the syllabus and any additional information about the course. The faculty need to 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.
  • If  Berkeley EECS does not offer a similar course, consider whether 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.