For students who enjoy programming and programming competitions, learning all the basic algorithms takes some time; on the other hand, competitive environments can be introduced right from the beginning as a pedagogical tool.
If handled correctly, this can be very effective in helping to reach the goals of the course and, as a side-effect, in bringing larger crowds of students into the programming competition arena. We present a model for designing and implementing computer programming courses based on two approaches: competitive programming and gamification.
From the former, it considers the ACM ICPC standard for the exercises and an automatic code validator. The latter considers several elements like points, rankings, tags, difficulty level, and time-based submission leader board. It can help students’ perception of the combined strategy be positive for placement and help their academic performance.
Teaching computer programming is not an easy task and is considered one of the biggest challenges in computer sciences. There is a lot of evidence indicating a poor performance of college students After completing the first programming course and high dropout rates.
Such issues may be summarized in four areas:
Teaching methods: teaching is not personalized due to large groups, there is little or no feedback at all from the teacher to students, dynamic concepts are taught through inert materials, and teachers are usually more focused on teaching the details of language syntax rather than promoting problem-solving using the programming language.
Study methods: students use incorrect study methodologies, do not know how to solve problems, do not have the background needed, do not have previous knowledge or experience with programming, and do not practice enough to acquire programming skills.
The nature of computer programming itself: programming requires a high level of abstraction, and programming languages often have highly complex syntax.
Psychological and social effects: students are usually not motivated, feel anonymous during classes, and have little or no interaction. To face some of the issues listed above, different strategies have been studied: competitive programming and gamification.
Online Judges
Online Judges like CodeChef, CodeForces, Leet Code, and many others conduct their signature monthly coding competition, which involves problem-solving related to Data Structures and Algorithms that spans different duration of time.
With a motive to help coders mprove, apply their overall algorithmic knowledge, compete against each other, and make it big in the world of computer programming.
Online judges are systems designed to evaluate algorithm source code submitted by users, next compiled and tested in a homogeneous environment. Online judges are becoming popular in various applications.
What is Competitive Programming?
Competitive programming is a mind sport usually held over the Internet or a local network, involving participants trying to program according to provided specifications. Contestants are referred to as sports programmers.
Competitive programming is recognized and supported by several multinational software and Internet companies, such as Google and Facebook. Several organizations host programming competitions regularly. A programming competition generally involves the host presenting a set of logical or mathematical problems, also known as puzzles, to the contestants (who can vary in number from tens to several thousand), and contestants are required to write computer programs capable of solving each problem.
A participant is judged based on the number of questions solved and time spent for writing successful solutions, including other factors like quality of output produced, execution time, program size, debugging skills, etc.
Collaborative Learning
Collaborative learning technologies have the unique potential to transform the education system by building an easy-to-adopt learning environment for students. Access how technology can enhance peer interaction and facilities knowledge sharing among the students in collaborative learning environments.
It will be appropriate for today’s learning process where people can come together and have coding competition, know their knowledge, learn capabilities programming skills, learn about their peers, and understand where they stand out among their peers.
Hence, with the concept of
- Peer-to-Peer Learning
- Collaborative Learning
- Competitive Programming
Objectives –
Functionalities –
- The User can create and conduct a contest with just 4 Simple Steps:
- Sign In/ Sign Up to the website.
- Go to create a Contest, give basic information, add the Question.
- Share the Passcode mailed to you by [email protected]
- Join, Submit and Find yourselves on the Leader board.
- Users can control ‘WHO CAN PARTICIPATE IN THEIR CONTEST?’
- Create Contest for Future, keep track of your Past Contest by Leader board and your profile, and participate in Ongoing Contest.
- Users can select questions using tags for adding questions related to specific topics or difficulties.
- The User will be redirected to the Leader board once the time for the Contest is over.
- Users can submit your code in Three programming languages, i.e., Cpp, Java, and Python.
- The website provides features to Admin for administrating the website such as User details view and deletes, Question adding and deleting, viewing Contest organized.
- User will be mailed after registering, creating Contest (containing Passcode), and filling the contact form.
- Features like Writing Blogs, Contact Us, User Authentication, Update User details are provided.
- We can create groups consisting of several participants and can take part in the Contest as a team.
As an aim to deal with the problem, we presented a model to design and implement a platform based on competitive programming and gamification. Competitive programming helps us learn how to effectively work together, as you must work with others on your team to complete the same task and we learn how to assess your team members’ strength and weaknesses and effectively divide responsibilities between each other.
Research shows that educational experiences that are active, social, contextual, engaging, and student-owned lead to deeper learning. The benefits of collaborative learning include:
Development of higher-level thinking, oral communication, self-management, and leadership skills.
- Promotion of student-faculty interaction.
- Increase in student retention, self-esteem, and responsibility.
- Exposure to and an increase in understanding of diverse perspectives.
- Preparation for real life social and employment situations.
Tech giants like Google, Facebook, Microsoft, Amazon and many other conduct their Yearly competitive coding contest and competitions through which they hire the top performer directly. Being aware of self-performance through points and rankings allows students for being constantly challenged to surpass, not only themselves but their peers.
Coding can help students develop a range of skills that are essential to today’s job industry requirements, such as critical thinking, logic, math, problem-solving, creativity, sequencing and structured language skills.
Competitive programming helps us learn how to effectively work together, as you must work with others on your team to complete the same task and we learn how to assess your team members’ strengths and weaknesses and effectively divide responsibilities between each other.
References:
[1]. Competitive programming and gamification as strategy to engage students in computer science courses. Julián MORENO Cadavid, Andrés F. PINEDA Corcho. [2]. Does Gamification Work? — A Literature Review of Empirical Studies on Gamification. Juno Hamari, Jonna Koivisto and Harri Sarsa. [3]. Collaborative learning for Educational Achievement. Ritu Chandra. [4]. Benefits of Collaborative Learning. Marjan Laal and Seyed Mohammad Ghodsi. [5]. Early Introduction of Competitive Programming. Pedro Riberiro and Pedro Guerrerio. [6]. Toward improving collaborative behaviour during competitive programming assignments Arturo Gonzalez-Escribano, Victor Lara-Mogil, Eduardo Rodriguez-Gutiez, Yuri Torres [7]. Competitive Programming: A teaching methodology analysis applied to fir-year programming classes. Ian Nery Banderia, Taigo Veras Machado, Vitor F. Dullens,Edna Dias Candeo. [8]. Increasing Employability of Indian Engineering Graduates through Experiential Learning Programs and Competitive Programming: Case Study Prashant R.Nair