
user takes advantage of the visual representation to
see step-by-step what is actually happening while also
providing some evaluation, while providing resources
for cybersecurity. The solution should be able to work
on any device with access to the Internet (laptop or
mobile device) to accommodate as many students as
possible, while also having lower requirements, min-
imal amount of RAM, storage and Internet traffic.
The application is composed of two components
(see Figure 1), an interpreter which handles how the
user input is received and analyzed to be transformed
into its visual representation. The other component
handles the evaluation of the new learned concepts:
custom questions created by the teacher that also
leverage the visualizing part. A brief introduction can
also be seen in the presentation video (RZData, 2024).
3.1 Interpreter Module
The interpreter module is further composed of two in-
dependent parts: the parser and visual representa-
tion. Those two parts are working together to reach
the final form of the representation. They commu-
nicate through the core using a specific protocol for
communication: the parser understands and converts
the data into specific drawing instructions, that are
sent to the drawing component. Both components
are built independent of each other, so they can be
replaced at any time with other equivalent ones. In
this manner, the platform could support multiple lan-
guages and multiple visual representations, either by
creating new ones or extending those already exist-
ing. Both components leverage abstractions, so when
a new language or representation is needed they could
easily extend the existing classes or create new ones,
having already a base to start from.
3.1.1 Parser Submodule
The parsing (language interpretation) component
is built to support the language is used for the course
Data Structures, for those in the first year of fac-
ulty. This language in inspired from both C by having
pointers and also from Python by having instructions
delimited by spaces. The students learn to write code
that is easier to read by having to follow proper code
spacing, and they also learn to use low-level opera-
tions like working with pointers. These low-level op-
erations also serve as sources for learning about safe
coding. The application contains a language docu-
mentation page for the syntax, examples and its fea-
tures (see Figure 2). While students could use existing
algorithms like sorting, they are encouraged to write
them on their own from zero. A visual representation
can also be observed in the presentation video (RZ-
Data, 2024) (minute 2:20).
The language has a Python-like syntax, and it
is very simplistic because the emphasis is on un-
derstanding the basic concepts like basic algorithms
(e.g., checking if a number is prime) and basic data
structures like queue, stack, linked list, binary tree.
Having in mind that this language is designed for stu-
dents in their first year of learning the basics of pro-
gramming, it uses functions that accepts simple data
structures as parameter instead of objects because the
focus is on taking small steps to learn how concepts
are used, and later the user could achieve the object-
oriented programming after they understand them.
For security purposes and for having better control of
what can and cannot be used in the interpretation pro-
cess, there exists a configuration file that marks which
functions are registered to be available in the pars-
ing process. Furthermore, the entire parser is writ-
ten in Python without many optimizations because the
parser on its own could be used as a teaching material.
For exporting the drawing instructions, the parser ob-
serves every change of the variables by understanding
every operation and variables allocation in the appli-
cation. It registers and stores all changes that happen
through initiation until the end of scope for that vari-
able.
If the parser finds errors, they will be exported in-
stead, showing which line is not respecting the speci-
fications. Depending on the teacher’s decision (if safe
coding is enabled), those errors could be transformed
into lessons on cybersecurity and safe coding. Incor-
rectly using pointers and low-level operations could
lead to invalid and unsafe memory states that could
be exploited by attackers. The parser can find those
problems and point them out (e.g., use of uninitialized
variables, dangling pointers, use of a freed pointer,
etc.). The user is guided on the problem and how it
can be fixed (see Figure 3).
The parser component has a few disadvantages
that are taken care of or have reduced impact in the
entire context:
• The component is built on Python so it has slower
execution time until it gets to the result, but this
is compensated due to the complexity of the lan-
guage because it has a basic syntax and the sim-
ple errors could be spotted almost instantly. The
upside of this is the lower development time and
having faster methods of developing and adding
new features to it.
• Every new function or new created object must
be registered to be accessible. Furthermore, ev-
ery member and function in new objects must be
specifically exposed to the exterior. This feature
CSEDU 2025 - 17th International Conference on Computer Supported Education
754