Teaching Programming in C: My Experience and Methodology - Tushar B Kute, Lecturer in Information Technology, K. K. Wagh Polytechnic, Nashik, Maharashtra, India 422 003.
[email protected]
In the old syllabus of MSBTE, the subject “Programming in C” was only having the practical. But when the new syllabus of semester pattern is introduced in academic year 2006-2007, the theory subject of “Programming in C” was added for branches CO/CM/IF in semester II. I always think teaching is not simple. It requires knowledge and confidence to confer that knowledge to students. In case of programming subjects, the teacher must be cleared with all the concepts of programming languages. C programming has always remained my subject of keen interest. In many colleges, teachers hesitate to teach the programming subjects. But I have failed in love of programming. As per my own opinion, without programming subjects, I was just unable to teach anything. I was lucky to be granted with the subject “Programming in C” to teach first year Information Technology class in year 2006. In the same year I was teaching Object Oriented Programming for second year and Java Programming for third year Information Technology students of yearly pattern. I was not having the experience to teach the C programming to students before. Just a short term training program, I have conducted for interdisciplinary staffs in the month of October 2006. I was having that experience only. Actually I was eager to teach the students of first year Computer Technology. I have taught both Computer and Information Technology students in first semester also. So I was having the idea of both of their intelligence. Computer students were more intelligent as compared to Information Technology students. Finally, I decided to go with these students. At the same time I was teaching C, C++ and Java for whole Information Technology branch. Students always consider that the subjects of programming are harder as compared to other subjects. We should have to eliminate this fear from the minds of students. They try to join the extra coaching classes for these subjects outside. If the fear of these subjects is not removed, they try to mug up the concepts of subject which is not required for programming subjects. Being my first attempt to teach Programming in C, I tried my best efforts. The level of intelligence of students also matters. I found very less students keenly learning the subjects and others are just mugging up. Even many students among top five were also using the technique of mugging. At the time of practical also they were doing nothing. I was not having clear idea, what to do with them? As usual, I got the result only 50 percent i.e. only 29 out of 58 students were passed in first attempt. The result of first year Computer Technology better than mine and even the topper of the subject was also from the same class. I was just got frustrated. I always look the teaching of programming subject as the challenge. I decided to teach the subject in nest academic year with different pattern. Before the start of actual semester I decided the plans of teaching the subject. Fortunately, I got students very better than the previous one. So I found very interesting to go with these students. Very first thing that I cleared is, “Programming in C” is the first subject of core branch of Information Technology which has introduced in the syllabus. It is the base
Teaching Programming in C: My Experience and Methodology
1
of all programming languages. Without knowing this subject, it is very hard to learn other programming languages such as Visual Basic, C++ and Java etc. which are also the part of upcoming syllabus. First of all, I have made the attendance compulsory for all students for theory and practical. Because last time I have recognized that many students were just bunging the lectures. That was the reason; they were not clearing the many programming concepts. Since several concepts of programming are inter-dependent. Due to this, I was the only teacher whose students’ average attendance was above 80 percent! I was aware of learning pyramid that I learned in one of the seminar called a learning pyramid. This is shown below. I tried to implement this pyramid in my teaching. Lectures (5%) Reading (10%) Audio visual aids (20%) Demonstration (30%) G. D. (50%) Practice and doing (75%) Teaching others (90%)
Learning Pyramid I imposed the factors in this pyramid onto students. These points of matter are written below: Preparation In order to teach or preach anything we must be prepared by ourselves. I prepared my learning material and knowledge in systematic manner. Before actually taking the practical of students I performed the entire practical given in the lab manual [1]. I studied the syllabus [2] well; including its deficiencies and efficiencies. I extracted the errors from subject’s laboratory manual also [3]. I prepared my own teaching plan differently with this year. Learning material Students, whether they are of any discipline always try to use the textbooks which contains the collective data of syllabus orientation. In case of diploma students some local publications textbooks are available but while studying these books I found a lot of mistakes in programs and in texts also. They have just copied the contents from some reference book. So I took students away from using the local textbooks. I gave them some reference books which I think good books for students at diploma level. These are ‘Programming in ANSI C’ by E Balagurusamy
Teaching Programming in C: My Experience and Methodology
2
published by Tata-McGraw Hill and ‘Let Us C’ by Yashwant Kanetkar published by BPB Publications. I forced to use these book my making them aware of using reference books in engineering. I succeeded this with great extent. Besides the reference books, I gave them my self-prepared note also. I am grateful to mention here that a lot of students were using my notes rather than using local author’s books. I realized this while checking the answer papers. Punishment In the first lecture itself I have warned all of them to do not remain absent for any lecture. Those who have remained absent for any lecture, I have punished them by giving them some programming assignment or any other work regarding the subject. Many students completed given assignments. I think I have not succeeded well in this. Teaching Methodology Learning a programming language requires a different mind-set. I was trying to create this mind-set by several factors. I changed my teaching style to be more impressive to grab the attention of students. When students did not understanding the concepts I was using the local language of communication i.e. Marathi to teach them these concepts. They were also asking me the questions in Marathi. I think the language of communication is not important is not important, understanding is most important. Visual Aids This was the first time I used the transparencies to teach. Today I am having nearly 120 transparencies on “Programming in C”. I always used to keep these transparencies in front of students in order to fix the data on that in students’ minds. Remember, transparencies play very important role in classroom teaching. I prepared all these transparencies by myself. The diagrams drawn and program illustrated are some from books and some are self prepared. I also prepared the PowerPoint presentations for various demonstrations but never got time to show them. Basically, we can show these at the time of practical. Demonstration The practical oriented subjects require demonstration always. Without the demonstrations, it is very hard to understand. The topics like looping, arrays, function and pointer are some bit harder to learn. Students found these concepts something strange. So demonstration is the only way to make them familiar with these concepts. I used the LCD projector to provide the demonstration on several C programs and cleared their doubts also. Questions and Question banks We have been provided with some sample question papers on respective subject. I was having two board question papers also. I studied these question papers and prepared the type of the questions to be asked by differentiating them on
Teaching Programming in C: My Experience and Methodology
3
the basis of marks i.e. 2 marks questions and 4 marks questions. The question banks prepared were on the basis of this factor. Some questions were self prepared and some were my self prepared. I used to give them question bank upon completion of each chapter. I made them compulsory to solve the question banks in order to check the laboratory manuals. I was also giving many programming exercises of each chapter in order to make them more practical oriented. Practical If you observe the leaning pyramid given above; 75% of the knowledge can be gained by practicing and doing. I think regarding programming subjects, we can obtain more than 90% of knowledge by practicing. I always used to say my students that ‘first perform the practical and then write the theory’. That is, without knowing practical implementations we can not know the theoretical implementations. Just don’t try to mug up anything. I focused a lot on practical. For practical in the lab, I differentiated the students as per their abilities of performing. I gave a single computer for every weak students and another single computer for two clever students for performing practical. The purpose was to compete between the clever students and to make the weak students self-doers. The subject is having a laboratory manual. But it contains many programming and theoretical mistakes. Besides this, it contains one solved problem and five programming exercises. I distributed the unsolved programming exercises differently for different students. So they were performing differentdifferent practical by avoiding the copying the programs. I imposed them to draw flow-chart and write the algorithm for every problem. Here I found many students were performing well. Additional teaching Many times when I found the students got bored in the lecture by continuous harassment from morning, I used to change the subject. Then, I was telling different moral stories and some puzzles to them. That time I found students are eager to hear this! Appraisal I used to praise students for their good work, good logic in programming and good paper writing also. Once I attached the Xerox copy of one of the girls answer paper for other’s reference. It has created good impact on students and they got moralized from this. Programming Contests From the first year itself I made all my students aware of programming contests and forced them to participate in these. They gave overwhelming response in some programming contests. I remember, in one of the programming contests more than half of the class was participated. It has given them a good experience on competition. I found some diamonds in programming. Minimum ten students were ‘very good’ in programming. In case of Computer Technology students this cane was
Teaching Programming in C: My Experience and Methodology
4
none! One of the pair from my class has cleared the first round of the contest twice! I realized my students’ abilities at the time of final external practical when I was internal examiner for first year Computer Technology class in the same year. Students got au useful experience from these programming contests. I created minimum 7-8 students who are really liable to win such contests. Remember, the knowledge implementation is one of the most pleasant things in student’s life. Pointers While teaching the C programming special focusing on the pointers in needed. Many one thinks that this is the most complicated concept in C programming. While studying in diploma six years ago, I was also thinking in the same manner. But my mind-set was changed when I actually took pointers in C++ to teach last year. Before that I was unknown to the use of pointers. I gave more lectures to teach pointers. As already stated, before teaching anything we must be cleared with every concept in programming. For pointers also this is strongly recommended. I used all my teaching aids such as transparencies, LCD projectors to teach the pointers. Before that I told students that pointer is the simplest topic in C programming! They also believed on that! I got the result successfully. At the time of external practical I got appraisal from external examiner regarding my students. He told that, at this stage of learning many students are not having this much knowledge that your students are having. I satisfied that time!
Teaching Programming in C: My Experience and Methodology
5