Undergraduate Learning Assistant Program

ULA Program Crew

Interested in being a ULA? 

Read more about the application process and apply here: https://cs.ucsb.edu/education/undergrad/ULA-application

About the CS ULA Program

The Computer Science Undergraduate Learning Assistant Program (ULA) was launched in Fall 2017 with the following goals in mind:

  • enhance the learning experience of students
  • meet the challenges of increased enrollments
  • build a sense of community among our undergraduate students
  • create a more supportive learning environment for those from underrepresented groups.

Faculty Co-ordinators

Dr. Mirza and Dr. Conrad are faculty involved with training and co-ordinating the ULA program. They serve as a point of contact for students interested in being ULAs and faculty who would like to offer ULAs in their courses. Dr. Richert Wang and Dr. Kate Kharitonova have been involved with the implementation of the program and have been among the early adopters of the program.

Overview of the program

The CS Department ULA program, in its current instantiation compensates ULAs with course credit in their first quarter of service, while they are undergoing training: all first time ULAs are required to take a course under the “Topics in Computer Science” (CMPSC 190J), which is a 4-unit upper division course that counts towards the B.S. C.S. degree requirements as an upper division elective. Students that have completed this course become eligible to apply for paid positions offered under the “Remedial Tutor” title. Upper division credit and paid positions are important to attract experienced ULAs who typically have competing offers from industry and research labs. The process of recruiting, selecting, training, organizing and evaluating ULAs is described below.


At least a month prior to the start of the quarter, the CMPSC 190J course and the paid positions are advertised to all undergrad CS majors, and students enrolled in CMPSC 24, 32 and 56 (regardless of major). In each case, we require a minimum GPA of 3.0 (cumulative as well as LD and UD coursework). Students from all majors are invited to apply. We take major into account and prefer to offer positions to CS majors, but major is only one of several factors. Our primary criteria is the personal statement that the student makes about their reasons for wanting to participate in the program. Preference is given to students that demonstrate a sincere interest in helping other students succeed, in addition to developing their own skills. The application form also collects information about students’ availability to attend scheduled lab sections and lectures for the course that they will be tutoring for, as well as students’ course preferences. All these factors are taken into account when selecting ULAs for specific courses.


The instructors of courses that involve ULAs collaborate on selecting ULAs into their courses. Each instructor provides a rank-ordered list of ULAs to the coordinator of the program. The coordinator and instructors work together to resolve conflicts in the case multiple instructors select the same ULA. Selection is based on students’ personal statements, availability and course preference. In some cases, the instructors may conduct in-person interviews to evaluate communication skills. The coordinator sends a shortlist of ULAs selected for paid positions in each course to the CS staff who carry out the hiring. Students selected into CMPSC 190J are given add codes.

Training: All first-time ULAs are required to take CMPSC 190J. This course has been offered each quarter since Fall 2017, including once in Summer Session (Session B). Link to course website from Spring 2018 is available at https://ucsb-cs190j-s18.github.io/

Students enrolled in the course participate in one 75 minute lecture per week, and provide 5-6 hours of tutoring per week in a “learn by doing” model. The lecture section includes instruction in Computer Science education methods and research, as well as role-playing of direct instruction.


ULAs work for between 8-10 hours per week. They typically spend four hours per week in lab sections where they assisted students with their programming assignments. During these sessions, the ULAs practice how to help students without giving away solutions and instead giving them the skills needed to debug their code on their own. They teach students how to reason about their code by tracing through it and communicating their logic. The ULAs learn how to ask students appropriate questions that would lead them in the right direction.

The ULAs attend weekly meetings, approximately 1 to 1.5 hours per week with the rest of the course staff (GTAs and readers). The course instructor typically provides guidance for the upcoming week during these meetings. The GTAs and ULAs provide the instructor feedback about their experiences in labs and raise any instructional or organizational issues that need to be addressed.

The ULAs spend the rest of their time providing written feedback to students about their assignments. They also offer open lab hours where students could get help outside of prescribed lab hours, which is a new feature in our classes. They create collaborative study guides and conduct study sessions to help students prepare for exams.


All first-time ULAs are evaluated as part of the CS190J course. In addition to evaluating written work and oral presentations, the instructors make direct observations of each ULA’s performance in assisting students in labs. Students in the course also evaluate the ULAs and the ULA program by filling out anonymous surveys at the end of the quarter.

Quick Links: