Picking classes always seems like a daunting task (especially at an institution as large as Berkeley). You have to balance your major/minor requirements, your interests, time constraints, and more. This guide aims to make this process easier for you. In general, you want to have a concrete plan for your time here at Cal, keep each semester balanced in terms of the type of work, and pick classes wisely to optimize your professors.

The Set-Up

The first thing you should do is go to BearFacts and run a Degree Audit Report. The link can be found at Bearfacts --> Students --> Academic Record --> Degree Audit Report. This will give you a list of classes that you need to take.

Next, create a spreadsheet with the following data:

  • A column with your general requirements for Berkeley (AC, R&C, etc).
  • A column with your major prerequisites.
  • A column with the upper divs that you wish to take for your major. Keep in mind that you probably won't have time to take them all, so be sure to prioritize.
  • A column with classes outside of your major that you are very interested in taking.
  • Optional — columns for the other minors and majors that you are considering.

In your spreadsheet, create a 5x3 table.

  Fall Spring

Now, you are ready for the hard part. Take a look at the classes you are required to take and see which ones also fit your interests. Some classes actually fulfill multiple requirements, such as a major upper div and the AC, or perhaps a major prereq and a breadth. It's totally legal to double dip, as long as you get enough units for graduation. Make sure to double check that this is okay with your advisor - most of the tools we have available are out of date and unreliable. Create a list of classes that will fulfill all your various graduation requirements. Now you can start filling out your four year plan.


Scheduling classes in the optimal manner involves some planning ahead. You want to take them in the proper order, but you also should pay attention to who is teaching each course. I've had times where I delayed certain classes because I wanted a better instructor. RateMyProfessors, HKN's evaluations, and ScheduleBuilder can be very helpful in picking classes, as well as BerkeleyTime. Over the years I've found that picking classes based on the professor rather than the topic has yielded substantially better results. For those of you who are more focused on grades, BerkeleyTime and ScheduleBuilder both have historical grade distributions, so use that to assist your decision.

As far as logistics of scheduling classes go, everyone has different preferences. Doing this by hand is pretty tedious, but luckily ScheduleBuilder can generate schedules for you. They have various settings that make schedules with fewest gaps or minimize the number of days you have class, plus many more options. Play with them and create your ideal schedule. A word of caution about 8am classes though — you may think you can wake up early enough to make it every time, but by the middle of the semester it can get pretty brutal, especially if you have to stay up late frantically finishing homework and projects. Lack of proper sleep can cause you massive problems, so please be smart. Know your sleeping habits and be sure to accommodate them.

As you pick out your classes, add them in to the table in your spreadsheet. I suggest filling in your major classes first, then your breadth requirements, and see where you have spaces for personal development classes. As you do so, try to keep a proper balance of class vigor and type — more on that later.

Phase I or Phase II?

A constant struggle for all students is deciding which classes to prioritize during Phase I. In general, you want to pick classes that are most important to you for graduation (and your major), followed by those that you really want to take for personal reasons but are hard to get into. A really neat feature of BerkeleyTime is the historical data on how fast classes fill up. This can be extremely helpful when trying to figure out whether to Phase I or Phase II a class. You should also check the Facebook group for your major (if you have one) for tips on how fast classes fill up. In our CS group there's a list of classes in the sidebar that are absolutely Phase I. Your major advisor should know this as well, so feel free to ask them.


Everyone will have a different tolerance for workload. As a starting point I suggest the following class list:

  • Three lower div OR two upper div technical classes that are required for your major.
  • One breadth class or general ed that's required by Berkeley.
  • One class that is for personal development or personal interest.
  • One decal (typically a 1-2 unit class run by students).

This will put you at 4-5 big classes and one decal, which adds up to around 18-22 units. Taking more than 18 units is pretty tough, so you should be mindful of the workload and scale it back as needed. If you are still in your lower div, you can easily bump this up to three classes for your major, two breadth classes, or even two classes for personal interest. I tended to hover around 17-19 units per semester for my first two years, and 13-16 for my last two.

It's also important to mix classes up. I always tried to take a balanced load that didn't have me reading a book a week for all 5 classes, or working on 4 group projects. Variety is key — it's extremely difficult to read 1,000+ pages a week and absorb them all, just as it is ferociously exhausting to work non-stop on group projects. You want a mix of creating and consuming information, solo and team work, required classes and fun classes.

Don't Forget To Live!

Once you've scheduled all your classes, go ahead and add them to your calendar, then plan the rest of your time. Schedule in your personal projects, and also make sure to set time aside to sustain your health, maintain your relationships, and evolve yourself in other directions. It's easy to get caught up in school, but there's more to life than grades. Hang out with friends, check out the local culture, and most important of all, never lose your drive to keep learning!