Programming is the process of writing, testing and debugging of computer programs using different programming languages. For this, a programmer requires declarative and procedural knowledge. The former is the knowledge of programming language syntax and semantics which in turn needs memorization and comprehension abilities; whereas the latter is problem solving and program design skills which in turn needs additional skills like abstraction and logical thinking, and domain knowledge. So programming is a complex task and needs multiple skills and knowledge. Teaching programming languages is one of the foundations of computer science education. It is important for the teachers to gain students’ attention and strengthen their motivation for learning to programme with the help of a variety of teaching methods. Learning programming is a difficult task for many students and teachers are looking for methods to improve this.

Basically there are 3 main resources to teach/learn programming:

  1. Classroom teaching: In class room teaching, the teacher spends a significant amount of time in teaching the program constructs of a specific language and gets less time to expose the actual programming process. The problem with this method is that students with good comprehensive ability and logical thinking will survive but the other students find it difficult to bridge the gap between language constructs and program construction.


  1. Lab sessions: Lab sessions play a significant role because of the importance of practice in learning programming. But in lab sessions also, if some teachers start giving large programs as assignments to students rather than starting from small and simple programs. This non-systematic teaching will increase complexity in students’ mind, since brain has a natural tendency to learn in an incremental way. In addition to that, students may not get sufficient individual-feedback during lab session.


  1. Programming text books/Learning material: Programming is a dynamic process, “program” text books being a static media are ill suited to expose the process of programming.They can be used just for knowledge acquisition and they do not reveal the program construction process.


Difficulties of students in learning programming

A survey conducted of 137 undergraduate engineering students claims that most of the students choose “C language” as there first programming language.


The students in programming course can be categorized as effective and ineffective based on their effectiveness in programming. Effective students can write programs and they typically learn programming with moderate effort. Whereas, ineffective students cannot write correct programs and need more personal attention and cognitive support to learn programming. Since the failure rate is high, the ineffective category plays a significant role in the effectiveness of programming courses. Survey respondents (both category) were asked to list at least five difficulties they faced during programming. Since the question was in open format, a wide variety of difficulties they encountered during programming were listed.
These are classified as follows, mainly based on the programming process aspect:
i. Starting problems
ii. Language syntax related
iii. Logic related
iv. Debugging related
v. Lack of knowledge related to various aspects like OS, problem domain etc.

                             Domain Associated programming difficulties
 Knowledge: Recall data
  • Difficulty to remember the syntax of a Programming Language and makes syntax errors
  • Lack of knowledge of useful library functions and header files
  • Lack of knowledge about system software
  • Forget to declare/initialize variables
  • Lack of problem-domain knowledge
Comprehension: Understand the meaning, translation, interpolation, and interpretation of instructions and problems; state a problem in one’s own words
  • Difficulty to understand the problem to solve
  • Unable to interpret the compiler generated error/warning messages
  • Difficulty in translating a logic to program
  • Difficulty in minimizing the number of steps
  • Difficulty to comprehend a given program
Application: Use a concept in a new situation
or use an abstraction unprompted; apply what
was learned in the classroom to novel
situations in the workplace
  •  Unable to apply theoretical knowledge
  •  Unable to solve a given problem
  •  Difficulty in algorithm design
  •  Difficulty in code optimization
Analysis: Separate material or concepts into
component parts so that its organizational
structure may be understood; distinguish
between facts and inferences
  •  Difficulty to comprehend a program without comments
  •  Difficulty to understand recursive functions
  •  Difficulty to understand the logic of large/complex programs
Synthesis: Build a structure or pattern from diverse elements; put parts together to form a whole structure, with emphasis on creating a new meaning or structure
  •  Taking more time to find a correct logic
  •  Difficulty in algorithm design
  •  Difficulty to integrate different modules
Evaluation: Make judgments about the value
of ideas or materials
  •  Unable to describe a program logic
  •  Difficulty to justify and debug a program logic
  •  Taking more time to debug a program

Ways to improve Programming skills in students:

Regarding this issue we had a talk with Prof. Sagar Chitte from CMCS college, Nashik. Sir shared his teaching experience with us and suggested following ways to improve programming skills in students.

  • Interest of a student is the basic factor which influences learning. If a student is not at all interested in learning then no matter how hard a teacher tries to teach, it will all be just a waste of time and energy. Hence a student should have serious and positive attitude towards learning.
  • Language can also be a barrier while learning something new. Some students may not be able to easily grasp something taught in English language. Hence the meaning of syntax should be conveyed to the students in a language they are comfortable to understand.
  • It is recommended to students to use good reference books to learn coding. Do not refer local author books.
  • Teachers should take more lab sessions than classroom lectures. In an annual pattern the theory lectures are of 36 hrs while practical lab sessions are around 100 hrs. if these 36 hrs of classroom sessions are conducted in the lab itself then more mileage can be achieved in terms of hands on programming for students. Starting with a presentation of 10-15mins and then let students practice on their own using a computer.


  • On initial stage when a programming language is new to you, try to use comments for every line. This will help you to understand the code more easily and remember it for longer.
  • The assignments provided to students should be from low to high complexity. This helps students to grasp more easily. This technique will also eliminate the fear of programming in students.
  • Each student should be given different assignments so that they don’t copy paste it and just complete it for formality. Today every students gets the same assignment.
  • The assignments given to the students should be purely application based. For eg. instead of giving a direct assignment of ‘sorting’, tell students to write a program to create mark list of students starting from highest marks to lowest and announce top 3 students in classroom. This will increase their logical ability.
  • Students should continuously verify the code by changing some values or variables in the code and then check the corresponding output.
  • Students should themselves debug the code and find errors and correct it.

Hence by taking care of simple things we can give India better software developers and Engineers. Learn the technologies used in or related to your current projects, and learn them much more broadly and deeply than strictly necessary for the job. This way, you can immediately put your newly gained knowledge to work, which helps your motivation, and helps you to understand and remember what you learn.

If you have any suggestions or ideas to improve programming skills feel free to send us on shefali@cognifront.com

Cognifront.com develops worlds best engineering education software which saves 30% efforts of teachers and score 20% more marks and increase more admissions in the college




Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s