Teaching_and_Learning_How_to_Programam_with_Algorithmi
Teaching_and_Learning_How_to_Programam_with_Algorithmi
Algorithmi
António Manso Célio Gonçalo Marques Paulo Santo
Ci2, Instituto Politécnico de Tomar Techn&Art, Instituto Politécnico de Unidade Departamental de Tecnologias
Tomar, Portugal Tomar de Informação e Comunicação
[email protected] CAPP, Universidade de Lisboa Instituto Politécnico de Tomar
LabTE, Universidade de Coimbra Tomar, Portugal
Tomar, Portugal [email protected]
[email protected]
Learning to program is a difficult task, therefore the teaching to address this problem, Algorithmi was equipped with the
of programming has been the subject of intense research resulting ability to evaluate the algorithms and help students to develop
in new methods and tools. Algorithmi is one of those tools and its them.
main purpose is to help students learn programming by
simplifying the programming language. This paper presents the The following sections describe Algorithmi’s learning
automatic algorithm evaluation module and the components that environment and the modules enabling the creation and
enable this evaluation. This module was created to help teachers evaluation of algorithms.
evaluate algorithms and to give feedback to students on the quality
of the solutions proposed. The results on the use of the system are II. ALGORITHMI
presented in class. Algorithmi is a programming learning system based on
Portugol language [5]. This system allows to manipulate
Keywords— Algorithmi, Algorithms, Evaluation, Portugol, homogeneous data structures and add functions. These two
Programming languages, Learning to program features allow to expand its usage to different content of
I. INTRODUCTION course units and to develop more complex algorithms.
Algorithmi consists of three models that interact together: The
The first steps in programming learning are the hardest algorithmic language that allows algorithm specification; the
because students must learn a new language and a new way of editor that allows its encoding and execution, and the
communicating with the computer. Traditional programming information system that supports learning.
languages are formal languages with a rigid syntax. They use
words from the English language lexicon and messages have The algorithmic language is based on markers (tokens)
a different structure from natural languages. These languages that are replaced by words of a natural language. The editor
were designed for software development by experienced Fig. 1 allows to shape the language and execute it in an
professionals with in-depth knowledge of logics and environment that can be configured for the student's native
mathematics. They are excellent for app development but are language. The language provides the necessary instructions
not appropriate for teaching programming. Programming to teach the key concepts of algorithmics such as single and
environments are designed to promote the productivity of composite data reporting, computational calculus, instruction
experienced programmers and therefore are complex and execution control and user-defined functions.
difficult to use for those who are making their first steps in this
field.
Teaching the basics of programming languages and
environments designed for industry has proved difficult,
particularly when the target audience is younger. To simplify
the learning of programming, several teaching-oriented
systems have been developed including Portugol IDE[5],
SICAS [6] Flowgorithm [7] and Scratch. It is in this group that
Algorithmi IDE [9] belongs. It is a further development of
Portugol IDE that combines the best features of the remaining
programs to encode and execute algorithms. In addition to
this, Algorithmi provides a new feature that helps students to
develop the algorithm and evaluate its quality. This is the
focus of this paper.
Fig. 1- Algorithmi’s programming environment
Kelleher et al [8] identify three ways to simplify the
learning of programming: 1) simplify programming Fig. 1 shows the environment that enables the student to
mechanisms, 2) learning support and 3) motivation to learn to learn to program in Portuguese. In this editor, the student can
program. draw the flowchart or write the algorithm in text form. The
Constructivist theories have shown that learning instruction syntax is the same in both editing modes.
effectiveness largely depends on the opportunity given to
students to solve practical problems. The high number of
students attending introductory programming courses makes
it difficult to provide individual guidance and support. In order
Authorized licensed use limited to: b-on: Instituto Politecnico de Tomar. Downloaded on April 07,2025 at 06:47:32 UTC from IEEE Xplore. Restrictions apply.
the exercises and lets the student know whether the resolution
is correct or not and, if not, he/she will point out the mistakes.
In addition to information required for their resolution, the
programming exercises also have a set of data on their
evaluation. This data includes the score points awarded to the
exercise defined by the teacher according to the effort and the
degree of knowledge required for its resolution. Also included
are the creation dates for the exercises and the submission
deadline. By default, the system uses all the score points set
out for the exercise if it is evaluated before the deadline and
uses only half of the points if it is evaluated after that date. The
setting of these dates encourages students to solve exercises
Fig. 6 Data storage history within the agreed deadlines.
In these exercises’ students have the opportunity to Automatic correction of exercises Fig. 8 compares
practice with algorithms in order to learn a new algorithmic students’ algorithm outputs with the expected outputs for each
technique and are free to check the effect of instructions and individual input. For each input, students visualise the output
consolidate knowledge through experimentation. of their algorithm, the expected output, a report on the
differences found and a score. The comparison between the
B. Consolidation exercises inputs and the outputs is done by dividing the text into words
Consolidation exercises are problems with a statement and and numbers, which are to be treated differently. The
an algorithm that does not solve the problem entirely. The evaluator starts by eliminating the input value of the
given algorithm can have mixed up instructions Fig. 7 a) be comparison and only evaluates the result produced by the
incomplete Fig. 7 b) or contain wrong instructions. algorithm.
In either case, students are asked to change the algorithm Numbers are compared according to their value, rather
in order to solve the problem. These exercises serve to test than according to their text representation. This differentiation
their knowledge in a simple way and represent the first effort is crucial for the proper functioning of the system because, in
to learn programming. computing, the values represented in real variables are always
an approximation of the mathematical value and therefore text
C. Training Exercises comparison does not work. The same problem can be solved
In training exercises, students are only provided with the by different algorithms that can use different computational
problem statement Fig. 4 a) and they have to develop the expressions. For example, the square of a number can be
algorithm from scratch. Students must interpret the statement, calculated by the multiplication operator or by the power
see the references accompanying the statement, study the function. The computational result is different while being
inputs and outputs and build an algorithm that converts the mathematically equivalent. As the vast majority of the
inputs into the desired outputs. exercises used to learn programming are numerical
calculation exercises, numbers are of increased importance.
Words are what remains of the algorithm output after
removing inputs, numbers and whitespace characters: space,
tab, and line feed. Words are compared without regard to
accents or capitalisation.
The score of a sample execution, i.e. input-output, is the
weighted average (in percentage) of correct numbers and
words. The score of an exercise is the sum of all scores
obtained in all samples. Product use prevents students from
b)
cheating and from building an algorithm that can print a
a) sample based on written instructions.
Fig. 7 Consolidation exercises: a) Sort instructions; b) Incomplete
algorithm
D. Evaluation Exercises
The evaluation exercises are identical to training exercises,
but inputs and outputs are omitted in the statement.
In these exercises students must identify the inputs and
outputs from the problem statement and develop the algorithm
to solve it. These types of exercises are similar to the problems
students will find in a real-world context.
IV. EXERCISE EVALUATION
An important part of the learning system is the algorithm
evaluator. This evaluation module helps the teacher to score
Authorized licensed use limited to: b-on: Instituto Politecnico de Tomar. Downloaded on April 07,2025 at 06:47:32 UTC from IEEE Xplore. Restrictions apply.
Fig. 10 Resolution of a worksheet.
The exercises are made available to students through The students were provided with a total of 500
worksheets Fig. 9 a), which contain several exercises Fig. 9 programming exercises divided by 17 worksheets and 3
b). Students have access to worksheets through a repository assessment tests in which mistakes were corrected
Fig. 10. In the application students can solve the exercises, automatically by Algorithmi. In each worksheet, teachers
evaluate and score them and store them on their desktop. analysed automatic correction, made a critical judgement of
the results and adjusted the evaluation parameters.
Histogram of scores
4
3
2
1
0
<10 10 11 12 13 14 15 16 17 18 19 20
Fig. 11 Histogram of scores
a) b)
Fig. 9 Algorithmi Repository: a) Worksheets b) Programming Exercise The final score was awarded based on the algorithm
repository submitted by the students. Fig. 11 gives the class’s
Student desktops have the information concerning the histogram of scores showing that only two students failed, and
solved exercises and their score. In order to stimulate the average pass score was 15, with two students having
competition among students, the information system provides obtained 20.
a ranking of the points earned by the students.
At the end of the course, a student survey has been
administered to students in order to assess their satisfaction on
the system.
Considering that the students had very little knowledge of
programming Fig. 12 and taking into account the amount of
Authorized licensed use limited to: b-on: Instituto Politecnico de Tomar. Downloaded on April 07,2025 at 06:47:32 UTC from IEEE Xplore. Restrictions apply.
assessed exercises and scores obtained, the use of Algorithmi by students will also be added such as text-based algorithm
can be considered a success. programming and improvement of some of the existing
features.
In the future we also intend to extend the system,
particularly the algorithm repository and statistics on the
evaluation results. We believe that the resolution of
programming problems in an individual manner with the
support of a tutor to assess the learning progress contributes to
consolidate knowledge and promote learning success.
BIBLIOGRAPHIC REFERENCES
Fig. 12 Students’ initial knowledge of programming [1] J. Bennedsen e M. E. Caspersen, «Failure Rates in
Introductory Programming», SIGCSE Bull, vol. 39, n. 2, pp.
The vast majority of students considered that the 32–36, Jun. 2007.
autoCorrect system helped them solve the exercises Fig. 13. [2] J. Bennedsen e M. Caspersen, «Failure rates in
This aid allowed the students solve the exercises introductory programming: 12 years later», ACM Inroads,
autonomously since the automatic system corrects the vol. 10, pp. 30–36, Abr. 2019.
mistakes and makes sure that they are aware of the correction.
[3] K. B. Bruce, «Five big open questions in computing
education», ACM Inroads, vol. 9, n. 4, pp. 77–80, Jan. 2018.
[4] C. Watson e F. W. B. Li, «Failure Rates in
Introductory Programming Revisited», em Proceedings of the
2014 Conference on Innovation & Technology in Computer
Science Education, New York, NY, USA, 2014, pp. 39–44.
[5] A. Manso, C. G. Marques, e P. Dias, «Portugol IDE
v3.x: A new environment to teach and learn computer
programming», 2010 IEEE Educ. Eng. Conf. EDUCON 2010,
pp. 1007–1010, 2010.
Fig. 13 AutoCorrect
[6] A. Gomes, C. Areias, J. Henriques, e A. J. Mendes,
«Aprendizagem de programação de computadores:
With respect to correction accuracy, most participants dificuldades e ferramentas de suporte», Rev. Port. Pedagog.,
view the system as fair, but they are not unanimous. pp. 161–179, Jul. 2008.
Algorithm AutoCorrect parameters have been adjusted [7] D. D. Cook, «Flowgorithm: Principles for Teaching
throughout the course to collect a more positive feedback from Introductory Programming Using Flowcharts», em Proc.
students. American Society of Engineering Education Pacific
Southwest Conf.(ASEE/PSW), 2015, pp. 158–167.
[8] C. Kelleher e R. Pausch, «Lowering the Barriers to
Programming: A Taxonomy of Programming Environments
and Languages for Novice Programmers», ACM Comput
Surv, vol. 37, n. 2, pp. 83–137, Jun. 2005.
[9] A. Manso, C. G. Marques, e P. Santos, «Algorithmi:
software system to support the learning of programming», em
2018 International Symposium on Computers in Education
(SIIE), 2018, pp. 1–6.
Fig. 14 Evaluator accuracy [10] J. P. Leal e F. Silva, «Mooshak: a Web-based multi-
site programming contest system», Softw. Pract. Exp., vol. 33,
VII. CONCLUSIONS n. 6, pp. 567–581, 2003.
This paper presents Algorithmi, a software system
designed to support the learning of programming. The system [11] J. L. Bez, N. A. Tonin, e P. R. Rodegheri, «URI
was designed to help teachers in the task of evaluating Online Judge Academic: A tool for algorithms and
algorithms and to provide students with a tutor who assists in programming classes», em 2014 9th International Conference
autonomous learning. on Computer Science Education, 2014, pp. 149–152.
Authorized licensed use limited to: b-on: Instituto Politecnico de Tomar. Downloaded on April 07,2025 at 06:47:32 UTC from IEEE Xplore. Restrictions apply.