## Inspiration

Every student knows the struggle that is course registration. You're tossed into an unfamiliar system with little advice and all these vague rules and restrictions to follow. All the while, courses are filling up rapidly. Far too often students—often underclassmen— are stuck without the courses they need.

We were inspired by these pain points to create Schedge, an automatic schedule generator.

## What it does

Schedge helps freshmen build their schedule by automatically selecting three out of a four course load. The three courses consist of a Writing the Essay course, the mandatory writing seminar for NYU students, a Core course like Quantitative Reasoning, and a course in the major of the student's choosing.

Furthermore, we provide sophomores with potential courses to take after their freshman year, whether that's a follow up to Writing the Essay, or a more advanced major course.

## How we built it

We wrote the schedule generation algorithm in Rust, as we needed it to be blazing fast and well designed. The front end is React with TypeScript and Material UI. The algorithm, while technically NP complete for all courses, uses some shortcuts and heuristics to allow for fast schedule generation.

## Challenges we ran into

We had some trouble with the data organization, especially with structuring courses with their potential meeting times.

## Accomplishments that we're proud of

Using a more advanced systems language such as Rust in a hackathon. Also our project has immediate real world applications at NYU. We plan on extending it and providing it as a service.

## What we learned

Courses have a lot of different permutations and complications.

## What's next for Schedge

More potential majors and courses! Features for upperclassmen!
## Inspiration

As a team of post-secondary students, we’ve all been through the torment of realising that the courses you intended to take have times that conflict with each other. But if there’s one thing AI can do, it’s making decisions in a short period of time (provided they have the data). Rather than having students search through each course description to decide on how they’ll arrange their schedule, we wanted to create a product that could generate schedules for them, so long as they are provided sufficient information to decide which courses should be in the schedule, and when.

## What it does

Borzoi Scheduler is a website that builds course schedules for UofT students. Users just need to provide their program of study, the semester they’re planning for, and the times when they don’t want classes, then Borzoi will generate a schedule for them. With additional exchanges between the user and Borzoi’s AI chat, further specifications can be made to ensure the schedule is as relevant as possible to the user and their needs.

## How we built it

Figma was used to create a high-fidelity prototype of the website, demonstrating its functionalities with a sample use case. Meanwhile, Python was used in combination with the ChatGPT API to build the chat that users will interact with to create the personalised schedules. As for the website itself, we used HTML, CSS, and Javascript for its creation and design. Last, but not least, we attempted to use Flask to bring the frontend and backend together. Given the time constraint, we were unable to incorporate the databases that would’ve been required if we actually had to create schedules with UofT courses. However, our team was able to utilise these tools to create a bare-bones version of our website.

## Challenges we ran into

Although we were able to settle on an idea relatively early on, due to a lack of experience with the software tools we’d previously learned about, our team had trouble identifying where to start on the project, as well as the technicalities behind the way it worked. We recognised the need for implementing AI, databases, and some sort of frontend/backend, but were unsure how, exactly, that implementation worked. To find our way to the start of actually creating the project, we consulted multiple resources: from Google, to the mentors, and even to ChatGPT, the very AI we intended to use in our website. Many of the answers we got were beyond our understanding, and we often felt just as confused as when we first started searching.

After a good night’s rest and some more discussion, we then realised that our problem was that we were thinking too broadly. By breaking our ideas down into smaller, simpler chunks, we were able to get clearer answers and simultaneously identify the steps we needed to take to complete the implementation of our ideas. Our team still came across many unknowns along the way, but with the support of the mentors and quite a bit of self-learning, each of these points were clarified, and we were slowly, but surely, able to move along our development journey.

## Accomplishments that we're proud of

Our team is proud of all that we were able to learn in these past 2-3 days! Although we weren’t able to come up with how to write all the code completely on our own, it was a rewarding experience, being exposed to so many development tools, learning the pros and cons of each, and (at the cost of our sleep) figuring out how to use the new knowledge. In particular, at the start of this event, our group wanted to work with AI specifically because none of us had experience with it; we wanted to use this hackathon as an excuse to learn more about this topic and the tools needed to apply it, and we were not disappointed. The time spent doing research and asking mentors for suggestions deepened our understanding of the use of AI, as well as a variety of other tools that we’d often heard of, but had never interacted with until we participated in this hackathon.

## What we learned

As mentioned in the accomplishments section, after these past 2-3 days, we now know quite a bit more about AI and other topics such as APIs, JavaScript, etc. But technical knowledge aside, we discovered the importance of breaking problems down into more manageable pieces. When we first started trying to work on our idea, it felt almost impossible for us to even get one function working. But by setting mini goals, and working through each one slowly, and carefully, we were eventually able to create what we have now!

## What's next for Borzoi Scheduler

At the moment, there are still a number of functionalities we’re hoping to add (features we wanted to add if we had more time). For one, we want to make the service more accessible by providing voice input and multilingual support (possibly with the use of WhisperAI). For another, we’re hoping to allow users to save their schedule in both a visual and textual format, depending on their preferences.
Once those functions are implemented and tested, we want to consider the scope of our service.

Currently, Borzoi Scheduler is only available for the students of one school, but we’re hoping to be able to extend this service to other schools as well. Knowing that many students also have to work to pay for rent, tuition, and more, we want to allow as many people as possible to have access to this service so that they can save time that can be used to focus on their hobbies, relationships, as well as their own health. Though this is a big goal, we’re hoping that by collaborating with school services to provide accurate course information, as well as to receive possible funding for the project from the schools, this mission will be made possible.

Furthermore, as scheduling is not only done by students, but also by organisations and individuals, we would like to consider creating or adapting Borzoi Scheduler to these audiences so that they may also save time on organising their time.
# Are You Taking

It's the anti-scheduling app. 'Are You Taking' is the no-nonsense way to figure out if you have class with your friends by comparing your course schedules with ease. No more screenshots, only good vibes!

## Inspiration

The fall semester is approaching... too quickly. And we don't want to have to be in class by ourselves.

Every year, we do the same routine of sending screenshots to our peers of what we're taking that term. It's tedious, and every time you change courses, you have to resend a picture. It also doesn't scale well to groups of people trying to find all of the different overlaps.

So, we built a fix. Introducing "Are You Taking" (AYT), an app that allows users to upload their calendars and find event overlap.

It works very similar to scheduling apps like when2meet, except with the goal of finding where there *is* conflict, instead of where there isn't.

## What it does

The flow goes as follows:

1. Users upload their calendar, and get a custom URL like `https://areyoutaking.tech/calendar/<uuidv4>`
2. They can then send that URL wherever it suits them most
3. Other users may then upload their own calendars
4. The link stays alive so users can go back to see who has class with who

## How we built it

We leveraged React on the front-end, along with Next, Sass, React-Big-Calendar and Bootstrap.

For the back-end, we used Python with Flask. We also used CockroachDB for storing events and handled deployment using Google Cloud Run (GCR) on GCP. We were able to create Dockerfiles for both our front-end and back-end separately and likewise deploy them each to a separate GCR instance.

## Challenges we ran into

There were two major challenges we faced in development.

The first was modelling relationships between the various entities involved in our application. From one-to-one, to one-to-many, to many-to-many, we had to write effective schemas to ensure we could render data efficiently.

The second was connecting our front-end code to our back-end code; we waited perhaps a bit too long to pair them together and really felt a time crunch as the deadline approached.

## Accomplishments that we're proud of

We managed to cover a lot of new ground!

* Being able to effectively render calendar events
* Being able to handle file uploads and store event data
* Deploying the application on GCP using GCR
* Capturing various relationships with database schemas and SQL

## What we learned

We used each of these technologies for the first time:

* Next
* CockroachDB
* Google Cloud Run

## What's next for Are You Taking (AYT)

There's a few major features we'd like to add!

* Support for direct Google Calendar links, Apple Calendar links, Outlook links
* Edit the calendar so you don't have to re-upload the file
* Integrations with common platforms: Messenger, Discord, email, Slack
* Simple passwords for calendars and users
* Render a 'generic week' as the calendar, instead of specific dates