Course Planning

2023–2024 Yearlong Spark Project Update

CodeLab UC Davis
8 min readDec 28, 2023


Currently, UC Davis offers students many different tools for planning out courses for future years, including OASIS, Schedule Builder, MyDegree, and General Catalog. It is a complicated and tedious process to research into courses to plan out schedules and future quarters.

  • Not knowing what courses to take
  • Certain tools provide incomplete information (e.g. not displaying correct degree progress)
  • No easy way to understand prerequisites / quarter offerings for courses

Proposed Solution

CodeLab has partnered with a UC Davis SWE, Matt Steinwachs, to work on a new Course Tool system that would improve the student and administrative experience of degree progress and planning out courses for future quarters.

The Course Planning Team is developing a new, intuitive UI for managing courses and academic plans for future quarters, including a new algorithm that recommends the student a set of courses to take that meets requirements based on their major and specifications.

The Team


Project Planning / Communication: Notion, Jira, Slack, Google Meet, Calendly
Design: Figma,
Software: VSCode,, Git / GitHub, MongoDB


From October 2023 to December 2023–6 weeks


The design process consists of conducting UX Research / Competitive Research, producing User Stories, sketching up Lo-fi, and crafting the Mid-fi designs.


To gain a thorough understanding of the current tools and identify areas of improvement within these tools that we could implement in the new Course Tool, we conducted user research and competitive analysis.

During the registration period for winter quarter courses, we reached out to different outlets in the school, including clubs, professors, and faculty to share to UC Davis students our user survey.

Our survey asks questions about their experiences with the course planning process — what tools they used, what they were trying to do, and how have these tools served them.

User Surveys

The designer synthesized research data and grouped together key ideas and insights, forming the basis of user stories and areas of improvement to look into.

A diverse set of UC Davis students expressed their likes and dislikes with the current resources available, and shared their wanted features that would improve the quality of life.

Competitive Analysis

From the current tools that UC Davis offers, each of the different tools were closely documented — how the pages and elements interact, what interactions felt right, what were some weak points that could be explored, and whether the tools fully met a typical student’s needs. These findings would help guide the design and elements of the new Course Tool.

Overall, our research led to these findings:

Students have trouble:

  • Knowing what courses to prioritize taking over others — placing them on which quarters
  • Knowing what quarters courses are offered (and visually understanding this in the academic plan)
  • Understanding degree progress (inaccurate, especially for transfer students)

Students want:

  • Ability to drag and drop courses into the academic plan
  • Course recommendations for the academic plan — courses that satisfy the most requirements, what order to take courses
  • Better ways of visualizing the academic plan — prerequisites, class times, different course options

User Stories / Lo-fis

With the findings from research, it began to shape a model for how students should interact with the Course Tool in the form of user stories and what our Course Planning pages should look like.

Our designer sketched out rough ideas of how we could revamp the frontend interface to be something that is more user friendly and addresses student issues, based on the user stories.


Our designer took the sketched lo-fis to Figma to explore these design ideas deeper.

Different pages were designed to manage and work with the academic plan worksheets. A few of these pages are shown below:

New Worksheet: The landing page for creating a new worksheet in a blank slate

All Worksheets: Similar to Oasis, different academic plans can be saved / loaded / deleted

Generated: When our Course Planning algorithm generates a recommended set of courses to take, it will populate the worksheet and display how it meets the student’s major requirements

Each page was explored deeper, showing how interacting with certain elements change the page. This shows the flow of adding a course onto the academic plan worksheet.

A closer look at the elements in use here, such as draggable blocks for courses that can be placed in the different quarter slots, and a search menu for the catalog of courses based on degree requirements and filters.

Future Work

Going into the winter quarter, our designer will continue to work on prototyping designs and crafting hi-fis based on the user stories we have created, such as viewing course information. Our developers will work closely with the designer to understand the design intent and implement the pages and elements onto the frontend.

As these new features are being implement into Course Tool, we will invite students to conduct user interviews on the current tools available, and through user testing, let them try out some of these features for feedback.



Course Tool is built on MongoDB and Express.js for the database and backend, and Next.js / React as the frontend to serve the student.

Schemas for courses, user, and chart serve to hold data about courses, the student, and their academic plan of courses they plan to take, and are stored in the MongoDB database.

In the backend, CRUD routes have been created to interact with this data, and axios is used as the bridge to bring this data from the backend to the frontend to display and serve the user.


Through our meetings with the UC Davis SWE, he has shared with us important data on the database of majors and their degree / university requirements, as well as quarter offerings for these courses. We are working on populating these into our MongoDB database, to be able to factor this information as constraints in our Course Planning algorithm.

The schemas will likely need to be updated to include information about quarter offerings and the number of units under courses.


Our developers of Course Planning created a multi-stage algorithm to generate a valid course schedule.

Before running the algorithm, course data is fetched from the MongoDB database and converted into an adjacency list which represents a graph of courses and their prerequisites.

The first stage of the algorithm uses topological sort to order this “graph” of courses/prerequisites to produce a valid order to take the set of courses.

The next stage of the algorithm takes this course order and splits it into quarters based on the number of quarters to plan and the number of courses to take for each quarter.

The result is a valid per-quarter schedule in the form of a JSON object. This JSON object can be easily parsed and displayed on the frontend.

Future Work

Our developers are currently improving the algorithm to check for course availability and to provide General Education course options.

From Jan — Jun 2024, developers will work on the user input in the frontend. They will connect the frontend with the algorithm processing to produce a user modifiable course schedule which will automatically update to accommodate for any changes made by the user. This schedule will include any relevant course information, such as the course title, professor, placement tests, prerequisites, units, etc.

As designs become more concrete in hi-fis, these pages and elements will be implemented into the frontend by our developers. We plan to have worksheet navigation and course features in the worksheet implemented and testable in the upcoming weeks.

Project Timeline

A high-level overview of our projected timeline for Course Planning. While we continue to research / develop the Course Planning algorithm, we plan to work on key features such as managing and editing academic plan worksheets, course lookup / info, and student authentication / administrative features throughout Winter and Spring Quarter.

Reflecting on Fall Quarter 2023


For many of us on the team, we’ve been working with tools and systems which are new to us. Our mentors and friends at CodeLab have been extremely helpful in bringing us up to speed — saving us time and learning valuable skills in the process.

There are a lot of moving parts, with our Course Tool project being broken into two teams, so staying connected and actively communicating with our sister team — Course Visualization — and leads in this project is super important.

With a complicated project, such as the algorithm and the data involved with the courses database, there must be great care in planning out how everything is organized and how the work will get completed week by week. This only gets more important, as we move later into Spring Quarter, where we will eventually merge our features with Course Visualization to eventually hand off to our stakeholder.


There were multiple different blockers that we ran into — getting the major / course data we needed for the algorithm from the stakeholder, getting our MongoDB database up and running, to even just getting our environment and project details set up on Notion. But now that we have everything up and running, we expect to have a lot more progress going into Winter Quarter.

The Course Planning algorithm is likely our biggest undertaking for this project. There are many different factors involved, as well as new technical challenges in terms of handling all this data. This algorithm is open-ended by nature and we are unsure what it will take to solve this, as we discover new challenges from our research and development. But we will be hard at work next quarter to ensure we take the right steps to make this happen.

Closing Thoughts

We are incredibly grateful to be given the opportunity to work on this project by UC Davis SWE Matt Steinwachs. He has greatly supposed us in this venture — sharing technical insights as a UC Davis employee, and personal experiences as a former UC Davis student — to give our team guidance in the project. We look forward to continue meeting and collaborating with him on Course Tool these next two quarters.



CodeLab UC Davis

CodeLab is a student-run software development and UX design agency at UC Davis.