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:
- 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.
- 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.
- 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.
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 firstname.lastname@example.org
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