 Good morning and welcome back to the next session. We continue our interaction which we had started in the last session. There are couple of important announcements. First of all, I would like to know from Triple I T Alabad, whether they have received all the clickers. Secondly, this is for all the remote center coordinators. I do not know whether you have distributed the clickers to all participants or not. I understand that a list was given identifying which clicker to be given to which participant based on the serial number because that is how we will correctly collect the response of that particular participant. So this may not have been done already. I will request all coordinators to distribute the clickers to all participants and perhaps a very brief explanation to them about how the clickers are to be used based on the interaction that we had because we would like to conduct a common quiz for all the participants here. I know that the question that was asked an important question that was asked on the pedagogy, I think it was asked from Triple I T Alabad, isn't it? The question was, what do we do so that the average students as also the relatively academically poorer students will understand programming? As I told you, my answer might surprise you. I go back to some comments which I had made in the very first lecture where I had talked about research and education, suggesting that research and education have to be considered as a part of the single continuum. In the process, I had also remarked on the attitude of our students. I had said that the attitude is generally fixed by the rat race for marks. Sadly, it is not only the students attitude which get fixed by the rat race of marks and then therefore some of them whom I said are the winners in the rat race develop over confidence bordering on arrogance and some people who are losers and who have large in number, they develop diffidence bordering on despondence. So basically, suppose one student has scored 90 percent marks in some examination, he or she thinks that he or she is brilliant. Suppose I have scored 40 percent marks, I think I am no good. Unfortunately, the matter of this classification or conviction is not limited only to the students. As teachers, we also surprisingly participate very, very enthusiastically in branding people based on their marks. So when my friend said that average or poor students, he is definitely referring to people who are in my category of 40 percent or 45 percent marks. He believes and I am taking him as a generic representative of all of us by the way because I am sure all of us think exactly in the same fashion. Any student in our class who is a topper or who score 90 percent marks or 80 percent marks, etcetera, is considered brilliant and intelligent. If you on the other hand have a student like me who has 40 percent marks or 45 percent marks, you will also necessarily dub me. If you are very decent, you will call me a poor student. Otherwise, you will use more derogatory work saying he is useless, not good for nothing. How do we make him understand? Consequently, all of us as teachers have decided that we require a special pedagogy for so called average or poor students whereas the more brilliant or better accomplished students do not require any special attention. In my discussion on day one, I had hinted to you that we may broadly break up a class into three portions. One portion which consists of people who perform academically very well and I said we must give them more challenging problems. The middle section of course is what we call the section which is comfortable with the average pace of discussions in the class and the third the bottom portion consists of people who are academically poor performers. It is to those people I had said that in IIT at least we do that and I am sure many of you would be doing that they will require special lectures and a little bit of hand holding. Unfortunately, it appears that most of you took this statement to mean that there are indeed poor or very useless students and they are indeed extremely great students. That means the distinction between the great student and a poor student is so phenomenal that I must think of doing something drastically different for these categories of students. The answer is yes and no. Let me take the cue from a point which I had made when I was describing the right attitude. I had said that if all our students and indeed all learners which includes all of us because all of us are learners, even if we have finished our PhD and done research and have accomplishments, you will agree that there is always a lot to learn in this world because the totality of the knowledge is far more exhaustive than what we can learn in our lifetime. Of course that is philosophizing things but the fact is that all of us are learners and I had said that a learner's attitude is best symbolized by the three basic tenets which all of us have seen in children and all of us possessed when we were children. What were the characteristics of these attitudes? The three points which I mentioned curiosity, boldness and perseverance. I will digress a bit and generalize it. We are talking about marks in examination and we evaluate success based only on those marks. How valid are these in the lifetime of a person? I have analyzed the life of gold medalists who pass out from IIT system. As many of you would know, every institute gives a president of India gold medal to the top performer of the b-take category every year. There were five IITs for a long time, there are now ten, but even if you consider the established IITs which have been in existence for 50 years, roughly 250 PGMs or president of India gold medalists have been created by these institutions. By any method of comparative evaluation, we know that they represent the best in terms of academic performance, absolute top class. When they pass out from the institution, they go to various walks of life. Most of them prefer research, many of them continue to be teachers, either here in India or anywhere else in top universities. Some of them even venture into businesses, some of them establish technical companies, some of them take up jobs, technical jobs. Of course they are very smart people. We are talking of president of India gold medalists. They are very smart people and they do very well. However, when I tried to trace the achievements in real life of all the president of India gold medalists, I found something very curious. First of all, without exception, all of them are doing very well. Naturally, because they are very smart people, hardworking people, their understanding is very sharp, et cetera. But there is the curious part is are they at the top of the ladder which they started climbing, whether it is economically, whether it is in terms of wealth generation, those who have joined industry, are they the CEOs, are they the CTOs, those who have initiated some companies, founded some companies, start up companies. Are they the people who have built very large companies and very large wealth? Are they the people who even professionally are dubbed as the toppers, as the title president of India gold medalists should represent? Sadly, the answer is no. While they are all doing extremely well in real life, they have not succeeded, commensurate with the accomplishment that they exhibited when they were scoring marks. You take industry, for example. Look at the people who succeed in industry as employees of the technical, employees of the companies that they work for, or as innovators and entrepreneurs who set up companies. The companies which are the largest in the world, if you trace their history, they have been led by people who are all great, but they were not gold medalists. Why I say this? Not to speak in a derogatory sense about president of India gold medalists. They are truly great people. After all, I have several colleagues who are PGMs like that and they are absolutely extraordinary people. But when you talk about success in life, which revolves around solving practical problems, we observe that it is not the marks in the examination which are the only decider of how a person grows in real life. The basic understanding and knowledge of any technical field is essential if you are ultimately going to solve technical problems. But those who succeed show additional qualities. They not only show leadership and vision to succeed, but they exhibit constantly the fundamental characteristics that I just mentioned. Tremendous curiosity, boldness and perseverance. You will also notice that during their time as students in the institute and this I observe in IIT, this you would be observing at your place also, those students including the people who do very well in examination will typically be very curious, typically be very bold, typically will be innovative, typically will be articulate and typically they will be thinking differently from the others. In short, their energy levels that they apply in thinking about things, the curiosity that they have about various things is what actually causes them to learn things fast. Now I come back to the original question which was raised. What do I do so that weaker students or poor students will also understand programming? First of all, computer programming at least in its basics is not a rocket science. The basics can be taught to every human being, every human being. Unfortunately, there is a distinction between learning the basics and becoming a programmer, becoming a great programmer. I would again submit that those students whom we see as great programmers are not necessarily the academically based performers. They are not bad performers but they are not toppers. So please remove from your mind a notion that you all may have, I had it for many years, that the ability of a student to learn programming is directly dependent A upon the intellectual capability of the student and B upon the academic performance exhibited by the student. If you see some of the people becoming good programmers and also academically great performers and also intellectually great people that coincidences incidental according to me. Let me give examples from some other domain to illustrate my point. Consider playing chess. Vishwanathan Anand is the ruling world champion, we are very proud of him and there have been great chess players in this country. Many of you would have been chess players, I used to play chess. I have noticed this and many of you would have noticed this, that there are people who are not necessarily accomplished academically. Even when you see inter-university tournaments, you will see students who participate in chess tournaments. You look at their background, they are not necessarily 10-pointers or 9-pointers as we call them. There are some students who sometimes struggle to pass in their examinations but on the chess board they are the kings. They play so well that you cannot consider them intellectually lesser than any other great intellectual giant that you have. Why does that happen? In chess, like learning music or learning programming, often requires perseverance of a different kind and certainly it requires some intrinsic talent. If you think of achievements at the highest level, you do require that specific talent or inclination as we call it. Take music for example. I may learn at the best of the music gurus but I am very sure that I will never be able to sing as nicely as let Muhammad Rafi or Mukesh ever sang. That is because I just do not have that talent or inclination. However, if I persevere, I can definitely learn to sing reasonably well. This is the point I want to make. No matter what is the intellectual capability of a student, no matter how has been the academic performance, every student can definitely understand basic programming and will be able to write programs reasonably well. However, can everybody become a great programmer? No. With a lot of practice, most people can become very good programmers. The best programmers have something else which Muhammad Rafi and Latha Mangeshkar and such people had but we are not talking about them. We are talking about people who are failing in this course because most of my colleague participants who are listening to this would remember there was a small point that was mentioned in the class I think by the coordinator of the center that the failure rate of students in this course is very high. So the biggest concern naturally for all of us as teachers is that how do we reduce this failure? There are two aspects of it. One, how do we increase the marks that these students are capable of scoring in an examination so that they will pass? The attendant issue is how do we make sure that they learn sufficient programming to cross at least the basic minimum threshold as we would like to describe that person as a reasonable program? After all, if somebody has come to do engineering or science education, then one is required once in a while to actually deploy computers for doing either the data analysis or implementing control strategies or whatever. Not everybody will be doing it but even during the course of their four years of study or five years of study they will be required to write some programs in their own field and we want to ensure that every student is able to do that. In a nutshell then we are talking about a problem which is not about the top programmers but we are talking about a problem of how to ensure that every student in our course understands the basics of programming adequately so that he or she will not fail in the course. In short, we are looking for pedagogy or any shift in pedagogy that may be required to ensure that no student fails in the course. I hope I am right in reinterpreting this question after this elaborate discussion and my answer is yes, it can be ensured that every student in my class no matter whether the student is a 90 percent or a 40 percent or every student in the class can learn basic program. However, the treatment that we give to the subject while teaching or while arranging laboratories etc. has to be slightly different. My suggestion is we always look at the entire class as having to understand every concept that we dwell with. We expect every student in the class to be able to become the best programmer. Our entire pedagogy is directed towards that and that is right because our implicit understanding is that when we push our students with harder problems when we push our students to understand more difficult concepts they will work harder and at least they will understand simple concepts well. Unfortunately, in real life it does not work in exactly the same fashion for the following reason. I put myself into the shoes of a student who has come from a small place let us say Jarsuguda or Khachro or some place. I am a small villager. I was a reasonably good student in my physics and maths. That is how I got admission to engineering college. I cannot speak English and I have never seen a computer in my life. I come and start attending your course. First of all, I do not understand English. Secondly, computers all Greek and Latin to me. Thirdly, relatively I feel more dejected in a class. When I see almost or not almost but most of my colleagues knowing computers having done programming whatever at that juncture I am not wise enough to understand that people who have done programming has not necessarily made them great programmers but they seem to understand something basic much better than I do. What happens is in the first month of my existence at your college if nobody takes notice of this diffidence which I have developed as far as computer programming is concerned, relative to my class, remember the characteristics. A, I am a relatively poor student as you call it. The other people perhaps have got 90%, 80% marks in their entrance exams. I got some maybe 57% marks. I might have struggled to get admission to your college for a variety of reasons. But I got admission now and now you are comparing with me with all the other people. So this has created a diffidence in me. I start attending your classes and I start attending your lab sessions. Most of our colleges do not have adequate number of teaching assistants. I put myself into the shoes of a colleague teacher who is participating in this course. Imagine that I am teaching let's say at Coimbatore or Allahabad or Indore or wherever it is. In actual practice, I will have a large class typically 60 or 70 students. I may have some assistance from my colleagues in conducting the lab. But in so far as the doubts of my students are concerned, I am alone responsible to clarify those doubts. If I put myself into the shoes of you that is you as in you are teaching into many colleges, I will also have to remember that the teaching load given to me is enormous. Unlike in IIT where I may teach just one subject or two subjects in a semester, many of us have to teach three, four subjects per semester to large number of students. I therefore do not have much time to even think. I am probably using the notes which I prepared last year to teach and I can barely cope up with this load. Do I have time even to identify the students in my class who are very weak and therefore they require my attention? I will tell you what. When do we come to know that these students are not doing well in computer programming? Only after they fail in the course. If we are considerate, we will look at them after the mid semester examination which is roughly one and half months into the semester. Earliest we can spot that they are weak and they are not understanding computer programming is at least a month after the course begins when we would have conducted a few quizzes or we have seen that in the laboratory they are not able to perform, they are not able to write even simple programs. You will agree that it will take at least three to four lab sessions before we notice them and that too after we have decided that we will notice them. I submit humbly that it is too late. If I have come from Khachrod, I do not know English, I am diffident. While I may be very articulate in Hindi in the class, I will not speak where everybody is speaking English, I will be a shy person. Additionally, I will make mistakes because I do not have the advantage of discussions and learning through the discussion which other more articulate students will have. I will not be bold enough to ask you questions because I have lost that boldness long time ago. As a result, when you will spot that I am not becoming a good programmer, it would be too late because in that month I would have given up completely and in that month I would have decided that my only ambition in life is to somehow pass this examination. I may even be tempted to start following bad practices. If there is an assignment to be submitted, I will go to a friend of mine, copy his assignment and submit it. If you do not notice it, maybe I will get three marks out of five. I will be very happy. I will be comfortable that I can cheat and get away with it. If I am conscientious or I am not good in cheating, I will not do that. As a result, I will get zero marks which will further erode my confidence. Why am I doing this elaborate analysis? Because the fact of life is that the students whom we think are weak in programming, as a large number of people who fail, I am told, there is certainly something wrong or inadequate in our ability to enthuse them to apply their mind to program. Please understand that any technique or any knowledge, one has to work hard to acquire it. Sadly, another attitude that our students have is they want ready-made knowledge or they want ready-made answers to questions. Programming is about designing algorithms. Programming is about understanding a problem in all its dimensions and then analyzing possible ways and coming up with a solution. Writing program is a synthesis problem, not an analysis problem. A large majority of our students when they come from schools have hardly ever done synthesis. They have not even done critical analysis. They have read books. They have understood certain patterns of problems which they can solve, which problem they see, the problems which they have to answer in entrance tests and so on. This is probably their first opportunity when they get to see that there are problems which are not even well defined which I am required to solve. Even a well-defined problem if I have never seen earlier in my life, I will have to attempt to solve them. And there is one more thing. I am extremely afraid of making mistakes. All this analysis leads us to what I think to two conclusions. I have actually factored these two conclusions in my teaching here. I have seen many other colleague teachers in IIT and other places doing that. And I would suggest that you do the same. What does it mean to factor these two conclusions or these two observations into our teaching? Number one, we do not have the luxury of identifying students who are weak in programming towards the end of the course or even at the halfway time. If we do that, it is too late. And it is not about the intellectual capability of the student. It is about the desire to learn which has been killed sufficiently during that period of time. Consequently, if we want to address this issue and if you have large number of students who fail, that means this problem affects a large number of your students. Amongst those, there will be even some who are otherwise doing very well academically in other subjects. In fact, the observation made that there is a large number of failures in the computer programming course implies that there are not large number of failures in other courses. That means there are students who even conventionally are considered academically good because they are passing in other courses, but they somehow doing very badly in programming. So the problem is that as far as computer programming is concerned, they need assistance earlier than in other courses. Because other courses, they seem to be able to cope up with it. According to me, the time from which they need assistance is the first day when they show up in your class. According to me, the maximum time the teacher must spend on a course is not in preparation of lectures or preparing assignments etcetera. Those are of course required, those are important, but maximum time a teacher should spend is in interacting with the students, attempting to motivate them by small dialogue. Telling the student repeatedly that making mistakes is alright. Don't worry. Tell him that the computer will shout back at you, but encourage that student to sit in front of a computer and actually try out things. Writing algorithms on paper is good, but it's not good enough. And that is because you've got a great chance for the computer himself to tell you whether your algorithms are right or not. Please encourage them to write programs, run them. Please encourage them to write a few lines of programs but on their own. Please encourage them by telling them that it's perfectly fine if you get all wrong answers from the computer. But think, analyze why your programs are not running. Write them again. And in the first month, for God's sake, don't confuse them by tricky or complex questions. You will recall that one of our colleagues had actually indicated a question. I had not written it down, but I had promised him to answer it. It said something like C plus equal to plus plus B minus minus minus something, et cetera, et cetera, et cetera. They are very interesting questions by the way. And indeed, if you solve them, you can confirm that you have understood the unary operators, increment operators, et cetera, et cetera, very well. Now, for you and me to indulge in this kind of academic exercise is great. It is intellectually challenging and very fruitful. It is amusing. Is it correct for us even to suggest that such a funny problem can be raised in a class to our students who don't understand basic programming? Particularly when such constructs are never, ever used in real life programming, never, ever. In fact, the kind of construct that was shown to me and which I have seen even in books and all in examples and questions. Why if you write such a single line of code containing such atrocious expressions when you are employed by, let's say, TCS or Infosys, you will be asked to leave the job next day. You are, in fact, expected to write clean code, which can be very easily understood by every human being. Forget the computer. Computer is able to understand the complex detail also. What I am hinting at is, please reexamine. Your examination system. And I am not even talking of university examination system. If you ask this kind of question to me, a student who has come from Khachrod in the first 20 days, let us say, after explaining the basic concept of evaluation of expression, precedence, et cetera, et cetera, and say, solve this problem for that. What is the answer? Not only I will goof up because I will certainly not understand that complex thing. I will get further diffident in my dealing with you. I will further lose my confidence. And additionally, since I am an intelligent and sensitive human being, I will start wondering why is this teacher asking me C plus equal to minus, minus, D plus, minus, minus, something, et cetera, et cetera. It looks very funny. And then I will decide if this is the way great programmers write computer programs, I better not go to that field. It seems very stupid to me. I have elaborated enormously on this simple example. But my objective is to tell you that an important aspect of pedagogy to handle students who appear to be weak in programming is to ensure that at least during the first month of their existence, you do not ever raise issues which are either complex or tricky, particularly when they are not relevant in real life program. My submission is that our teaching should gradually increase in complexity. We must take very simple problems. Explain how those simple problems work. That is what you probably do. But what we fail to ensure is that for these simple problems, students actually execute these programs on the machine. The way we conduct our labs is slightly problematic. We always expect students to write complete programs and run them in the lab. At least this is what I have seen in many colleges. Please understand that when you do that, during the one-hour lab that they have, most of the students are learning, you know what? They are learning to type. Their typing is very slow. And therefore, they are spending that entire one hour in entering a 10-line program. What is the objective of the lab? The objective of the lab is for them to understand the behavior of a program when it is executed by a computer, to understand what are the logical mistakes I might have made in a program. Do I get a chance to do that in my lab? Do I get a chance to do that even in a tutorial? Please understand when you ask me to write a program, even if it is to be written on paper, I am spending much of my active time in writing. I am incidentally thinking a little bit while I am writing. And since writing takes time, and typing takes still more time, I am actually tempted to copy both while writing and while typing, because I want to reduce that time that I am spending on whatever task that you have given. At least my version of the pedagogy suggests that in the initial period, we should give readily written programs to our students to read. We should give variations of a program. You will notice that the function evaluation or the iteration that we discussed, there are three alternatives. These were thought of by my colleague, Prasar a million so on. Why? Because I want students to think what this means, what that means, and what the third thing means. In the lab, we do not ask them to type these programs at all. They are made available readily. You would have noticed even in the first lab sessions that you are doing, we are giving a prototype program. Of course, you are all accomplished programmers because you are all teachers. You have been teaching this for quite some time. But you will agree that in the limited lab time, rather than spending that time in typing out a 20 line program, if somebody has already typed that 20 line program, and if I am asked to modify only two or three crucial lines which make a semantic difference in the way the logic of the program is organized, it is then more likely that I will spend more time thinking about the logic of the algorithm and therefore understanding that logic better. So, conclusion one. Please revamp the way we conduct our laboratories. And I am talking necessarily on the limited perspective of teaching, programming effectively to a large number of students who seem to have problems. In the first month, the laboratories that they do, please ensure that they read at least 20, 25 different programs. The problems could be different, all the variations of the same program could be done. According to me, the initial lab exercises could contain the following. Given a program, modify that program to do either this or to do that. So, instead of adding two numbers, ask them to write a program which will add three numbers. Instead of computing in one particular way, ask them to program it in a slightly different way. As a matter of fact, one of the assignments that I would be suggesting for the team efforts in this workshop will actually request you to think of such questions or such lab exercises which will ensure that our students start thinking rather than mundanely spending their time in typing. The second part is also about the difficulty that they may have in understanding the computing environment. Whether it is a Microsoft environment or Linux environment, there is a certain diffidence that I have in mind when I am facing a mighty operating system. So, the notion of login and all can be clearly understood. But to understand an editor, whether it's a graphic editor or a line editor, particularly when I have never used computer for editing thing, that's take time. We typically do not allocate more than one week in the lab and assume that people are able to type in their programs, edit their programs and do it properly. I submit humbly that in my own observation, for a person like me who comes from Khacharod like small village, the time required for me to acquire sufficient confidence in typing reasonably fast is minimally 15 days. So, what I do is, I actually take a printout of the keyboard on a plain paper and give it to students and say that if you are never typed in your life, please understand the layout of the keys at least so that you know where is A, where is B, where is C, et cetera, et cetera. It is in this context that a reasonably easy to use editor such as G-Edit, for example, is extremely good. Another very good environment for a learner perspective is turbosy. I know many colleges use turbosy. The puritanical academicians do not seem to appreciate the advantages of turbosy. But I personally believe that it's a very good environment particularly for early learners. After all, we want them to later on understand debugging and such thing and in whatever environment we are using, we will be introducing these concepts to them. But please remember, in my humble opinion, pedagogically, the most important period for students who are learning computer programming is the first month of our course, not the second, not the third. If first month, we have not broken ice. If first month, we have not enthused them to eagerly try to make mistakes and learn. If we have not done that, it is unlikely that on their own they will learn more because they would have given up by that time. I have tried this successfully in IIT. By the way, it is not correct to imagine that in IIT, I get only the top students. We have students who perform very poorly in various courses, even at IIT. And the only reason is not because our questions are tougher or our questions are different. It is because the reason why students perform poorly, not only in this subject or any other subject, is when the student does not find adequate interest in that course, does not find adequate time in which to apply his or her mind to solving problems and to make that course interesting and to hand hold that student from zero to someplace rather quickly is our responsibility as teachers. So to conclude, my answer to your question is, number one, I do not believe that any student coming to any one of our colleges is so dumb as not to understand basic programming. Therefore, the problem lies elsewhere not with the intellectual capacity of the student. Number two, if large number of students fail or even if one student fails and which happens even in IIT, the failure of the student in a course like computer programming can always be traced back to reduction in the interest, enthusiasm and the time that the student is genuinely spending on learning programming, typically in the first month of the course. Therefore, please redesign your labs, your tutorials at least for the first month. What we often do is, we take the entire syllabus to be covered, divide it into portions linearly and then decide how much time to spend on every portion. Sadly, many university systems encourage such thinking by assigning hours to be spent on different concepts. So if I have to discuss pointers and whatever, whatever, I may see a particular portion which says six hours. If I have to talk about data types, expressions, et cetera, I will again say six hours. Is that correct? Is that universally correct? Is that correct in the context of learning computer programming, particularly if I find a large number of students failing? Obviously not. What is perhaps required is to spend 15 hours in elementary concepts and spend only two hours in discussing pointers later. And to live with the fact that not all my students will be experts in handling pointers, doesn't matter. If my ambition is to ensure that a large number of my students acquire at least a basic minimum understanding of programming, then this non-linear thinking in my allocation of time is mandatory. Fortunately, I work in an environment where I have complete freedom of pacing my course because the examination paper for my students is said by me only. I know what I have taught them. I know how much time they had to practice what portion. So I can ask them any question that I have. In spite of that, the kind of challenges that we pose in IIT and I would like you to do that, we, for example, always say that some questions you will not be able to solve. Since we are discussing pedagogy, let me bring out the important difference between the IIT and IIT system or I mean, I call them generically. I am talking about any system which gives complete autonomy to a teacher, to teach and evaluate. And this will be true in every system. So let me give you an example of real-life incidents that happened with me. It's a very representative sample. This happened in early 70s. I was a very young teacher then. I used to be the coach of my chess team and the chess team members were students who were also students with me. When I was doing my intake, I was a student. They were a student. I had just become a teacher. One day, a friend of mine from that chess team came, with a question paper in his head, I think it was a terminal exam. This was a question on electrical fields or something which was being taught by late Professor K.C. Mukherjee, a renowned teacher of our times. And he came and said, Fartak, how do you solve this particular problem? I looked at that problem and I had no clue on how that problem was to be solved. So what I told him is now I am computer science. So I don't know how to answer this. He said, no, that will not do because your basic degree is electrical engineering. You are supposed to know this answer. I struggled for some time, could not solve it. Both of us decided to meet Professor K.C. Mukherjee personally. We did that in the afternoon. When he saw us with that question paper in hand, he started smiling. And he said, huh, that question, huh? So we sheepishly smiled, he asked us to sit and then we sort of were waiting. But he didn't say anything. So my colleague friend who was there, the fourth year student then, he said, so, sir, what is the answer to this question? And Professor Mukherjee very nonchalantly said, I don't know. We were both zapped. Then he added, this question represents part of a research problem which has remained unsolved for 10 years. But this batch is so good that I thought somebody will solve the problem. Therefore, I put the question in question paper. This, my dear friends, is what a teaching autonomy truly permits to really exercise and challenge the students. The story doesn't end here. In that evening, when this friend of mine went back, I think he was from hostel four, that hostel had a large number of students from his batch and they decided to throw a milkshake party in the hostel. What is a milkshake party in IIT hostel, IIT Bombay hostel at least? A milkshake party is organized when something great happens in the hostel. For example, the hostel has won, let's say, inter-hostel debating tournament. Or the hostel has won a hockey tournament with some other hostel. Or somebody in that hostel has won some great reward. So something extraordinary happens, something of pride. Then people, concerned people, throw a milkshake party. At least that is what used to happen in 70s. I don't know what parties are thrown up, but such traditions, I'm sure, would exist in each of your institute solvers. So when this party was thrown, some seniors came there, including the general secretary of the hostel, and he said, what is happening? What is this party for? And one student replied that we have learned that Professor K.C. Mukherjee believes that our batch is capable of solving hard research problems. Therefore, we are celebrating. I think this represents the thinking and energy levels which we should all strive to achieve. I myself come from an, originally from a university environment. I did my engineering at Indore. It was one of the best colleges even now, J.S.I.T.S. Indore. But I remember that in Indore, if such an incident would have happened, the vice chancellor would have been here out, and the question that students would have raised, syllabus shod ke bahar ka sabhal poochha. Somebody is asking question outside the syllabus, not permitted. You see how our entire thinking has become bound by the syllabus? It is not only about the syllabus. On the same syllabus, if I ask questions which are challenging, which are different from the kind of question that were asked in the last five years, there will be another gherao. Examination pattern has been changed. This is the lakuna that afflicts our entire educational system. And you and I cannot correct that entire thing. I will only submit that just like IITs, just like NITs, and just like some of your good, or at least the well-recognized institutions have autonomy, try to acquire as much autonomy in teaching as is possible. But even within the constraints of the existing system that you might be facing in your colleges, I submit that you can exercise this autonomy. For example, the university might have even told you that you discuss this topic for four hours, this topic for three hours, this for seven hours, et cetera. The syllabus might have even directed you to say that lab one will contain this, lab two will contain this, lab three will contain this. I would request you to consider the following. If you discuss this with your own colleagues in the department, your head and your principal, and say that there is one fellow called Fatak who thinks that we should apply our mind differently to solve the problem of teaching computer programming to young students who seem to have these problems. And we want to experiment with this suggestion where we will revamp our labs. Our objective is ultimately at the end of the semester if the student is required to write 10 programs. Then we will ensure that at the end of the semester the student is able to write 10 programs and submit 10 programs. However, we want to proceed in a non-linear fashion. We want to spend some more time in the earlier month. We want to handle the student since we do not have teaching assistants as the larger institutions have. Can you, Mr. Principal, permit me to use the senior students of my course who have studied programming four years ago or who have studied more programming because they are computer science students and if they are enthusiastic. Can I request some of them to participate in a teaching experiment if they are free on Sundays in the first month. Believe me, final year students will typically be free during the first month of the first year instructions. And what do they have to do? They don't have to come and hand hold and do things. But if they agree to come for let us say four Sundays in the first month to conduct special laboratory engagement with these students. One teacher to 60 students or one teacher and four laboratory technical support staff to 60 students is not good in the first month. In the first month, three or four students must have a person supporting them. Not all three or four will require that assistance but to identify which one requires more attention you need to spend at least two laboratory or tutorial discussion time with them. Get 10 or 15 or even 20 of your BDEC students, final year students who are good programmers and who have both interest in teaching or sharing their knowledge and some compassion for their fellow students. And I can assure you because I have seen at least 67 colleges but there are 4000 colleges but I can assure you that each one of your colleges will have at least 20 enthusiastic final year students from computer science every year who will be willing to participate in this experiment. Now design the laboratory, I have done that by the way we now have large number of TAs but there was a time when I used to teach this course earlier we found that our MTech students who themselves had not studied programming because in those days programming was not taught in BDEC courses everywhere else. They were not able to become good teaching assistants to our BDEC students, first year students. Now the thing is different, MTech computer science students are very good program. I am talking about those days. I have run this course for three successive years with final year BDEC enthusiastic students. We would give them certificates. By the third year the director of the institute was so convinced that he decided to give them an honorarium and there is no harm. You can talk to your principal and say we would like to give a token honorarium to these students at the end of the semester. Tell them that some experiments similar to this have been conducted in IIT Bombay and possibly elsewhere. So now you got a good team of TAs. Who would be most crucial in the first month? Take them. First you must spend time with TAs. I cannot come as a great lord in the first lab and suddenly getting all these 20 students and say please help them. That will not work. If I want to take this approach I must spend at least half an hour to one hour with these 20 students. What we do in IIT when I have 60 teaching assistants for a course which has 850 students. So this year for example I will tell you the training schedule for the teaching assistants. They come here on Thursday. They register on a Thursday morning. Thursday evening their orientation program starts. They do all the lab exercises which later on will be given to the first year students on Friday and Saturday. They actually attend labs. They might be familiar with UNIX or not familiar but they have to become familiar with the lab environment before the first year students come. Now that is the effort we must take both ourselves including our assistants or colleagues who are going to help us and such teaching assistants if we can. There is no shortcut to hard work. If there is no shortcut to hard work for students there is no shortcut to hard work for teachers either. That is something that I would like to suggest. This is the pedagogy that I talked was about teaching pedagogy. Now I am talking about the pedagogy that must be followed by an individual teacher. Preparation of this kind of approach or any kind for that matter requires a lot of hard work that we must be able to put in. There is a perpetual problem as I said most of us teachers at least in the smaller institutions are so loaded where is time to think. But I would submit even in that, find out sometime but do handle first month differently. I have seen significant improvements in the level of knowledge of programming that the students have if they are given such hand holding assistance in their first month. I have also seen sadly and I have been responsible for it during the days when I did not recognize this so articulately and I did not spend sufficient time in the first month I have seen students giving up on program. So I will agree with you that this thing happens anywhere it happens even in IIT and I am not surprised it happens at your place. The second point therefore I make is convert the linear division of syllabus that your university system forces you to adapt and think of an exponentially growing system. You spend first month in elaborately spending time. Those students who are weak give them extra time run your lab in the night. That's another problem I find in most of the colleges. At five o'clock everything is locked. There is no harm in having these teaching assistants if you manage to get these students final year students if you are ME or M Tech students very good. But remember A, spend some time with these teaching assistants. Tell them what you are trying to do. Tell them what is expected of them. Believe me if I am a student from Khachro then I am sitting struggling with a typewriter then if there is somebody else who comes behind me not with an intention of taking YY at the end of the lab but very lovingly asking me, what kind of problem you have? Why don't you press this key? Why don't you try this? That is the kind of hand only. Have you read this program? Please remember what makes a difference to me as a student from Khachro is in the attitude and the tone of your discussions with me. If at that time you are asking me sternly as a teacher talks asking me questions with a view of evaluating me you have lost me. But in the first month if I see you as a helping hand as a guide and mentor rather than a stern teacher you have got me. Once you got me I will do anything for you. Then if you tell me that today okay you have not been able to do this but why don't you try reading these additional programs at home why don't you try to see what what sense it makes to you and tomorrow we will come back again and experiment together on this machine. You can't do it with every student that is why you require 20 additional assistants. Sorry for taking too long a time but I am extremely passionately concerned about these issues. I once again thank my friend who raised this issue is a pedagogy issue yes but the conventional answers will not work in my humble opinion. This is not the only way there are other great teachers who would have tried different mechanisms and I will use this opportunity to pose this question to all thousand teachers who have assembled for this workshop. Most of you would have faced similar problems but some of you might have tried something something which is different. My submission is whether that something had worked or not or whether that something had worked to fullest extent or had only worked partially this is our opportunity to share such ideas with each other. I have spent considerable amount of time in sharing what we do here with all of you and I am suggesting that this experiment here has succeeded in ensuring that all students learn some basic amount of program. Since that was the original question and that is rightly the major worry for all of us who teach computer programming because after all if a large number of students fail of course they suffer enormously but the blame also comes to us. What are we doing? After all we are teaching them. Our principal, our head of the department, the parents of the students all look at us as if we are single handedly responsible for failing them which is not true.