Inspiration
Computer Science has one of the highest dropout rates of 9.8% out of all higher education subjects [1]. Despite its popularity amongst students trying to break into the tech field, figuring out where to start is almost impossible in this current space. With boot camps and crash courses grappling for your attention with the promise to jumpstart your career, or college introductory courses infamously posing as weeder classes, it is not a surprise to see incoming students lose their passion and historically underrepresented minorities feel unwelcome and inadequate.
Our team’s research background in EdTech and former teaching experiences motivated us to tackle this nuanced obstacle to accessible access to CS education for all ages and experience levels. We propose a gamified approach to the learning, studying, and retention of core CS principles. Gamification has proven to engage players in active learning, enhance attitudes towards learning, and increase intrinsic motivation through natural collaboration and competition [2]. By mapping the essential computer science topics, ranging from the fundamentals to the more advanced areas, we aim to help our users build a strong foundation, reinforce what they are learning in school, and find their passions across the entire field.
What it does
Evergreen is extremely approachable and low-commitment for first-time users. We encourage them to start interacting with our platform by playing through a series of mini-games. While they are learning the game mechanics and having a good time, we are building a user profile on them behind the scenes. Their accuracy and response times from this preliminary assessment help us gauge where they are in their career as a student in CS. From here, we recommend a “path” of games for the user to play next, and encourage them to register for an account to save their progress and begin following their study plan on their dashboard!
A new game cannot be unlocked until we determine they have mastered the previous concepts in the path. This way, we guarantee mastery and understanding of fundamental concepts that are used in later concepts. Over time, the user is able to unlock all of the games and their respective domains, whilst tracking their learning and progress with built-in metrics on the dashboard. Our advanced recommendation modeling allows us to deeply analyze a student’s entire play history so that we can help them focus on priority subjects and become well-rounded across all the domains.
The gamification occurs in our design of each mini-game. Notable examples are drag-and-droppable characters in a line to visualize combinatorics, traversing intergalactic space with Dijkstra’s algorithm, or playing with soot sprites and their long arms to practice linked lists and pointers. Each game is designed to abstract the core principle to a fun and engaging experience, regardless if the player is a middle-school student getting introduced to CS, or a college freshman struggling with data structures.
How we built it
Our design was mocked-up on Figma. Our frontend was built with Sveltekit, which utilizes node.js. We took advantage of reactive elements in Svelte to load various displays in the UI, and added detailed styles for a sophisticated and aesthetically pleasing look.
Our backend was written in Python, using FastAPI for endpoints and a SQLite database for local storage. We chose to utilize this stack because it is efficient and has strict typing and auto-generated documentation.
We used Unity Engine and C# for game development. Game assets were acquired from Figma and hand-drawn by our game dev teammate. Game development was an intensive process, from the initial design to handling error-prone user cases. Metrics were created and integrated directly into the game, including scores, time spent playing rounds, button presses, etc. The game was deployed on WebGL and embedded into our frontend.
An extensive Sci-kit Learn machine learning workflow was conducted from start to finish with mock data in preparation for real-world game data from the Unity embed. Extra effort was spent on the feature engineering to ensure logical and accurate labels, as well as a well-prepared dataset for modeling. Random Forest was selected as a robust classification algorithm, and care was taken to prevent overfitting with techniques of hyperparameter tuning and K-fold cross-validation. An impressive score of 99.7% accuracy was achieved for the aggregate data across all 6 domains.
Challenges we ran into
One major challenge of our concept arose from our goal of maximizing the accessibility of our product to new users. We knew it would be difficult to capture and retain the interest of users if there was a long process to set up their account and build a recommended learning path. We decided to tackle this by making the first game one click away from the landing page for new users and assessing their skill level from only a few quick rounds played. New users immediately get a taste for how our content is delivered and can see a general map of the concepts they will explore after only a handful of clicks. This ties directly into another challenge we faced with predictive modeling. Because our use case was so niche, every metric, score, and data point had to be created based on our understanding of student learning behaviors and the CS concepts. This made it difficult to verify the initial validity of our assessments when we had no mock data.
Accomplishments that we're proud of
It was rewarding to build one integrated product composed of multiple layers of technology. We valued making a frontend that was detailed but simple to navigate, resulting in a platform that users will hopefully want to progress efficiently in. Our games were built with Unity and embedded into the frontend. Finally, the model was written in Python on Deepnote and goes into detail on how the machine learning workflow is set up. Each component of our project is technically independent, but was combined together to bring the vision of accessible, tailored education to life.
What we learned
Many of us remember learning about algorithms and concepts by analogizing them to real world concepts. We believe that our approach to delivering computer science education through games has the similar potential to make foreign concepts feel more engaging and understandable. However, our team also found that more complex or computationally involved concepts were difficult to design for, and may require different approaches to have the concept translated. It would be interesting to further research ways to make even difficult CS ideas engaging to learn, and still appealing to their elegance and simplicity.
What's next for Evergreen
With more time, we would have wanted to build out more of our games, and come up with more game ideas related to future concepts. We would also like to incorporate some cumulative assessments to ensure that users have retained the knowledge that they pick up once they pass each game. Down the line, our team is curious to explore how else predictive modeling can be used to tailor this mode of education to each individual. We’ve already shown that it can help each user learn at a comfortable pace, but it also has the potential to assess their learning styles and further personalize the content they receive.
[1] McDonough, Theresa. “Computer Science Dropout Rate: Why so High?” Tech With Tech, 5 Nov. 2022, techwithtech.com/computer-science-dropout-rate-why-so-high/.
[2] Sailer, Michael, and Lisa Homner. “The gamification of learning: A meta-analysis.” Educational Psychology Review, vol. 32, no. 1, 15 Aug. 2019, pp. 77–112, https://doi.org/10.1007/s10648-019-09498-w.
Built With
- c#
- deepnote
- fastapi
- figma
- html
- node.js
- python
- scikit-learn
- scss
- sqlite
- svelte
- typescript
- unity

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