Conference PaperPDF Available

CodeLearnr The First Interactive Programming Learning Platform for Persian-speaking Users

Authors:

Abstract and Figures

Nowadays teaching programming to people regardless of their age, profession and academic background is a promising goal. In fact, it could be regarded as a multifaceted mission both for training programming experts to solve real world problems and helping usual users to better interact with computerized world as well as gifting them ability of algorithmic thinking. Despite the mentioned benefits, the most important challenge toward achieving this goal is processes and mechanisms of teaching programming. It will be more challenging when it comes to teaching youngsters and who are unfamiliar with basics of computer science and information technology. The issue is considerable both from educational (content and approaches) and infrastructural (platform and technical) perspectives. Over the years, a notable amount of efforts have been made in this regard and many systems and platforms have been proposed. However, to our knowledge, none of them devoted to numerous Persian-speaking users. As the first try to fill the gap, we have developed and launched CodeLearnr 1 , the first interactive system to freely teach programming to Persian-speaking users. In this paper, the details, workflow and architecture of CodeLearnr as well as our vision and future works will be introduced.
Content may be subject to copyright.
2016 1st International Conference on New Research Achievements in Electrical and Computer Engineering
CodeLearnr
The First Interactive Programming Learning Platform for Persian-speaking Users
MohammadHossein Ansari, Faraz Jalili,
MohammadReza ShahMohammadi, Keyvan M.
Kambakhsh, MohammadSarda Nejati, Omid NikRah
R&D CENTER
Qazvin Branch, Islamic Azad University
Qazvin, Iran
{mha| faraz| mrshm| keyvan| sadra| omid}@codelearnr.com
Mohammad Moradi
Young Researchers and Elite Club
Qazvin Branch, Islamic Azad University
Qazvin, Iran
Moradi.c85@gmail.com
Abstract Nowadays teaching programming to people regardless
of their age, profession and academic background is a promising
goal. In fact, it could be regarded as a multifaceted mission both for
training programming experts to solve real world problems and
helping usual users to better interact with computerized world as well
as gifting them ability of algorithmic thinking. Despite the mentioned
benefits, the most important challenge toward achieving this goal is
processes and mechanisms of teaching programming. It will be more
challenging when it comes to teaching youngsters and who are
unfamiliar with basics of computer science and information
technology. The issue is considerable both from educational (content
and approaches) and infrastructural (platform and technical)
perspectives. Over the years, a notable amount of efforts have been
made in this regard and many systems and platforms have been
proposed. However, to our knowledge, none of them devoted to
numerous Persian-speaking users. As the first try to fill the gap, we
have developed and launched CodeLearnr1, the first interactive
system to freely teach programming to Persian-speaking users. In this
paper, the details, workflow and architecture of CodeLearnr as well
as our vision and future works will be introduced.
Keywords—component; Teaching programming; E-learning;
Interactive learning platform; Online course
I. INTRODUCTION
Human beings have had to equip themselves with some
essential capabilities in each historical period. Physical
strength and farming skills were of essential needs in some
era. However, nowadays and specifically in the new
millennium being familiar with computer science that
infiltrated in (different aspects of) everyday life is the key,
vital capability to survive in the digital world. Whether to be
an expert in a computer-related profession or for handling job
and education assignments or even to face with daily routines
in using the Internet and social networking sites, more or less,
people have to be prepared with some skills. There are many
ways to do so, though one of the most effective ones is
learning programming. In fact, programming may be
considered as the gateway to enter the computer science with a
goal in mind: being a (semi)professional user or simply an
expert. Moreover, learning programming can also be useful
for regular users so that make them familiar with algorithmic
thinking and provide them with problem solving skills. From a
high-level point of view and due to computerization of almost
1 The project is funded and supported by Qazvin Branch, Islamic Azad
University (QIAU)
all tasks and workflows, it seems that programming ability (in
different levels) will be the most important prerequisite for
claiming a job. Some believe that automation and
digitalization threaten job opportunities, however, the truth is
that to order robots, administrate systems and so forth there
are need to humans even more than before but those who are
equipped with new capabilities and skills. And doubtlessly
programming is one of these must have skills.
Despite the benefits of programming education, there are some
essential barriers and challenges including both educational
(content and approaches) and infrastructural (platform and
technical) ones. In this regard, over the years many attempts
have been made to develop teaching platforms and systems
such as works done in [1-3]. Of course, there is a major
problem regarding accessibility of these services and systems,
specifically for Persian-speaking users. To remove this barrier
and fill the gap, we have developed CodeLearnr, the first
interactive, online and free of charge system for programming
education for Persian-speaking users. The main goal of the
CodeLearnr is promoting programming within the Persian-
speaking community to educate next generation of
professional programmers and super-users. In this paper our
vision and mission and technical details of the system are
introduced and described. The rest of the paper is organized as
follows: Section 2 studies background of the topic and some
of the related works. Nuts and bolts of CodeLearnr are
introduced and explained in section 3 and its subsections. In
section 4 our vision and future works will be discussed.
II. BACKGROUND AND RELATED WORKS
Undoubtedly one of the most effective and game-changing
phenomena in the new era, specifically within the recent
decades, is computer science (and accordingly information
technology). In addition to their impact on various scientific
and economic domains, the daily life of human beings such as
education, shopping and social communications have been
affected by computers. Due to this extensive symbiosis with
computers, not only experts and technicians but also regular
users should be prepared with (basic) knowledge of interacting
with (and leveraging) computers. However, teaching computer
science is an important mission; some truly believe that the
process could not be limited to only training individuals to be
able to work with different software and applications because
it hinders them from being creative and innovative [4], what
the community expects and demands from computer educated
2016 1st International Conference on New Research Achievements in Electrical and Computer Engineering
Figure 1. An example of CodeLearnr course (C++) and GUI
people. For this reason, teaching programming is known as
one of the major ways to make people familiar with basics of
computer science and technology. As a matter of fact, besides
training next generation of professional coders and developers,
programming education is a systematic approach to provide
individuals with capability of algorithmic thinking and
problem solving.
Regarding the importance of programming education,
within the recent years many studies have been conducted,
including following works.
In [5] authors introduced Pythia, a web-based platform for
programming and algorithm design targeting Belgian
secondary school students. Also, effect of using code.org as
the programming learning platform on problem solving skills
of primary school students in Turkey has been studied in [6].
More information on teaching programming may be obtained
through surveys presented in [7, 8].
Due to tough aspect of programming education, one working
idea is to make the process funny and entertaining. Following
this concept, authors in [9] presented an interactive game-
based teaching and learning platform for programming and
software engineering, Pex4Fun. This platform aimed to be
used by both teachers and students covering introductory to
advanced programming topics. Another works in this manner
is done in [10] in which to motivate new programmers,
authors presented a game-based approach to teach
introductory programming. Some other similar works have
been conducted in [11-13].
Almost all the activities in the field dedicated to English-
speaking users or who have enough knowledge of English.
Therefore, lack of such platforms for numerous Persian-
speaker users is an obvious issue. To compensate this loss, we
have developed CodeLearnr2. Nuts and bolts of this platform
will be described in the following sections.
III. INTRODUCTION TO CODELEARNR
The main contribution of the CodeLearnr project is filling
the gap of lack of an interactive, web-based and free of charge
programming learning system for Iranian (and possibly any
Persian-speaking) users. The first idea initiated about one year
ago, January 2015, however the project has been officially
started on 16th September, 2015. Finally the first successful
launch of the system was 24th December, 2015. The project
aimed to teach programming to users aged 12 to 35 years old
as a first systemic way towards introducing to computer
science and technology. Moreover, it could be considered as
starting point to educate next generation of software
developers.
To facilitate the process of learning, two major goals have
been thought: First, producing high quality learning materials
in a funny, friendly form to alleviate intrinsic inflexibility of
programming topics. Moreover, the lessons (sections and
steps) designed in the way so that both novice users who have
not any background in programming and those who are
familiar with the topics can take advantage of courses. In this
regard, to date, learning materials for following programming
(scripting) languages are provided: C++, Python, HTML, CSS
and JavaScript.
2 http://www.codelearnr.com/
2016 1st International Conference on New Research Achievements in Electrical and Computer Engineering
Figure 2. The workflow of CodeLearnr
From technical point of view, since first-time users may
not be prepared with necessary requirements for programming
such as respective editor and compiler(s), CodeLearnr
developed in the form of a browser-based platform. Therefore,
users have no need to any additional tool and equipment but a
web browser. This idea adopted from other similar platforms
such as Code Academy3. GUI of CodeLearnr is shown in
Fig.1.
A. System workflow
The workflow of CodeLearnr may be described as follows
(Fig. 2): First, user should register in the system and select the
course (s)he wants to be trained in. Each course contains
several sections (lessons) and each section by itself includes
several steps. Each step presents learning materials and in
most of cases ask the users to perform mini-exercises based on
the provided guidelines and instructions. By completing each
step, user can go ahead to next one until the final step. At the
end of each section, code learners will be provided with a
simple project to review the lesson learnt in the previous steps.
Finally at the end of the course, users will get the certificate
and can be apply for another course.
One of the most important features of CodeLearnr that can
improve the process of learning is capability of detecting and
reporting of errors. In other words, this error-reporting
functionality detects the exact position of errors while users
run their entered codes in the editor.
3 https://www.codecademy.com/
B. System Architecture
In addition to the front-end of the system, where users
learning programming and interact with CodeLearnr, there are
several other components in the back-end that are
implementing and testing. In this regard, CodeLearnr as an e-
learning platform may be illustrated as in the Fig.3. Each
component is described as follows.
1) Data Store
Every information system deals with data in some way
including generating data (log data, etc.) and leveraging data
(from different sources). In the case of CodeLearnr, in
addition to the learning materials, the system receives some
type of data as input. Clearly, since the system interacts with a
relatively large number of users, it faces with, for example,
following data: User-entered codes (exercises and projects),
user's comments and rating and feedbacks. In order to take
benefits of such data to improve different aspects of the
system, those data are stored in the Data Store component for
further processing.
2) Data Mining Component
One important idea in CodeLearnr is to leverage gathered
data (both users and system generated ones) for:
Improving the system functionality
Planning for new courses and rearranging current
sections and steps
Introducing new education approaches, including
targeted education
Enhancing teaching quality and learning level of code
learners
Detecting and removing functional deficiencies of the
system
2016 1st International Conference on New Research Achievements in Electrical and Computer Engineering
Figure 3. The conceptual architecture of CodeLearnr
The data mining component is in charge of dealing with
different types of data in the form of analyzing and extracting
insight from them. Some likely scenarios in the regard are as
follows.
Discovering coding patterns of users and presenting
courses and sections based on them.
Leveraging coding patterns in order to improving the
error detection and reporting sub-system to enhance
the education process.
Analyzing users' comments and feedbacks for
redesigning GUI, courses and so on.
Detecting common error patterns and presenting
proportionate leaning materials to cover them.
3) Recommender System
As a complementary component to data mining module, the
system-wide recommender system is designed with two main
goals in mind. First, suggesting courses and/or specific
sections and steps as well as other learning resources to code
learners based on their coding patterns, errors, achieved grades
and quality of progress. On the other side, by considering the
usage patterns, this component provides the system with
recommendations for structural and content-based
customization. As an example, based on the user's progress
and interaction patterns and to enhance the quality of learning,
the system will be recommended to provide the user with
customized, targeted exercises.
4) Knowledge Base
Similar to most of user-centric education systems, such as
forums and Q&A websites, CodeLearnr deals with notable
amount of users. In this regard and based on the
crowdsourcing [14] concept, it aimed to provide users with
opportunities to participate in content generation process.
Such data will shape and enrich the system's knowledge base
as a part of general Data Store. Content users may generate are
of (but not limited to) the following types:
Questions and answers
Comment posting
Suggestions for new courses and lessons
Sharing programming projects based on the courses'
materials
Posting mini tutorials and exercises
The main goal of presenting such a capability is to
leveraging collective intelligence and users' potentials for
improving quality of learning and the system's features.
Following this idea, the CodeLearnr could be turned into a
place, based on the concept of by users for users, in which
certificated users could voluntarily provide others with their
2016 1st International Conference on New Research Achievements in Electrical and Computer Engineering
knowledge and experiences. This leads us to build up a great
knowledge base that will be publicly available, in part.
IV. VISION AND FUTURE WORKS
Despite the current capabilities and plans of CodeLearnr it
is still in its infancy and a long unpaved way is ahead. In this
regard and according to the available best practices and
possible directions, we have drawn our future vision as
follows:
Presenting children-specific, game-based
programming courses
Presenting professional, application-centric and job-
specific programming courses such as business data
analytics and data visualization
Establishing capability of collaborative programming
and crowdsourcing projects
Introducing feature of Learning on Demand (LoD) in
order to provide customized learning materials for a
specific group of users
Presenting visual courses on programming and
algorithm design to facilitate the learning process
Conducting online programming contests to
motivate code learners and increasing their
participation
Leveraging mobile devices penetration as a learning
platform to present programming education on the
go, everywhere and every time
V. CONCLUSION
Due to importance of learning computer science and
information technology basics, there is an essential need to
provide individuals with learning materials. One important
challenge in this way is hindering people from being creative,
specifically when they are only training to use software
packages. In this regard, teaching programming is considered
as an effective method for both introducing people with
computer science and preparing them with capability of
problem solving and algorithmic thinking. Following this idea,
we have developed CodeLearnr, the first interactive, web-
based and free programming learning platform for Persian-
speaking users. In this paper, we introduced the system and
explained different aspects of it, including system workflow,
architecture and the project vision.
References
[1] C. A. Higgins, G. Gray, P. Symeonidis, and A. Tsintsifas, "Automated
assessment and experiences of teaching programming," Journal on
Educational Resources in Computing (JERIC), Vol. 5, no. 3, Article. 5,
2005.
[2] J. O'Kelly, and J. Paul Gibson, "RoboCode & problem-based learning: a
non-prescriptive approach to teaching programming," ACM SIGCSE
Bulletin, Vol. 38, no.3, pp. 217-221, 2006.
[3] A. Diwan, W. M. Waite, M. H. Jackson, and J. Dickerson, "PL-
detective: A system for teaching programming language concepts,"
Journal on Educational Resources in Computing (JERIC), vol. 4, no. 4,
Article. 1, 2004.
[4] J. Naughton, "Why all our kids should be taught how to code," Observer
New Review, The Guardian, [online] Available at:
http://www.theguardian.com/education/2012/mar/31/why-kids-should-
be-taught-code [accessed march 2016]
[5] S. Combéfis, and V. L. C. de Saint-Marcq, "Teaching programming and
algorithm design with pythia, a web-based learning platform,"
Olympiads in Informatics, vol. 6, pp. 31-43, 2012.
[6] F. Kalelioğlu, "A new way of teaching programming skills to K-12
students: Code. org," Computers in Human Behavior, vol. 52, pp. 200-
210, 2015.
[7] A. Robins, J. Rountree, and N.Rountree, "Learning and teaching
programming: A review and discussion," Computer science education,
vol. 13, no. 2, pp. 137-172, 2003.
[8] A. Pears, et al., "A survey of literature on the teaching of introductory
programming," ACM SIGCSE Bulletin, vol. 39, no. 4, pp. 204-223,
2007.
[9] N. Tillmann, J. De Halleux, T. Xie, S. Gulwani, and J. Bishop,
"Teaching and learning programming and software engineering via
interactive gaming," In Proceedings of 35th International Conference on
Software Engineering (ICSE), IEEE, 2013, pp. 1117-1126.
[10] S. Leutenegger, and J. Edgington, "A games first approach to teaching
introductory programming," ACM SIGCSE Bulletin, vol. 39, no. 1, pp.
115- 118, 2007.
[11] H. C. Jiau, J. C. Chen, and K. F. Ssu, "Enhancing self-motivation in
learning programming using game-based simulation and metrics,"
Education, IEEE Transactions on, vol. 52, no. 4, pp. 555-562, 2009.
[12] R. Rajaravivarma, "A games-based approach for teaching the
introductory programming course," ACM SIGCSE Bulletin, vol. 37, no.
4, pp. 98-102, 2005.
[13] W. C. Chang, and Y. M. Chou, "Introductory C programming language
learning with game-based digital learning," In Advances in Web Based
Learning-ICWL, Springer Berlin Heidelberg, 2008, pp. 221-231.
[14] J. Howe, "The rise of crowdsourcing," Wired magazine, issue 14, no.6,
pp. 1-4, 2006, Available at :
http://www.wired.com/wired/archive/14.06/crowds_pr.html
... Of course, since any e-learning system has its own features and requirements, managing and improving the system is a case-specific task. This led us to design a special recommender system for our system, CodeLearnr 2 [4], the first interactive programming elearning platform for Persian-speaking users. Since the learning materials in CodeLearnr are programming courses, our proposed recommender system, CodERS, has been equipped with some platform-specific features and processes. ...
... Regarding the importance of programming education, specifically for juveniles and young students, we have designed and implemented the first interactive programming learning platform for Persian-speaking users, called CodeLearnr [4]. Within its user-friendly environment and without any additional requirements but a web browser, users can easily study the programming courses and take their learning into practice through its live programming facilities. ...
... Internal process of recommendation engine (AR) by users will be analyzed and evaluated in this step to build up a knowledge base for the decision making processes and improving future suggestions(4). ...
Conference Paper
For years, E-learning systems are around to provide students and learners with virtual educational environments in which they have no need to others' assistance in the process of learning. From technical point of view, the major goal of such systems is to improve education and learning levels of users through leveraging the system's facilities. In this regard, it is essential for the system to be able to analyze users' functions and behaviors to prepare them with most appropriate learning materials. In other words, the core component of a working and efficient e-learning system is its recommender system. Since requirements and processes of any recommender system strongly depends on the context, users' behaviors and case-specific goals, in most of situations they should be designed exclusively. Due to this fact, in this paper we present a hybrid and context-specific recommender system (CodERS) for our interactive programming e-learning system, CodeLearnr, and provide an overview on its features including conceptual architecture, workflow and sample outputs.
Article
Full-text available
In Belgium, there are no or very few programming and algorithm design courses at secondary schools (12–18 years old). Students who can program are self-learners. The selection process for the Belgian delegation for the IOI, that has been set up two years ago, takes this situation into account. More initiatives should be taken to introduce computer science in secondary schools. This paper presents Pythia, a solution grader for programming and algorithm design problems based on a web application. Following the learning by doing motto, the proposed framework provides an accessible, usable, effective way to learn programming. To compensate for the lack of teachers with programming or algorithm design skills, Pythia delivers direct feedback to the students. The paper describes the design of the courses and the architecture of the tool. As future work, the proposed teaching technique has yet to be tested at large and evaluated.
Article
Full-text available
The educational literature recognizes that people go through a number of stages in their intellectual development. During the first stage, called received knowledge or dualism, people expect knowledge to be handed to them by authority figures (thus "received") and think in terms of black and white (thus "dualism"). Our experience indicates that many computer science students are at this first stage of learning. To help students move beyond this stage, we describe a system and strategy, the PL-detective, to be used in a "concepts of programming languages" course. Assignments using this system directly confront students with the notion that there are often multiple equally good answers and that discussion with students (rather than asking the instructor) is an effective way of learning how to reason.
Conference Paper
Massive Open Online Courses (MOOCs) have recently gained high popularity among various universities and even in global societies. A critical factor for their success in teaching and learning effectiveness is assignment grading. Traditional ways of assignment grading are not scalable and do not give timely or interactive feedback to students. To address these issues, we present an interactive-gaming-based teaching and learning platform called Pex4Fun. Pex4Fun is a browser-based teaching and learning environment targeting teachers and students for introductory to advanced programming or software engineering courses. At the core of the platform is an automated grading engine based on symbolic execution. In Pex4Fun, teachers can create virtual classrooms, customize existing courses, and publish new learning material including learning games. Pex4Fun was released to the public in June 2010 and since then the number of attempts made by users to solve games has reached over one million. Our work on Pex4Fun illustrates that a sophisticated software engineering technique-automated test generation-can be successfully used to underpin automatic grading in an online programming system that can scale to hundreds of thousands of users.
Conference Paper
Educational game, motivates learners, is full of entertaining. Learners can practice and challenge themselves in an interactive game. In order to become formal tools in everyday teaching/learning process, we create Bomberman game which is included most concepts in introductory C programming language. It brings modern education concept in concert with the classical teaching and laboratory work. Learners can view the learning materials, reading/writing C codes, solving problems with C codes to control the movement of the Bomberman accompany with game music. Bomberman game combines continuous challenge, interesting storyline, fun and realism. This vivid learning environment can engage students spending their precious time for extensive practice since students have highly motivation to win the game. We hope that we have shown a new method for educational practice with game-based digital learning for teaching C programming course.
Article
Game-based assignments typically form an integral component of computer programming courses. The effectiveness of the assignments in motivating students to carry out repetitive programming tasks is somewhat limited since their outcomes are invariably limited to a simple win or loss scenario. Accordingly, this paper develops a simulation environment in which students can create a game strategy via programming for a challenging strategy-type game. After completion of the game, the environment provides the student with a set of metrics that provides helpful clues as to how the student might reprogram the strategy to improve the result. The provided metrics help to avoid a tedious trial-and-error refinement process and, therefore, greatly motivate the student to complete the assignment and achieve a better result. The simulation environment can be used in either a standalone mode or in an interactive mode in which the students compete against one another online. The competition element increases the motivation of the students to complete the task to the best of their ability.
Article
Introductory programming courses in computer science aim at building an effective foundation for the development of programming skills. A prudent way to develop these skills is by emphasizing problem solving and logical thinking. This paper proposes a games-based approach, as a way of engaging students and developing these skills. Common mistakes of novice programmers in traditional courses are summarized. Word and number games are used to illustrate the potential benefits of a games-based approach, which minimizes such mistakes.
Article
This article reports on the design, implementation, and usage of the CourseMarker (formerly known as CourseMaster) courseware Computer Based Assessment (CBA) system at the University of Nottingham. Students use CourseMarker to solve (programming) exercises and to submit their solutions. CourseMarker returns immediate results and feedback to the students. Educators author a variety of exercises that benefit the students while offering practical benefits. To date, both educators and students have been hampered by CBA software that has been constructed to assess text-based or multiple-choice answers only. Although there exist a few CBA systems with some capability to automatically assess programming coursework, none assess Java programs and none are as flexible, architecture-neutral, robust, or secure as the CourseMarker CBA system.
Article
Remember outsourcing? Sending jobs to India and China is so 2003. The new pool of cheap labor: everyday people using their spare cycles to create content, solve problems, even do corporate R