project
CodeSpell is a reactive graphic platform for programming teaching and learning. By exploring basic programming concepts, we allow our users (students, beginners at programming/coding) to visually study the effect of different programming mechanisms.
demo
poster
Abstract
Nowadays programming learning for beginners is mainly focused on solving abstract problems, most of them of mathematical nature (i.e, "implement an algorithm that prints the Fibonacci sequence"). As a result, students not only need to understand the programming concepts that are being transmitted, but also the complex abstraction behind them.
To combat that, CodeSpell intends to create a reactive graphical platform that allows students to visually identify and explore the effects of several programming mechanisms based on their code (i.e, for/while loops, branching, if and switch statements, etc.). If the code developed by the student compiles and corresponds to the goal of the suggested problem, the platform is capable of interpreting it and its graphical environment interacts with the user, showing some awesome animations. If the code doesn't compile or has syntax mistakes the platform comes with the ability to show errors in a more user-friendly way than a conventional terminal so that students can easily figure out where everything went wrong in their solution.
Documentation, tips, and possible solutions for the problems are also at the core of CodeSpell's awareness, regarding its importance in the teaching of programming.
Alongside this didactic strand, CodeSpell also wants to explore a game-like perspective, focusing on a fun and competitive user experience divided by levels (i.e, each level deals with a different programming topic). Achievements, scoreboards, and community solutions have been implemented so that users feel motivated to improve their programming skills. Users will also be able to consolidate their knowledge and learn different approaches by exploring other users' solutions.
To make this implementation possible, several architectural modules have been considered so that the different system requirements could be satisfied:
- The backend strand consists of a SpringBoot-based REST API.
- The frontend and graphics aspects, were developed in ReactJS and Three.js.
- The data layer, using MongoDB and Redis.
- The analysis, execution, and launching of the code developed by the user, are carried out in SpringBoot and Docker containers.
- The WebSockets module to update the frontend regarding the user actions, was also developed in Spring Boot.
CodeSpell is not only a mighty classroom software but also a fun and illustrative game for new programming enthusiasts and a very needed, user-friendly spin on the way to teaching programming.
About
Context
-
There is a pent-up demand for programmers in the technology market;
-
The need of programmers should grow in the next few years;
-
There are more and more people interested in learning how to code.
-
As the world gets progressively more digital, understanding the basic concepts of how a digital system works will be a huge advantage.
Problem
-
Learning how to write code can be a challenging and frustrating task;
-
It is hard to maintain new programmers motivated to keep learning;
-
Illustrating where the initial concepts of a programming language can be applied is a difficult task;
-
Creating examples where the concepts can be applied is a time-consuming task and many times depends on abstract examples.
Goals
-
Teach our users how to write code in a simple, visual, and fun way;
-
Create a competitive experience to keep users interested in improving their skills;
-
Create an easy-to-use platform that can be used by regular users and instructors;
-
Provide documentation, tips, and possible solutions to teach our users how to learn;
Calendar
Iteration 1- 22/3
Research and define requirements
Define context goals and tasks
Define team roles
Draft architecture
Iteration 2 - 29/3
Define Architecture
Draft prototype
Draft API endpoints
Iteration 3 - 5/4
Write story theme of the game
Define core concepts to learn
Define personas and use cases
Implement static prototype
Iteration 4 - 12/4
Start development of API
Finish first version of prototype
Iteration 5 - 23/4
Implement first features.
Code launcher development
Iteration 6 - 3/5
Implement the first-level graphics.
Implement leaderboards.
Write tests for the features implemented.
Iteration 7 - 17/5
Implement more levels.
Code analyzer development.
Code executor development.
Iteration 8 - 24/5
Implement more levels.
Implement challenges/badges.
Write tests for the features implemented.
Iteration 9 - 31/5
Implement security mechanisms to protect users’ accounts.
Iteration 10 - 7/6
Write Technical Report.
Iteration 11 - 17/6
Finish Technical Report.
Iteration 12 - 21/6
Polish rough edges.
Final presentation.
Github
Code Repository
documents
Calendar
Presentation M1
Presentation M2
Presentation M3
Technical Report
API Endpoints
Prototype
Prototype


