0% found this document useful (0 votes)
8 views8 pages

CEISEE-AlgorithmiBridgingtheAlgorithmstoNaturaland 2019 IEEE

The paper presents Algorithmi, a system designed to facilitate the learning of algorithms using students' native languages, which can be automatically translated into popular programming languages. It introduces the Generic Algorithm Language (GAL), which allows students to write algorithms in their mother tongue and provides a learning environment that includes flowchart-based editing and execution. The system aims to bridge the gap between natural and programming languages, enhancing accessibility for learners who may struggle with English-based programming environments.

Uploaded by

pauloagsantos
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
8 views8 pages

CEISEE-AlgorithmiBridgingtheAlgorithmstoNaturaland 2019 IEEE

The paper presents Algorithmi, a system designed to facilitate the learning of algorithms using students' native languages, which can be automatically translated into popular programming languages. It introduces the Generic Algorithm Language (GAL), which allows students to write algorithms in their mother tongue and provides a learning environment that includes flowchart-based editing and execution. The system aims to bridge the gap between natural and programming languages, enhancing accessibility for learners who may struggle with English-based programming environments.

Uploaded by

pauloagsantos
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 8

See discussions, stats, and author profiles for this publication at: https://www.researchgate.

net/publication/333633107

Algorithmi: Bridging the Algorithms to Natural and Programming Languages

Conference Paper · June 2019

CITATIONS READS

2 433

5 authors, including:

Antonio Manso Célio Gonçalo Marques


Polytechnic Institute of Tomar Polytechnic Institute of Tomar
67 PUBLICATIONS 214 CITATIONS 379 PUBLICATIONS 312 CITATIONS

SEE PROFILE SEE PROFILE

Paulo Santos Luís Lopes


Polytechnic Institute of Tomar Polytechnic Institute of Tomar
25 PUBLICATIONS 38 CITATIONS 4 PUBLICATIONS 6 CITATIONS

SEE PROFILE SEE PROFILE

All content following this page was uploaded by Antonio Manso on 19 June 2019.

The user has requested enhancement of the downloaded file.


Algorithmi: Bridging the Algorithms to Natural and
Programming Languages
António Manso Célio Gonçalo Marques Paulo Santos
Ci2 – Smart Cities Research Center Techn&Art - Centro de Tecnologia, Departmental Unit of Information
Polytechnic Institute of Tomar Restauro e Valorização das Artes Technologies
Tomar, Portugal Polytechnic Institute of Tomar Polytechnic Institute of Tomar
[email protected] Tomar, Portugal Tomar, Portugal
[email protected] [email protected]
Luís Lopes
Student Raquel Guedes
Polytechnic Institute of Tomar Student
Tomar, Portugal Polytechnic Institute of Tom
aluno19055@ ipt.pt Tomar, Port ugal
aluno19994@ ipt.pt

Computer programming is a fundamental competence in practical application because the problems that serve for
computer science and their learning is done through languages learning have a more playful context. One of the most
and IDE that were designed for the development of software important programming tasks is the automatic mathematical
in an industrial context. Invariably these environments and calculation through computational expressions. If languages
programming languages use the English lexicon, and this can do not support these calculations, then its applicability boils
be an obstacle especially for users who do not master this down to the teaching of computational logic.
language. Algorithmi is a system that allows the learning of In order to provide a tool for teaching and learning
algorithms using the native language of the students in its computational algorithms that smooths the transition to
specification and allows automatic translation into the most traditional programming languages and environments we
popular programming languages. In this article we present the created Algorithmi. Algorithmi is an evolution of Portugol
language Generic Algorithm Language (GAL) and its IDE [7], [8], and provides a learning environment for
translation into the Portuguese, English and Chinese computational algorithms in which students use the language
languages. In this paper we also show the translation of GAL that is based on their native language. The editing and
for the procedural programming models (C and Python), the execution of the algorithm is based on flowcharts, and the tool
Object-Oriented model (Java, C # and C ++) and the Web allows its translation into the most popular programming
programming model through the PHP (server-side) and languages. This facility enables students to view the
Javascript language (Client-side). Algorithmi in addition to algorithms in their native language and their translation into
allow algorithms to be programmed, it can also be executed various programming languages and paradigms. This paper
inside the IDE or translated into HTML, CSS and Javascript describes how Algorithmi translates the algorithm into the
natural languages of the students and programming languages
and executed in the browser..
used in the software development industry.
Keywords - Algorithmi, Learning, Information System, II. NATURAL LANGUAGES AND PROGRAMMING LANGUAGES
Programming. Idioms and languages, although related, are different
concepts. Idiom is an organized set of elements that enables
I. INTRODUCTION communication. On the other hand, language is the ability to
Computer programming is a core competency of several produce, develop and understand an idiom. We can consider
areas of computer science and failure to commit to learning idiom as the tool used by a language to materialize.
the other content that depends on it. Learning to program is
not easy because it requires the combination of personal and A. Natural Languages
cognitive skills that students need to develop. The absence of Most existing languages are natural languages that were
these competencies leads to a high failure rate in introductory born from oral communication between individuals and have
programming modules which makes it difficult for students to later evolved to written form and symbolic representation.
progress and complete their degrees [1] [2] [3] [4]. When writing was created, human beings attempted to
Programming means thinking abstractly and requires a lot of give a visual representation to the words they used in their oral
motivation and commitment. For this reason, we have seen the communication and this representation in the early writings
replacement of traditional teaching approaches with more
was essentially ideographic, i.e. each symbol represented an
motivating technological solutions, such as Logo [5] or
idea. It is curious how civilizations with no apparent contact
Scratch [6].
like the Egyptians or the Mayans, both developed an
These tools are extremely fun and is easy to learn ideographic writing based on hieroglyphs. However, it was
programming with it, but they are very different from the the Phoenicians who created a writing system based on
commercial programming languages that students will find in phonetic sounds associating a symbol with each phonetic
the job market. The programming environments of these sound [9] which eventually gave rise to the Greek, Latin and
languages have a friendly interface, often in the mother tongue Arabic alphabet that is used by most languages. The Chinese
of the students. However, the algorithms do not have a writing system, which gave rise to Japanese and Korean (also
widely used) incorporates features of ideographic writing and
phonetic writing, i.e. symbols representing ideas and symbols All computer languages have in common the fact that there
representing sounds. is then a translation process that translates the message written
on that language into machine language so that the computer
Language evolution has been exponential, slow and time- can understand it. It is in this process of translation that a slight
consuming at first. Oral language took thousands of years to breach of the syntactic rules is enough to prevent the computer
evolve from small sounds to a vocabulary that allowed rich from decoding it.
and efficient communication between individuals and evolved
more rapidly as people were getting to know each other and Comparing the evolution of the writing of natural
creating cultural and commercial relations. Or was simply languages with the writing of computational languages, the
imposed by military power through territorial conquests. first began with ideographic symbols and later evolved into a
phonetic representation, the second ones always tried to give
The Portuguese language, for example, derives from Latin, the programmer a more natural way of talking to the computer,
imposed by the military expansion of the Roman Empire, with but never evolved beyond that. They evolved in the context of
influences of the Celtic spoken by the Iberian peoples that solving and addressing the problems to be solved, with the
previously inhabited the region, with Germanic influences creation of several programming paradigms, but in their
imposed by the Suevi and the Visigoths that followed the essence, these paradigms are encoded with a set of similar
Romans and with influence of the Arabic through the Muslim
instructions. When learning programming, it is fundamental
invasion of the Iberian Peninsula. All these events influenced for students to master the language of interaction with the
the Portuguese language only in hundreds of years. Today, computer, and the computational languages seem to have all
languages are influenced not in thousands of years, not been designed to solve complex problems and not for teaching
hundreds, but only in tens. The increase in schooling, the programming.
removal of borders imposed by common economic areas,
emigration and globalization have put pressure on languages. III. ALGORITHMIC LANGUAGE
All these pressures make languages evolve, often faster than The algorithmic language is an evolution of Portugol,
their safeguarding bodies would desire. whose main characteristic is the fact that the students write the
Each language has its own rules but in day-to-day algorithms in the Portuguese language. The language was
communication people often infringe some of these rules and designed to teach programming and contains only what is
this forces it to evolve. essential for this purpose. This simplification of general-
purpose computational languages leads to a reduced lexicon.
Algorithmi is a programming learning environment that uses
B. Computational languages a formal language based on tokens, which is used to represent
Although computational languages seem to different from and execute algorithms – the so-called General Algorithm
natural languages, their origins are very similar and they serve Language or GAL for short.
the same purpose: to communicate a message. Natural
GAL is the language used by the core to verify and execute
language arises from the need of individuals to communicate
algorithms in the learning system, Edition and execution of
with each other, just as computational languages arise from
algorithms is done by translating reserved words – tokens – to
people’s need to communicate with computers.
corresponding words in the student’s mother tongue.
So, if natural languages are subject to pressures that lead
The GAL language predefined the keyboard as input
to their evolution, a similar thing happens with computational
device and the screen as output device. The algorithms are
languages. Just as natural languages have their grammatical
represented by computational instructions that manipulate
rules, computational languages have their syntactic rules.
variables, to which a data type is associated (Table 1) by
However, it is in these rules that lies the main difference
reading the keyboard or by processing through operators and
between these two types of language.
functions (Table 2). The result of processing is displayed in
In natural language, a severe infringement of grammatical the console. The delimiters and operators are static and
rules may prevent the other party from understanding the defined in the core of the language, however everything else
message, but a slight mistake may not prevent the message is dynamic and can be translated into natural language words.
from getting through. But in computational languages even a
slight infringement of the syntactic rules is enough to prevent Table 1 presents the GAL simple data types in Portuguese,
the computer from perceiving the message. English and Chinese. The void type was introduced to allow
for the setting procedures, namely functions that do not
Computers use the 0/1 alphabet to represent messages that perform calculations. The integer and real types allow you to
are transmitted to them by humans using natural language. represent numeric data, the logical type represents the true and
Computational languages have evolved over the last 70 years false values, and the text type allows you to represent a set of
starting [10] with those of the 1st Generation (where Machine characters.
Languages fits in), in which the programmer had to have a
deep knowledge about the computer to communicate with it.
Those of the 2nd Generation, which include Assembler. Those
of the 3rd Generation, those of high level, where the
procedural languages fit with Basic, Pascal, C, Cobol or
Fortran. Those of the 4th Generation, which were highly
specialized languages in some tasks, such as DBASE, SQL or
Clipper. To conclude, those of the 5th Generation that include
object-oriented languages such as C++, Java, functional
languages such as LISP and logical languages such as
PROLOG.
TABLE 1 – TYPES OF DATA The functions defined in Table 2 are the ones that we
GAL Portuguese Chinese English consider necessary to develop computational algorithms and
can be translated into the most popular computer languages.
VOID vazio 空虚 void TABLE 3 – CONTROL STRUCTURES

INTEGER inteiro 整数 integer GAL Portuguese Chinese English

REAL real 真实 real BEGIN inicio 开始 begin

TEXT texto 串 text END fim 结束 end

LOGIC lógico 布尔 logic DEFINE definir 限定 define


TABLE 2 – FUNCTIONS
READ ler 读 read
GAL Portuguese Chinese English
EXECUTE executar 执行 execute
INT int 整数 int
WRITE escrever 写 write
ELEMENTSOF length 要点 elementsof
IF ELSE se senão 如果其他 if else
SIN sin 罪 sin
WHILE enquanto 而 while
COS cos 余弦 cos
DO faz 做 do
TAN tan 黄褐色 tan
ITERATE iterar 对于 for
ASIN asin 反正弦 asin
JUMP saltar 打破 jump
ACOS acos 反余弦 acos
FUNCTION função 功能 function
ATAN atan 反正切 atan
RETURN retornar 返回 return
SINH sinh 双曲正弦 sinh

COSH cosh 双值的双曲 cosh Table 3 presents the instructions that are defined in the
余弦值 language. This set of instructions is what is strictly necessary
to teach and learn the basics of algorithm for problem solving.
TANH tanh 正切 tanh All algorithms start with BEGIN and end with END this also
allows closing blocks of instructions. The DEFINE statement
ABS abs 绝对 abs allows the definition and initialization of variables and
EXECUTE allows you to change its contents through
EXP exp 指数 exp computational expressions. The interaction with the console is
done through READ for the user to enter data and WRITE to
write information to the console. The IF ELSE statement
INT int 整数 int
allows you to make decisions with conditional expressions,
and the DO, WHILE, and ITERATE statements allow to repeat
LOG log 日志 log a block of statements. The JUMP instruction allows you to
change the instruction flow within a cycle in conditional
LN ln 自然对数 ln shape, allowing you to break or continue the cycle. The
FUNCTION instruction allows the user to define functions by
MIN min 分 min allowing the modularization of algorithms and the RETURN
instruction allows the return of a value from functions that
MAX max 最大 max perform calculations. The EXECUTE statement also allows
the execution of procedures (Functions that do not calculate
values).
POW pow 提升到了权 pow
力 Alg. 1 shows an algorithm, written in GAL language, that
prompts the user for their name and then prints a greeting. The
SQRT sqrt 开方 sqrt program exemplifies some of the characteristics of the
language, namely the definition and reading of variables, and
writing on the screen of text and computational expressions.
RANDOM random 随机 random
ALG. 1- PROGRAM THAT PRESENTS A COMPLIANCE WITH USER IN GAL
LANGUAGE.

BEGIN MAIN_PROGRAM_NAME
DEFINE TEXT txt SET "Hello "
WRITE "What's your name? "
READ TEXT name
WRITE txt SUM name SUM "!"
END MAIN_PROGRAM_NAME Figure 1 – Translator of natural languages of the application

Translations are stored in XML files that can be edited


independently by more experienced users. These files are
In the following sections we present the algorithm
automatically read by the system in the application language
approaching the translation of the algorithm for natural
languages and computational languages. folder without any application compilation required.
The algorithms represented above are translated
A. Translation for natural languages automatically using available languages of the list
Algorithmi allows to translate the algorithm into any natural represented in Figure 2.
language as long as the equivalences between GAL and its The available languages on the list are Extensible Markup
words in the native language are predefined, as shown in Language (XML) files produced by the application
Table 2 and Table 3. The translation of the algorithm for the represented in Figure 1.
natural languages is done translating the tokens for the words
into the desired language and Alg. 2 presents the translation
of Alg. 1 to the Portuguese, English and Chinese languages.

ALG. 2 - TRANSLATION FROM ALG. 1 TO PORTUGUESE, ENGLISH AND


CHINESE LANGUAGES.

inicio Programa principal


definir texto txt = "Hello "
escrever "What's your name? "
ler texto name
escrever txt + name + "!"
fim Programa principal

begin MainProgram
define string txt = "Hello "
write "What's your name? "
read texto name
write txt + name + "!"
end MainProgram

开始 主程序
限定 串 txt = "Hello "
Figure 2 – Natural language selector
写 "What's your name ? "
读 串 name Algorithmi allows to edit and visualize the algorithms in
写 txt + name + "!" flowchart form. The flowcharts replace the GAL instructions
结束 主程序 of Table 3 by graphic shapes, where computational
expressions will be written.
Alg. 1 has a graphical representation in flowchart form
(Figure 3, Figure 4 e Figure 5). In the flowcharts, the
The algorithm natively has some languages but it allows instructions in Table 3 are translated by the flowchart’s
the new language to be added. To create translations, a small symbols, the words that are present in Table 1 and Table 2
application was developed, Figure 1, which allows to add are translated into the language of the user. In computational
new languages in a simple and practical way. expressions, the names of variables, numerical constants and
As shown in Figure 1, there are 3 different panels. The texts are kept such as, for example, the constant “Hello”.
first panel has a listing of the GAL language keys that are to
be translated. The second has the translation of the keys in the
languages that are available in the application. The user can
change the translation language whenever he wishes so that
he can clarify any doubts that the current translation presents
and the third one is used to make the translation.
Figure 3 – Flowchart algorithm in Portuguese

Figure 6 – Programing language selector

1) Procedural languages
Procedural languages are high-level languages that use an
ordered set of instructions to write programs. The procedural
name comes from the fact that there are sets of instructions
grouped into functions or procedures. This feature allows you
to take a top-down approach to solving complex problems by
dividing them into simpler problems. This approach to
problem solving is one of the basic skills in computer
programming and most programming languages use the
Figure 4 – Flowchart algorithm in English concept of function or variants of it.
Algorithmi allows you to automatically translate to
procedural languages both C and Python.
C language is one of the most popular general-purpose
languages that provides compilers for a range of computer
system architectures. It was developed in the early 1970s by
Ken Thompson and Dennis Ritchie, it is a standardized
language (ISO) and gave rise to some of the more modern
languages such as C ++, which share much of its syntax and
semantics.
The executable programs generated from this language
are very efficient in the use of computational resources which
makes it the preferred language for programming critical
systems such as operating systems like Unix, for example.
Figure 5 – Flowchart algorithm in Chinese Recently with the appearance of the Internet of Things, IOT,
which uses devices with reduced computational power, the C
B. Translation for programming languages language is very used in programming.
Translation for programming languages is much more
complex. Natural languages have a direct translation because The Python language is a modern programming language that
the GAL language was developed for this purpose, in addition supports several programming paradigms. Launched by
to being interpreted by humans who use their intelligence to Guido van Rossum in 1991, it is currently maintained by a
make sense of words. community of programmers who develop specialized
Programming languages are formal languages that are libraries that allow them to expand language capabilities. It is
a language with increasing popularity and its syntax and
compiled and executed by computers. The rules for writing semantics is based on a set of principles known as The Zen
programs are strict and vary from language to language. of Python[11] that promotes its simplicity and beauty.
Programming languages invariably use English words in their
lexicon and differ from one another in the syntax and ALG. 3- ALGORITHM TRANSLATION REPRESENTED ALG. 1 FOR C AND
PYTHON LANGUAGES.
semantics of computational instructions.
As shown in Figure 6, the users can change easily from #include <stdio.h>
int main() {
one language to another. This way of visualizing translations char txt[256]= "Hello ";
for programming languages facilitate student learning printf("What's your name ? ");
because they can start with basic programs and increase char name[256];
fgets(name,256, stdin);
difficulty in order understand how the language works, using printf("%s %s !",txt,name);
always their native language to make the programs. }

txt = "Hello "


print( "What's your name ? " , end="")
name = str(input())
print(txt, name, "!" , end="")
Alg. 3 presents the translation Alg. 1 for C and Python Hello application;
language. This example demonstrates how different application.main();
languages can be, and therefore there is no common }
procedure for translating algorithms into programming
languages. Algorithmi allows translation of algorithms for Java, C #
and C ++ languages that are shown in Alg. 4.
In Alg. 3, C language requires the definition of variables with All these languages share the same programing model and
data type, whereas the Python language does not, . C use “Class” as the reserved word to define their object model.
language does not have the native type string, therefore a The Java and C# language allow to define the main
vector of 256 characters must be defined whereas in Python method inside the class which helps the translation of the
the string is a native dynamic object. algorithm through static methods while the C++ language
C language has the braces ("{" and "}") to delimit blocks only allows to define the model needing the main function to
whereas Python uses indentation. These features are visible create an object to be executed.
in a very simple program (Alg. 3), the differences between 3) Web programming language
the languages are so large that it is not possible to define a
The programming languages for the Web, as the name
generic procedure to do their translation. This translation will
implies, are intended to develop applications that run on the
have to be done through specialized code, made by
Web. The web is composed of a set of servers that provide
experienced programmers in the language in order to be able
services to clients that are represented by browsers.
to obtain programs that can be compiled and executed by the
Algorithmi provides the PHP languages, which is used to
computer.
develop server-side applications, and the JavaScript language
used to develop client-side applications, the browser. Alg. 5
2) Object oriented Languages presents the translation of the algorithm for the PHP and
Object-oriented languages allow the programming of Javascript languages.
applications based on composition and iteration between
objects. These objects are the fundamental unit of problem ALG. 5 - ALGORITHMO TRANSLATIONS REPRESENTED IN ALG. 1 FOR THE
solving that are defined through models given the name of PHP AND JAVASCRIPT LANGUAGES.
classes. This is one of the most successful programming <?php
models in systems programming and there are many function main() {
languages that support it. $txt = "Hello ";
echo "What's your name ? ";
$name = isset($_POST["$name"])?
ALG. 4 - ALGORITHMO TRANSLATION REPRESENTED ALG. 1 FOR THE
$_POST["$name"] : isset($_GET["$name"]) ?
LANGUAGES JAVA, C# AND C++.
$_GET["$name"] : 0;
import java.util.Scanner; echo $name . "<br/>";// print input
public class Hello { echo $txt . $name . "!";
static Scanner keyb = new Scanner(System.in); }
main();
public static void main( String[] args) { ?>
String txt = "Hello ";
System.out.print("What's your name?"); function main() {
String name = keyb.nextLine(); var txt = "Hello ";
System.out.print(txt + name + "!"); document.write("What's your name ? ");
} name = prompt("name","");
} document.write(name + "\n");
document.write(txt + name + "!");
using System; }
public class Hello {
static void Main() {
String txt = "Hello ";
Console.Write("What's your name?");
String name = Console.ReadLine();
Console.Write(txt + name + "!");
}
}

#include <iostream>
using namespace std;
class Hello {
public:
int main() {
string txt = "Hello ";
cout << "What's your name ? ";
string name;
cin >> name;
cout << txt << name << "!";
}
}; Figure 7 – Code running on web browser
int main(){
These languages are used to do data processing and [8] A. Manso, C. Marques e P. Dias, “Portugol IDE v3.x: A new
environment to teach and learn computer programming”, In M. C. Gil,
whose result is presented to the user using Hyper Text Markup E. T. Caro, M. E. Auer e M. P. B. Merino (Cords.), IEEE EDUCON
Language (HTML) languages, which will be formats through 2010 Conference - The Future of Global Learning in Engineering
Cascading Style Sheets (CSS). Combining HTML, CSS and Education. Madrid: UPM - Servicio de Publicaciones - EUI – UPM,
Javascript it is possible to run the algorithm in the student’s pp. 1007-1010.
browser and do a demonstration of the automatic translation [9] S. R. Fischer, “História da Escrita”, London: Reaktion Books, 2003.
for high level languages. With a simple click Algorithmi [10] B. J. Maclennan, “Principles of Programming Languages. Design,
Evaluation and Implementation”, Oxford: Oxford University Press,
writes the program and executes it in the web browser as we 1999.
can observe in Figure 7. [11] Python Software Foundation, PEP 20 - The Zen of Python, Accessed
The result of running the program is shown in Figure 8. 04 April 2019,
https://scratch.mit.edu/https://www.python.org/dev/peps/pep-0020/

Figure 8 – Writing on the screen by the program using Javascript

IV. CONCLUSION
In this article we introduce the translation functionality
with a learning environment system. Algorithmi introduced
English and Portuguese natively in the system, which
function as standard languages and we introduced Chinese
using Google's Application Programming Interface (API) as
a demonstration of concept, to show the use of the system
with non-Western characters. Since none of the authors
dominates the Chinese language, we cannot guarantee that
the translation is correct. As future work, we want to ask the
community for help, so that people can translate it into their
native language.
Algorithmi is under development with its functionalities
and usability being tested during the 2016/2017 and
2017/2018 school years. The feedback of students through
programming with the Portuguese language has been very
positive in teaching programming logic.
The translation into the programming languages helps the
algorithmic language transaction for the computational
programming languages that are used in more advanced
programming classes.
In the future we plan to introduce new programming
models, such as functional languages (lambda) or new
languages such as Swift.
REFERENCES
[1] M. Butler e M. Morgan, “Learning challenges faced by novice
programming students studying high level and low feedback concepts”,
ASCILATE 2007 Singapore, 2007, pp. 99-107.
[2] T. Jenkins, “On the difficulty of learning to program”, Proceedings
of the 3rd Annual Conference of the LTSN Centre for Information
and Computer Science, 2002, pp. 27-29.
[3] E. Lahtinen, K. A. Mutka e H. M. Jarvinen, “A Study of the
difficulties of novice programmers”, Proceedings of the 10th Annual
SIGCSE Conference on Innovation and Technology in Computer
ITiCSE’05, 2005, pp. 14-18.
[4] A. Yadin, Reducing the dropout rate in an introductory programming
course. ACM Inroads, 2(4), 2011, pp. 71-76.
[5] H. Abelson, N. Goodman, e L. Rudolph, "LOGO Manual",
Massachusetts: Artificial Intelligence Lab, Massachusetts Institute of
Technology, 1974.
[6] MIT Media Lab, “Scratch”, Accessed 17 November 2017 at
https://scratch.mit.edu/
[7] A. Manso, L. Oliveira, e C. G. C. Marques, “ Ensino da Programação
através da Linguagem Algorítmica e Fluxográfica”, In C. V. Carvalho,
R. Silveira & M. Caeiro (Coord.), TICAI 2009. TIC's para a
Aprendizagem da Engenharia. IEEE, Sociedade de Educação:
Capítulos Espanhol e Português. Porto: Edições Politema, 2011, pp.
105-110.

View publication stats

You might also like