Inspiration
We wanted to create an application that helps students navigate complex course requirements while optimizing their academic schedules. The inspiration stemmed from the difficulty many face when planning semesters efficiently, especially when considering prerequisites and workload management. We aimed to build a tool that could simplify this process, providing personalized, automated scheduling solutions based on remaining courses and prerequisites.
What it does
Catalyst reads a student's academic audit, identifies completed and pending courses, and suggests optimal schedules for upcoming semesters. It ensures that course prerequisites are met, distributes courses based on credit limits, and considers course availability across semesters (e.g., Fall/Spring). The user first sees a tutorial page, which shows them what to upload and how to obtain the file. Then, they are able to see all the courses they’ve taken for each requirement in their degree audit, as well as what courses they still need to take.
How we built it
We built Catalyst using a combination of TypeScript and Node.js for backend processing. We leveraged Cheerio for parsing HTML audit files, used functions for course extraction, and implemented algorithms to handle prerequisite mapping, course filtering, and scheduling logic. The tool interfaces with a custom course catalog and CS requirement data to evaluate and recommend courses. A well-crafted front end complements this, allowing users to interact with the application through a user-friendly interface that displays schedules, course details, and progress insights, with Next.js and Typescript as our main tech stack. We made use of libraries such as Tailwind CSS, Framer Motion, and shadcn/ui to add effects and styling to the final product.
Challenges we ran into
Handling complex prerequisite structures was one of the most significant challenges, as courses have some nested or conditional prerequisites. Managing data structures efficiently, such as ensuring updates to arrays and maps during the scheduling process, required careful thought. Additionally, balancing course credits while prioritizing courses based on their prerequisite impact added another layer of complexity.
Accomplishments that we're proud of
We are proud of developing a system that effectively parses audit data and translates it into actionable scheduling insights. Successfully creating an algorithm that maps out prerequisites, ranks courses by importance, and outputs feasible schedules marked a big win. Building a polished and intuitive front end that enhances user experience was also a significant achievement, making the tool accessible and easy to use.
What we learned
We learned the intricacies of handling asynchronous data fetching while maintaining the integrity of synchronous logic. Working with maps and complex data structures highlighted the importance of clear data handling and manipulation. The process also underscored the importance of modular, reusable functions for parsing, data extraction, and schedule computation.
What's next for Catalyst
The next step for Catalyst is to implement an automatic scheduling feature using the algorithm currently in development. This algorithm identifies all prerequisite courses that a student must complete for other required classes and calculates the frequency of each prerequisite. By scheduling the most frequently required prerequisites first, the system maximizes course options, enabling students to meet requirements more efficiently and progress toward graduation as quickly as possible. We would also like to expand our website to help students who go to different universities, and be adaptable to various other formats of degree audits.
Built With
- cheerio
- css
- framer
- next.js
- shadcn-ui
- typescript


Log in or sign up for Devpost to join the conversation.