I am a French student who went to Ireland for his studies after secondary school where I studied Creative Computing. During my time at IADT, I had the unique opportunity to grow individually and learned to dare undertake projects on my own. This last year of college helped me understand that I could acquire knowledge by myself outside the realm of my studies. But also that it is fine to do things and fail, even if unrelated to web development, my primary domain of expertise. I just can't not recommend the college for all the good it brought me.
Kram is a web flashcard application developed with the MEVN stack. Its purpose is to help users acquire knowledge, such as a foreign language, using a new kind of spaced repetition algorithm. Long story short, spaced repetition algorithms aim at predicting the probability of when learners forget information. If Kram is thought for language acquisition, it also can be used for any sort of information fitting in a single flashcard. Another key element of Kram is that it also enables learners to access knowledge from other users as cards and public decks are accessible to anyone owning an account on Kram.
Among the many objectives, I set for the project was to reimagine a new sort of spaced repetition algorithm. Unlike the algorithms, it derives from, Kram uses a new kind of approach. First, by teaching knowledge efficiently before secondly, making actual predictions, using a double cue system, which I refer to as the learning and graduating cues. Another big challenge that I set to myself was to create a convincing UX interface, both intuitive and responsive, to provide the most agreeable experience. This philosophy derives from the fact that learners often require a good environment for proper learning, but also need to keep the motivation going on. Thus, I had a tough time delivering a UX that would tackle design that other applications suffer from and that remained exciting enough to create user retention. Lastly, to be in line with the open-source philosophy that is dear to my heart, the project emphasizes knowledge sharing by making cards and decks publicly available to any user. And thus, if cards are by default public, unlike decks. Deck owners may very well decide to set them as public which enables other learners to access those decks. A voting system is also there to make sure that better decks stand out from lesser ones.
After four months of development, I managed to finalise Kram. The project did not end up the way I imagined it at the beginning. First, the UI is the weak point of the application, it feels very bootsrapy, and I don't think it is worth talking about it as it's not something I put a huge emphasis on it. Another negative outcome, in my opinion, is the fact that the application is not doing anything groundbreaking at first sight. It is not using any AI system, features seem basic, etc. Nonetheless, the application was rich in teachings for me. I grew more confident in decision making (i.e. the algorithm is technically my own, and they are no similar ones to the extent of my knowledge. Thus, I was alone in that process which proved to be stressful for me). Furthermore, it was a challenge to conduct almost alone this project. One of the biggest challenges from my perspective was setting solid bases (i.e. the database architecture) to enable a good creative process. I believe I made excellent progress in that regard. I believe the application would gain a lot if I had more time to work on it. I would rework bits of code so they would be more efficient. I would add an AI tool using Probase model to generate contextualized decks. Lastly, I would rethink the voting system, probably using a logarithmic function to enable more deck discoverability.
The thesis aims to cover everything that happened during the project development. Firstly, a large section focuses on the research I made leading to the development, of how knowledge is acquired, memorized and recalled. Furthermore, discusses how design may make studying easier. Then, it describes what the objectives of the project were, how designing was conducted, the choice made for the algorithm, database structure, the technology stack, etc. The implementation chapter covers redundant and unique pieces of code for both the API and application itself and discusses what were my achievements. Lastly, the testing chapter goes over the two testing phases I went through. The first one that was sued to test spaced repetition over five days, testing Esperanto. And the second phase testing the user interace.