Skip to main content

Lottery & Waitlist Information

Computer Science Department Lottery Policy

The priorities for the lottery are not a fixed formula; they depend on several different factors that vary between semesters and across courses (e.g., the size of waitlists, the Group a course belongs to, the frequency of offerings, etc.).  So, we cannot provide a clear and concise formula, nor are we able to predict ahead of time whether any particular student can get into a course.  However, for transparency, we think it would help students in planning to have a general understanding of some of the factors that go into the lottery process.  Below are our guidelines; again, these are not hard and fast rules, so checking off some number of boxes does not guarantee any result.  But, on the whole, these explain the vast majority of our decisions:

Lottery Guidelines for Introductory Courses: CS21, CS31, and CS35
  • Students who can still add the major or minor (generally, First-Year and Sophomore students) get preference over students who cannot (Juniors and Seniors).
  • Students who have not previously taken the course receive preference over students retaking the course (e.g., to improve their grade).
  • Students who were previously lotteried out of the course get higher priority within their peer group the next time they try to enroll.  In addition, for CPSC 21, students who stay on the waitlist (i.e., fully attend the first week of class and lab) may be given higher priority in future lotteries.
Lottery Guidelines for Upper-Level Courses (Numbered above CS35)

For upper-level courses (numbered above CS35), students needing the course for major/minor requirements receive priority (this is the general theme behind many of the preferences below).  Note: the items below are listed in arbitrary order and assume students have met the course prerequisites:

  •   Majors/minors receive preference over non-majors/minors, including students in other disciplines that cross-list our courses (e.g., Cognitive Science).
  • Students closer to graduation receive preference (i.e., Seniors receive higher priority than Juniors, who receive priority over Sophomores).
  • Students needing a course to meet their Group requirements receive preference over students using the course for an elective.
  • Students with a higher number of remaining courses per remaining semester receive priority over students closer to completing the requirements.
  • Students who have met the major/minor requirements can take up to 1 more course (the soft course cap).  Students who are taking this additional course receive lower priority than students enrolling to complete a CS degree requirement.  Students are not guaranteed access to an additional course (e.g., all students were strictly capped in the 2020-21 academic year due to COVID-19).
  • As much as possible, the department will try to get students into one course per semester. This often means that, during the lottery for a particular semester, successfully enrolling in one CPSC course will lower your priority for additional courses that semester (students without a CPSC course for the semester will be given higher priority).
  • Students on the major or minor track who have not completed the CPSC 31 can take at most one upper-level course before being required to finish the introductory sequence, regardless of course prerequisites. Concurrent registration also satisfies this requirement.

Note that this applies only to courses taught by the CPSC department, regardless of whether the course is cross-listed.  For example, pre-registering for BIOL 68 is treated the same as pre-registering for CPSC 68.  We are not in charge of the lottery for CPSC 13, 52, 72, or 82 since these are cross-listed courses taught by faculty in other departments.

What to do if you are lotteried out of a CS class

If you are lotteried out of a CS class and would like to be put on the waiting list, find your course listed below and follow the steps for that course (the steps are different for introductory vs upper-level courses). 

In an effort to balance CS labs and lecture sections, occasionally students are moved from one section to another after pre-registration. Please check your schedule after lotteries are over to verify your registration. If we moved you into another section, your schedule was checked to ensure no course overlap. If you do not want to remain in the class, please drop it to make room for wait list students. If you want to try to get back into your original lecture section, or another lecture section, please follow the waitlist rules below.  If you just want to switch lab sections, see the info about Switching Lab Sections below.


Waitlist info for Introductory Courses: CS21, CS31, and CS35


If you are lotteried out of CS21, CS31 or CS35, you can be added to the waiting list. We almost always are able to make all waitlist add decisions by the end of the first week of classes. Often times slots open up during the first week, particularly in the fall semester, and we add in students from the wait list that follow our waiting list rules:

1. Prior to the start of the semester, please fill out the appropriate form:

2. To stay on the waiting list you MUST attend all meetings of one section of the class and one section of the lab during the first week.

  • Sign in on the waiting list attendance sheet in the class and lab.
  • If you can add more than one section, you only need to attend one section of the class to stay on the waiting list for all sections of the class.

We start adding students during the first week as slots open in the course. Often times we can add students after Wednesday of classes. We try to make all add decisions by the end of the first week of classes.

We drop registered students from these courses who do not attend during the first week of class. We do this to ensure we can add as many waiting list students as possible. This means that sometimes slots open up at the end of the first week of classes.

We give preference to first and second year students in CS21, CS31, CS35, and to juniors who applied for the CS major and minor and who were deferred because they have not yet taken CS31 or CS35.

We keep a history of waiting lists and we try to avoid lotterying out students who were lotteried out and who followed our waiting list rules in previous semesters. Unfortunately, we are currently not staffed to guarantee slots in future semesters for students who are lotteried out of CS courses. We try as best we can to accommodate as many students as possible. Your best chance of getting into a CS21, 31, and 35 is to preregister during your first and second year, and to follow the waiting list rules if you are lotteried out.

Waitlist info for Upper-Level Courses (Numbered above CS35)

Please follow these special instructions for Spring 2021.


Switching Lab Sections

For CS21, CS31, and CS35, if there is a waitlist:

We do not track the switching of lab sections. If you are interested in switching your lab section, please do the following:

  1. Find a student in the section you are looking to switch into. You can use Piazza or Slack if your class is using it, or add your name to these swap sheets and check back later to see if another student can swap with you: 
    1. CS21 lab swap sheet
    2. CS31 lab swap sheet
  2. Once you find a student who is willing to switch, send Lauri (lauri at an email with the following information (Cc the swapping student):
    1. Names
    2. labs currently registered for
    3. labs looking to move into for both students (swaps cannot be made without this information)
  3. Once the switch has been approved, both students will receive an email from Lauri
  4. When you receive the email, please complete an online add/drop form to get registered for the course

If there is no waitlist and/or for upper-level courses: Please contact the professor about switching.