Conversation
ARtheboss
added a commit
that referenced
this pull request
Apr 1, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This PR introduces BtLL (Berkeleytime Logical Language), a custom interpreted programming language for expressing and evaluating academic requirements in GradTrak. It includes:
PlanRequirement) and user progress (SelectedPlanRequirement)Did we need a new programming language for this? Probably not. But it was fun to make it, and is probably much safer than executing actual code.
Key Changes
BtLL Interpreter (
packages/BtLL/)Plan,Course,Column,Requirement, and 6 extended requirement typesBooleanRequirement- simple pass/failNCoursesRequirement- N courses from a listCourseListRequirement- specific required coursesAndRequirement/OrRequirement- composite requirementsNumberRequirement- numeric thresholds (e.g., unit counts)Backend
PlanRequirementandSelectedPlanRequirementucRequirements,collegeRequirements,planRequirementsByMajorsAndMinorsupdateManualOverride,updateSelectedPlanRequirementsFrontend
BtLLInterfacecomponent that fetches requirements from DB and evaluates them against user's planTooling
generate-mongosh-commands.tsscript for seeding requirement datanpm run generate:mongoshandnpm run seed:requirementsTest plan
cd packages/BtLL && npm testcd packages/BtLL && npm run seed:requirementsNext Steps
Simplify Semester Blocks: Only display SemesterBlocks that contribute to overall counts (one per semester + transfer units). Add a separate "scratch space" with a distinct visual style for staging classes before placing them in semesters. This makes drag-and-drop between the scratch space and semesters more intuitive.
Catalog Scraper: Create scripts to web scrape the Berkeley catalog and parse requirements into BtLL, likely using an LLM to interpret natural language requirements.
User-Created Requirements: Allow users to edit and create their own BtLL requirement files for custom degree audits or unofficial majors/minors.
BtLL Editor Interface: Build a visual interface for editing BtLL code more easily, lowering the barrier for non-technical users.
Prerequisite Requirements: Extend BtLL usage beyond degree requirements to express course prerequisites, enabling prerequisite validation in the scheduler.