Adopting Agile Technology in Learning C Programming

DOI : 10.17577/IJERTV5IS090356

Download Full-Text PDF Cite this Publication

Text Only Version

Adopting Agile Technology in Learning C Programming

Amreen Kausar Gorvankolla Department of Information Technology,

RV College of Engineering and Technology,

Bengaluru, India

Navya R

Department of Information Technology,

RV College of Engineering and Technology,

Bengaluru, India

Smitha G.R

Assistant Professor, Department of Information Science,

RV College of Engineering and Technology,

Bengaluru, India

Abstract The Major Concern For The First Year Students As Soon As They Step Into Pre-University Education Or Graduation Is Learning C Programming. It Is Not An Easy Task To The Professors To Teach Computer Programming For The Beginners. Since The Students Have Absolutely No Idea About Programming, It Will Take Huge Amount Of Time To Pick Up If We Keep Following The Traditional Lecture Based Approach Of Using Pen And Paper Rather Than Practical Knowledge. Agile Methodologies Can Be Incorporated In Educational Field To Enhance The Students Programming Skills And Provide More Opportunities For The Students To Take Initiative And Engage Themselves In Collaborative Learning. It Also Helps The Professors To Efficiently Manage The Classes That Contain The Students With Different IQ Level.

KeywordsStudents, Teaching, Pair programming, Manifesto, Informative workspace, Code qaulity, Assessment, C Programming(CP)


    Research shows that usually first year students of the university take up the programming course that is very essential to gain skills and cope up with the industry.Many of the universities are facing challenges in teaching CP(C Programming) for the students of the first year. Even students are been pressurized for the same. Traditional lecture based approach cannot improve students programming skills as the students are just made to sit in the classroom and listen to lectures. It might fetch marks but students will lack technical growth and improvement. These problems may arise due to lack of basic knowledge of the programmers. Even though many new approaches like Information and Communication Technology (ICT) has come up which uses visual based interactive learning, it is not considered helpful in learning CP [1]. As programming is considered difficult to acquire, it needs practical knowledge rather than just sitting and observing the lectures. Students who have just completed their secondary education and have chosen computer science

    as their career will not be having enough knowledge about the programming concepts due to some reasons like there is no proper utilization of resources, less attentive to lectures . It can be inferred that when students do not understand the functionality of the code, they tend to feel left over and de- motivated. This becomes a challenge to teach as well as learn.

    Agile methodology being dynamic, self-adapting and widely accepted can solve these issues to a major extent by following the four agile manifestos. The different manifesto defined by agile is as follows:

    1. Interactions and individuals over tools and process

    2. Working software over exhaustive documentation

    3. Customer collaboration over contract negotiation

    4. Responding to change over following a plan

  2. CHALLENGES IN LEARNING C PROGRAMMING There are several challenges in learning CP, few of them are

    under-preparedness, lack of resources like fully-furnished laboratory, lack of experienced CP professors etc [1]. According to the survey, the challenges faced by first year computer science students are as follows:

      1. Computer Scholar

        Students are not offered computer science subjects in secondary education so they feel difficult when they enter the programming class for the first time. It also makes them difficult to use the computer system, understand the notion of program, participate in the class actively and attain the knowledge of programming environment.

      2. Understanding the Language

        It is very hard for the students to actively participate and involve themselves in the classroom activities due to their lack of proficiency in English language. This might lead to communication problems and lack of understanding programming concepts.

      3. Lack of Experienced Programming Teachers

    Programming may not be always difficult, but due to inadequate and lack of skilled teachers students learning process might get affected. This minimizes the interest in learning the concepts.


    Traditional lecture based approach is good but it does not involve the student interaction and engagement. Hence we need an approach where students interact and learn more concepts. The following section provides steps for the proposed teaching methodology and the setup of the classrooms. Hence the following steps help the students to involve in the computer programming classes.

    1. Requirements

      1. The programming classes should be conducted in the laboratories instead of the classrooms.

      2. The study material for the programming languages should be provided a week prior to the lab.

      3. There should be well furnished laboratories that can accommodate minimum of 50 students.

      4. The teacher should maintain a friendly relationship with the student so that it makes teaching and learning process easy.

    2. Manifesto

    The aim of applying agile methodology in learning computer programming will boost the students confidence, engage them and helps them to take part actively. It can be discussed in detail as follows:

    Figure 1: Manifesto proposed by Agile

    1. Pair Programming: It achieves the first manifesto individuals and interactions over processes and tools. One student among a pair will be actively implementing the code while the other will be observing it to find the errors and suggest other possible solutions to the implementer. Through this, the students continuously interact and build up a trust with each other. It is recommended to use the same development platform by all the students to overcome the difficulty of understanding the program whenever the pair changes [1]. Formation of the pair can be either based on students selection or based on their academic level the teachers assign the partner.

    Figure 2: Pair programming infrastructure in computer lab

    1. Coding over submissive listening: Working software over comprehensive documentation being the second manifesto will be achieved in this step. We all know that it is better to learn and make mistakes in classrooms rather than making mistakes in exam. There is no effective learning if the students just copy down the programs from the board without understanding them. Hence the students should get hands on experience and practice the programs taught by the teachers during the lecture and gain confidence in understanding the syntax, running the program and debugging it. This will eventually help students to write their own programs with greater confidence and fewer errors.

    2. Active teacher involvement: By having a close contact with the professor Customer collaboration over contract negotiation can be achieved. The instructor or the teacher after explaining the programming concepts provides the students with certain tasks to assess them. By maintaining frequent contact with the students, the teachers can help the students when they are stuck. In addition, the teachers can assess the students when they are performing their tasks rather than assessing them after submiting their final results.

    3. Resilient and quick correction: This step helps in achieving the fourth manifesto Responding to change over following a plan. As the programming concepts are newly introduced to the first year students, course content given in the curriculum should not be followed strictly, instead teach them as per their level of understanding. As stated in the previous step, having a close contact with the students the teachers can correct the errors when they are performing the tasks instead of waiting for them to submit the results. At the right time when the changes are suggested it helps the students to save the time and rework on particular concepts. Adopting pair programming in agile process has been very productive. But there may arise a challenge in pair programming where the time might be wasted by explaining the idea of one student to other [2]. This problem can be overcome by creating an informative workspace in the lab where the students sit in pair. The student who is coding can write down the ideas on sticky notes, charts and place it on the table where the other peer can read those and continue with the work This will reduce the time wasted in explaining each other what they are doing instead of actually concentrating on coding and learning concepts.


    The results of the pair programming on the code quality and the students course assessment are discussed in this section.

    1. Code quality: By adopting pair programming there will be reduction in the number if lines of code, calls and also reduction in the errors [3]. It is because in pair programming where one student codes and the other observes, it can be observed that the observer keep observing and provide inputs to the coder as to what has to be done and what can be improved upon. Also due to close contact with the teachers during learning process will help them to improvise their code if at all any improvisation has to be done.

    2. Assessment: Peer evaluation among students is an essential facet of pair programming. Satisfaction and effective learning among students is achieved by assessing each other's work. Pair programming helps the beginners to improve their understanding. Secondly, Outcome Based Learning can be adopted by professors to assign tasks and assess the students. Based on analyzing the drop and completion rates of the assigned tasks, the professor can evaluate the level of understanding of the students. If the students have underperformed, the professor can repeat the concepts and assign simpler tasks. Once the student has gained enough confidence on the concept the complexity of the task can be increased. Also the professor can assess the students by collecting day to day work where the students create a small informative workspace to convey the work done using a sticky note. During the later stages the student can submit a written report on what they have done.


Based on the level of difficulty of learning C programming in the first year, teachers should design the courses according to the agile manifesto that will help students to gain knowledge and become more productive. Pair programming should be encouraged as students enjoy learning concepts with their friends, become more productive, they often come prepared to the lab to take up the tasks. It also allows students to interact with each other and socialize [3]. Finally, pair programming has the potential to increase the students' completion rate and reduced the absence rate. Students who are enjoying the course, and have more confidence in their programming abilities tend to avoid dropping the course, and try to complete all the requirements needed to pass the course.


  1. Bassey Isong. (2014,September 15-21). A methodology for teaching computer programming :first year students perspective.Paper presented at Modern education of computer science, Thohoyandou,South Africa.

  2. Slaten,K.M.,Droujkova,M., et al.(2005,July).Undergraduate student prceptions of pair programming and agile software methodologies. Paper presented at the IEEE Proceedings of the agile development conference.

  3. Mamoun Nawahdah., Dima Taji., &Tomoo Inoue.(2015, December 10- 12). Collaboration leads to success. Paper presented at the IEEE International conference on teaching ,assessment and learning for engineering (TALE), Zhuhai,China.

  4. Bassey Isong., Ohaeri Ifeoma., &Naison Gasela. (2015). On the Integration of Agile Practices into Teaching: an approach to overcoming teaching and learning challenges of Programming. Paper presented at the International Conference on Computational Science and Computational Intelligence.

  5. Faria, E S J., Yamanaka, K., &Tavares, J A.(2012,March). eXtreme Learning of Programming A Methodology Based in eXtreme Programming to Programming Learning. Paper presented at IEEE Latin America Transactions.

Leave a Reply