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.

Share this project:

Updates