Inspiration
What it does
CodeBlocks is a playful and intuitive web app designed for primary school kids to dive into the exciting world of programming. With tactile blocks representing key programming concepts, children can solve engaging puzzles while learning the basics of coding. Our app scans their solutions, offering helpful hints and detailed explanations for each block's function, ensuring a fun and educational journey into the fundamentals of programming in a visually appealing and interactive environment.
How we built it
We hosted a web app using Flasks serving interactive web pages which allows students to upload images of blocks to solve interactive problems. These blocks were designed using CAD tools and brought to life using 3D printing. To recognize the blocks and evaluate a student solution, we used object detection and text recognition to generate tokens. These tokens are then parsed and evaluated through our new grammar which is a simple language allowing students to understand basic coding paradigms
Challenges we faced
One challenge we faced was deciding on the best implementation for our idea. We considered a variety of solutions, some of which were more software-based and some of which were more hardware-based, however, we settled on a computer vision approach due to the limitations on time and resources faced during the hackathon.
Accomplishments that we're proud of
We're incredibly proud of the amount we managed to build - in one day we built a full-stack app covering a variety of disciplines. We are also proud of how we were able to use different image-processing techniques to mitigate the challenges of mis-recognising code blocks
What we learned
We learned how to optimise models to be able to recognise images through different preprocessing techniques such as erosion and dilation (and heuristic to boost accuracy). We also learnt how to keep focus in times of stress when our machine learning model wasn't working for the code blocks.
What's next for CodeBlocks
We would like to use a personalised trained model on the blocks to improve the accuracy. We would also like to integrate more blocks and keywords into the language. Finally, we would like to add more problems for students to solve.
Log in or sign up for Devpost to join the conversation.