Inspiration

One of the team member was doing leetcode blind 75 questions and read from redgreencode (a website created by Duncan Smith to help to learn algorithms using spaced repetition and deliberate practice) that spaced repetition is good for learning algorithms to prepare for technical interviews. He needed a way to implement spaced repetition and deliberate practice. We chose notion database because we could write about a specific question in-depth, the solution I implemented or hints on the platform without trying to look out for split content management system. I could also write my code on it, very helpful for spaced repetition and deliberate practice From the use of notion I wanted to remind myself which questions are due at which date, also needed to take notes and have hints, if i were to struggle with the implementation I divided the blind 75 leetcode questions into different topics, making it easier to practice and know where I need to put extra effort or where I’m lacking. This way I could practice (deliberate practice)

What it does

The program is a web-app that shows a calendar of leetcode problems with various due dates, a dashboard that shows the most imminent (or overdue) leetcode problems, and a feedback panel of three options to reflect how hard the retrieval process (coding out the problem) is. With scientifically backed evidence of how retrieval practices can lead to longer-term cognitive encoding and lowering cognitive load required for such retrieval behavior, this is proven a tool to be effective for newer generations of students and coders who need to hone in their skill without draining too much of their willpower.

How we built it

This program is built on React with using Notion API for database in the backbone. Queries are heavily asynchronously loaded to minimize clutter and artifacts. Algorithm wise, the currently implemented is a memrise-style flexible rate multiplication that adjusts to response on a flat rate. However, with the database constructed in a way that ease factor can be slip in anytime, it is possible to slip in a more powerful Anki SM-2 algorithm. Furthermore, to prevent having a crowd of problems due on the same day (as each coding session likely concentrates), the team decides to follow the new industrial standard in spaced repetition algorithm, the FSRS algorithm, in adding auto disperse and random fuzz to review dates to prevent unwonted clustering of problems (for example, getting same problem sets together all the time).

Challenges we ran into

The Notion API refuses to be accessed from a serverless application like React. In fact, with a bit of investigations, it is found as a intended feature. As a result, all attempts to add newer entries via pure serverless applications went fruitless.

Accomplishments that we're proud of

We found real world usage of spaced repetition algorithm in modern day learning beyond language learning usage.

What we learned

Skills around React is mostly appraised in the hacking of this project. The project does not propose heavy IO cost on the database, but practices of Notion API calling have been done, with heavily statically fits the doc of Notion.

What's next for Leetcode Spaced Repetition Software with Notion Database

Currently, each day's dashboard and calendar is generated per usage basis. Even though loading asynchronously provides a improvement in performance, there is still room for improvement by potentially caching the database in future. Moreover, it is advised to store all previous review history, as the current implementation simply copies each problems into newer entries of future dates, which is fast but not best usage of space. The current implementation does not crawl the description of the problem on leetcode nor include the tags or difficulties (it is all manual input), which could be a future improvement for ease of accessibility and usability.

Built With

Share this project:

Updates

Submission history