Good morning and welcome to the last day of this workshop. As mentioned, I will be discussing in the first session a different way of introducing the concept of programming. This approach assumes that there would be several people who would not know anything about computers. It assumes that there will be many others who would have seen and used computers, but mainly for browsing or such thing. And of course, there will be some who would have learned some programming before coming to our courses. In the very first lecture, contrary to what was as Rhanade said, we should actually not talk about computers, but we should restate the importance of procedures and instructions and how the ability to write such instructions so that they can be followed easily by others is the very basis of writing computer programs. But let me describe what I mean by procedures and instructions. The first one is very easy for us to tell people that many of our activities require a step-by-step procedure to be followed. Now, some simple instructions are of course, even verbally. Consider the following. I want, I am thirsty. There is someone in the house. I will simply say, please get me a glass of water. Now, since that person is in the house, from the house, I do not have to tell that person where the glasses are, where the drinking water is. I expect the person to go, locate the glass, fill it up with drinking water and bring it to me. So, although this is the step-by-step procedure, which that person has followed, it was not required for me to elaborate that procedure. Most instances in our life where we request someone to do something are often handled through such verbal instructions. Consider another instruction. Please keep the book on shelf. Again, we assume a lot of context. For example, we assume that the person will take the book and will not keep it on a shelf where shoes are kept, but will keep it in a shelf where books are kept. We presume that much of intelligence, that much of knowledge and that much of context from the person who is executing our instruction. But there are occasions when certain instructions are to be executed by a large number of people who are not able to see us or listen to us. For them, a written instruction is essential. In most situations, the jobs or tasks which they are required to do need several steps to be listed in our instruction. And that is why such procedures are often available as written or printed documents which contain specific instructions to be followed. Consider these examples. Directions to a place. Of course, in India, we still depend upon the verbal directions and even if somebody gives us an elaborate direction on the way it is not uncommon to go and ask someone reconforming whatever someone else had told us. But in general, it is a methodical practice to get written instructions giving us directions to a place. You will be familiar with the recipe. I will tell you about one example from Vicky Haosai. But these recipes are listed. Now note that people who are habitual cooks, expert cooks such as our mothers, sisters at home, they do not follow a recipe book while cooking lunch or dinner for us. But still you have recipe books. Why? Because something unfamiliar, something less known, someone wants to try it and someone wants to try it with some precision then written instructions are required. User manuals is another example of written instruction. Instructions given to us by a bank to fill up an account opening form will be quantity instruction. Consider this recipe, preparing Indian chai. Now instructions to make chai can be written as take water in a pan, add tea leaves and sugar, heat the water, maybe add basil leaves and ginger flakes, add milk and boil once the water boils filter out the solids and serve in a cup or glass with biscuits. This by the way I have not constructed it. It is a recipe for chai from Vicky Haos. All of you will be familiar with Vicky Peria. Vicky Haos is another site which publishes open source contents on how to do things. That is of course a pictorial recipe that is given there. Those of you are interested can look it up. I would also like to mention again the notion of context.  All of us know it. In fact there are differences in making chai in India, in North India, West India, South India. The chai is made differently. But still more or less this preparation is well known. But if you go to developed countries where tea is often made by taking a cup of boiling water and putting inside a dip, dip, dip sachet of tea leaves. And in fact there are many who know or who think or who believe that that is the only way to make tea. So obviously if you ask anyone to make Indian chai, they would just not understand this procedure unless it is written out and made available. An important aspect of showing such procedures is also to emphasize that the sequence in those steps is important. For example, if I execute the filter out solid steps before adding milk and boiling, please note I have taken water in a pan. I have added tea leaves and sugar. I have heated the water. I have added basil leaves and ginger flakes. And suppose at this stage I say filter out the solids. And then add milk and boiling. Well the tea will not at all taste like an Indian chai. And there are such small nuances which we can use to tell people that although there are some steps which can be interchanged, but generally a procedure must follow the step in sequence. For those steps which can be exchanged or interchanged, the end result does not change even if we write them in a different manner. However, once we write those instructions, then those instructions better be followed in the given sequence. Then we say this, what are we doing? We are actually emphasizing a future fact to our student that the instructions written on our program will be executed sequentially exactly in the given order and no other. Here is an exercise to write instructions to fill up a bucket with sand for firefighting. Many of us would have seen such buckets. They are hanging outside many buildings and so on. Now I have written here the simplest instruction. An instruction given to someone will be fill up the bucket with sand. But consider this, the person whom we are telling to fill up this bucket with sand may not know where sand is. Even if he knows that there is a sand dump somewhere nearby, he may not know how to bring that sand and fill it up in the bucket. So you might have to tell him get a tigari, get a fouda, carry this there. Then he will ask you where do I find tigari and fouda. So we tell him that there is a room which has garden implements, go there, pick up this, go to that sand dump, pick up sand and bring it and then fill this up. Now you see a whole lot depends upon what we assume the person to know before deciding what level of granularity of instructions are required. Again we can explain this through several examples. There are some pictorial animations that are associated with this. I will show you one because on A view it is not easy to do that. Maybe within a few days I will edit them and put them up into YouTube so that you can all see that later. I have one video on YouTube which I will show you but it is not related to this part of the introduction. Having told them about procedures, we would like to introduce them to computers. In my opinion it is better to show some intermediate complexity machine like thing but which actually can behave like a computer and has implements which resemble the operational features of a computer. So here is the caricature we have made. Actually we have a team of animators here led by Mr. Samir Sasarapudde. That team has actually made these animations. This one is a still image of what we call Mr. Buddhuram Dumbo. Mr. Dumbo, the Buddhuram name, all of you, at least those who know Hindi will relate to, Buddhuram really stands for a person who is actually dumb-witted, not dumb-lumb-witted. That is why I have titled his name as Buddhuram and his surname as Dumbo so that English people can also understand what I mean. This caricature is described to have the ability to do certain predefined functions well provided we give instructions to him at every stage. We then introduce the additional implements or tools that Mr. Dumbo has for doing his work. Remember at this stage we are trying to tell people that we will introduce a simplified model of a computer to do. We are actually trying to describe what a computer has and how through programs the computer can be made to do our bidding. We are of course talking about handling numerical values, adding them, subtracting them, multiplying them, doing simple processes. Now let us roll back and see what exactly does a computer have in terms of our ability to get it to process our numbers and other information. First it has a memory, so we talk about memory locations and so on and the internal representation using binary numbers whatever. It has an internal arithmetic and logic unit which essentially consists of several registers and circuitry to perform those operations. It is my observation that when you try to tell this in a standard way many times the people are unable to form a mental model of the company. So in this case we give a workbench to Mr. Dumbo and we tell people that Mr. Dumbo is able to use registers kept on the workbench. It can get values from its memory and do some calculation. What is the memory? Well I have fashioned some kind of cupboard with drawers. Each drawer contains one value. I have found that that is a good enough explanation. For input output I have given Dumbo a card. So let us look at some of his implements. This is Mr. Budhura. Budhura has a shelf which contains drawers. I tell students that each drawer can be labeled. We can tell the label and Budhura will attach a label to any number of drawers which we wish to use. We tell students that each drawer contains one value, exactly one value no less and no more. So this is our representation of computer's memory.  In this case Mr. Dumbo uses this card to carry numbers. You can vaguely see number 5 here. This card is used by Dumbo for input as well as output. Later on we will see an animation where a input operation is performed and output operation is performed etcetera etcetera by Mr. Budhura. Here is the workbench that we have given. Much like we will sit on a table with papers in our hand and on those papers we can do some computations. In exactly similar way we expect Mr. Dumbo to do the computation that we ask him to do using what we call register. We tell students that register is almost like a piece of paper in one's hand in which values can be written and operations on these numbers can be performed. This then is the crux of our simplified model of telling people about Budhura and Dumbo. Here Dumbo is shown that there was a value 20 in a covered drawer called height and Dumbo has just picked up that value 20 copied it onto the register. Notice that we can actually demonstrate that when Dumbo transfers something to the workbench that something still remains in the memory. In fact we have to emphasize that the input operation is the only operation which can destroy the contents of memory and an assignment operation is the only other operation which can destroy the original contents of the memory. Now this we emphasize later when we talk about programs but using this simple model it is actually possible to easily get into the minds of students and help them build a mental model. So they now understand memory as a set of locations which are like drawers each drawer contains some value. Whenever we say input or output they can imagine a card Mr. Dumbo carrying values from us to the to the card and carrying values back to us in the card from the drawer. I will now show you some small animations so this is an introduction animation. This shows the set of drawers in a cupboard we can tell people that the drawers can be named so that each drawer is uniquely identified we can show that a drawer can be opened Dumbo can inspect a value we can say that the question mark actually means that we do not know in advance what the value is. So these then and here is a card where Dumbo is actually bringing a value in well these are the basic components that Dumbo uses to carry out things. Let us consider an input activity that Dumbo will execute. Let us say we show that we want to add two numbers A and B and we want to give input to A and B here is an input operation where Dumbo brings a value in opens the drawer for A there is some value inside he does not care he then picks out the value which he has brought in in this particular case the number A he picks it up and keeps it inside that drawer observe that when he keeps it inside the drawer the previous question mark disappears. This we used to tell people that an input operation is destructive in the sense that old value in the memory is displaced by the new value in this fashion another number will come this may be for location B and the Dumbo will do exactly the same thing it will open the drawer for B examine whatever it is take the value from the card which he has just brought from us and put it inside the location for B. So this illustrates an input operation. Let us consider an operation of adding two values. So here are two values shown A contains 35 B contains 12 and we have asked to add these two values to calculate a sum the location for sum is available but the value inside is not known to us at this juncture. So look at what Dumbo does Dumbo will open the drawer A take a copy of a number observe that the number still continues to reside in A and put it in one of the registers. Next Dumbo will take the second value and put it in another register. So on the workbench he has two registers he has collected two values to be added and now Mr. Budhuram will actually add these two values 12 plus 35 getting the result 47 in a third register. So registers are like pieces of paper on which Dumbo will write. Finally Dumbo will take this value 47 and keep it inside the location for sum notice now that A B and C A B and sum contain the appropriate values here having calculated the sum of A and B we would like Dumbo to give us back the calculated output. So here is a small video showing how the output instruction will work. Dumbo will open the drawer for sum will take a copy of the number which is inside sum and put it in the card. Notice that the location sum of the drawer sum continues to contain the same value and output operation therefore does not destroy the whole value. Finally Dumbo will simply bring this card back to us. Observe that such an animation can be extremely useful if we back it up by saying that now that Dumbo can do these things how can we give instructions to Dumbo to actually carry out these operations. So let us get back to our slide here is our friend Muddura. He can do certain basic things which we have just seen to do those basic operations. Muddura has a cupboard in which there are drawers each drawer can hold only one value at a time. These drawers can be named by us we can tell Dumbo call a drawer A call a drawer roll call a drawer height or whatever we wish. Next Mr. Dumbo has a card which he uses to ferry values back and forth. So he can carry an input value given by us and put it in the designated drawers or he can take a copy of a value from a designated drawer and bring it back to us. This explains the capability of Muddura as capability to do input output operation. We then explained that there is something called a workbench and using this workbench our friend Muddura is able to do computations involving values which are stored in these drawers. The question is how do we exploit these capabilities and in what fashion do we tell Mr. Dumbo to do some precise operation so that we can get desirable results. So I will demonstrate a sort of simple programming construct that I have created for Mr. Dumbo. We want to write a program or instructions. First of all we want Mr. Dumbo to take two values from us. We design an instruction called input. Since we want Mr. Dumbo to take two values from us, we want Dumbo to keep them in two different drawers. We have to name the drawers. So we choose the name let us say A and B. Of course Dumbo will say you never told me that these are the names which you are going to use. So we will give another instruction to Mr. Dumbo before this which will say use locations of the A and B. We know of course that Dumbo will also be required to use another location to keep the calculated sum. So we might as well describe that here. So note that the first instruction which we give to Mr. Dumbo is not actually an instruction requiring an action but it requires Dumbo to affix labels to three of the drawers in the cupboard. So when we say use locations A, B, sum Mr. Dumbo will just affix these labels to the three locations. Now the action will start when Dumbo starts executing our instructions written below. The first instruction says input A, B. We know what exactly Dumbo will do. It will come to us twice using his card. It will collect one value from us, put it in the location for A. It will collect another value from us, put it in the location for B, put it in the drawer for B. Our next instruction will be calculate sum as the addition of A and B. Note that we are actually using the pretext of instructing Mr. Dumbo to actually learn some very simple syntax rules of a programming language that we are going to later on describe but without calling this a programming language. We are trying to keep it very simple, very similar to English like instruction that we have seen earlier but instructions given very precisely to this artificial artifact called Mr. Dumbo. Having said sum is equal to A plus B, we now know exactly having seen the basic capability of Mr. Dumbo what Dumbo will do. It will take the value of A from the drawer A, bring it to the register of his work bench, again bring the value for B, add these two values, calculate a third result and this result Mr. Dumbo will deposit in the drawer for sum. Having done this, we want to tell Mr. Dumbo to bring that value to us. So, we may fashion an instruction called output and we know having seen Mr. Dumbo's basic capability of input and output that when we tell him to output sum, he will actually go to the drawer called sum, pick out a copy of the value, keep it in the cart and bring that cart back to us. In fact, I usually play a composite animation at this stage, this is describing the execution of these instructions. I also introduce a notion at this stage to say that look, we have written these instructions for Mr. Dumbo as plain sentences but in English whenever a sentence ends, we put a full stop or some punctuation mark. Well, because these are instructions to be executed one after another, they are all related to each other. They can be regarded as some kind of components of a single large instruction and they can therefore be separated by a semicolon rather than a full stop. Notice that and at least this is what I have discovered using this model for last two or three years to teach CS 101 that students are very easily able to imagine in their minds that a memory has locations, each of which has a name. Second, the memory contains a value, a value gets destroyed if it contains something, if there is an input operation and a new value comes in or it gets destroyed whenever Dumbo keeps a value inside it by after calculating something. So, essentially an old value disappears only when Dumbo keeps something inside it or not, otherwise the old value remains. Students are able to picturize through the caricature of the Dumbo carrying that hand card the input and output operation namely something, some value is given by us as input, Dumbo will carry it. So, the moment we say input A, people can imagine that Dumbo is coming to us and waiting for us, the moment we give a value, Dumbo will carry that value and put it in the designated drawer. Similarly, when we say output sum, Dumbo will open the drawer for sum, make a copy of the value there, put it inside the card and bring it to us. Usually after this they are able to follow the basic operations of a computer without understanding that the computer actually behaves like that. Let us go back to the slides, this is a program written from Mr. Buddhura which I just showed, the word Dumbo there is just to say that the program is for Mr. Dumbo, it is actually addressing Mr. Dumbo, it is saying Mr. Dumbo please do the following, use locations A, B and sum, input two values A and B, calculate the sum A plus B and put it in the drawer titled sum and then output the value contained in that drawer. Notice what we have achieved, we have actually achieved that our students now understand the notion of a set of instructions written step by step meant for doing some computational work. Our students now have a mental picture in their mind about memory locations, each location containing exactly one value, about an input output operation where values can come from outside and go inside. They have a mental model of how calculations are performed when Mr. Dumbo in response to executing an instruction called sum is equal to A plus B actually goes to those memory drawers, make copies of two values and brings them on to the work bench, keeps them in register, calculates the total and deposits the total in a location or in a drawer called sum. Without emphasizing things too much, we have certainly introduced the notion that a memory drawer can contain only one value at a time, that the value inside the memory drawer remains, even if I say output that value, the value does not come out and go, but only a copy goes. That value inside a location or inside a drawer can change either if Dumbo brings some input value and is asked to put that value in a location. So, in that drawer whatever the old value gets destroyed, alternately due to the operations of arithmetic kind that we asked Mr. Dumbo to do, whenever Dumbo keeps the result in a designated drawer, the old value in that drawer goes up. All these concepts without saying too much about it are actually picturized by the people. We have achieved one more thing, we have achieved a subtle introduction to the syntax of C programming language in a slightly disturbed fashion. Let us look at this slide again, use locations A comma B comma sum semicolon. Observe that instead of use locations, if I say int A comma B comma sum or float A comma B comma sum, this is exactly like a C programming instruction. The statement use location's needs automatically tells people that no action is implied by this instruction, it merely tells Dumbo to put tags on to the memory drawer. This is roughly equivalent of saying that this is a declaration and not really part of an executable instruction. Look at the next three instructions or the next instruction says input A comma B. Later on when we introduce C in greater greater A comma B, people can instantly relate to the input instruction. You do not even have to tell people that C in greater greater means this. Provided you have told them that programming languages have very funny looking syntax, you may have to use symbols which we normally do not use, but that is because those people who designed this programming language designed these symbols and these syntax and we are all required to follow it because that is what the modern Dumbo Mr. Computer understands. This instruction sum is equal to A plus B is exactly like an assignment statement in C C plus B. And again output sum is an instruction which can be related by people very easily to see out because that does sound like an output and that is exactly what it does. You may think about adopting it or not adopting it. You may think of some other method of doing this, but I will tell you my experience has been that students are able to much easily understand what is happening inside a computer because they have made a mental model of the basic components and basic operation of a computer. I am preparing short video clips of this introduction including detailed instructions for the banking cashier which I just mentioned as a name. And this is what brings me to another important topic which I had touched upon in one of the assignments before the face to face portion of the workshop began. That assignment involved the following. It actually had a video that video contained explanation on how some statements may have to be conditionally executed. The example used was to find the maximum of two given numbers and we said that normal step by step procedure which is executed sequentially will not work in that case. It was a small video clip of eight minutes. The audio in that clip was in English. My idea is that if such short clips are made and if such videos are dubbed in Indian languages then students particularly during the first week of their interaction with us in our engineering colleges and where they have maximum problems if at all on understanding our English can find it very easy to understand these things. If the same videos are also available dubbed in Telgo, Tamil, Malayalam, Hindi, Gujarati, Bengali, Kannada, etcetera, etcetera. And it is for this reason that I have given an assignment showing you the methodology developed by the group working under my colleague Professor Colonel Maudgalyar of what they call spoken tutorials. And I had said that it is our desire to prepare such open source spoken tutorials for all lectures broken into small videos. They will be available in English as well as in multiple languages. I had requested whether participants are interested in doing this kind of exercise in Indian languages. Out of a large number of people who indicated in the first survey that they would be comfortable in one or more of the Indian languages, the optional assignment sadly was not done by me. But still it was not a small number. More than three hundred people have actually given their voice. Given their voice they have actually taken the trouble to follow the spoken tutorial methodology and they have created transcripts and many of them have uploaded their own voice reading that transcript. Of course, because of the methodology that is followed in spoken tutorials some of the transcripts sound very artificial because they read line by line almost like a radio commentator and so on. There are several others on the other hand which where you can see the passion of the teacher in the voice that you hear. I was quite I by the way I have heard I have read almost all transcripts and I have heard most of them. And it is a wonderful effort those of you who actually chose to do this optional exercise my heartiest compliment and my many thanks. I would like to use this opportunity to show you small snippets. These are all 8 minute, 10 minute audio thing. What I have done is I have chosen some 4 or 5 samples and I have taken small portions 1 minute, 2 minute portions from each one. I have deliberately not chosen the best. I have also not chosen the worst that is because when we make such attempts generally our first efforts would be average. There are some of you who have actually taken a whole lot of trouble and have most probably practiced a couple of time before recording their final voice. I can I can guess that because I know the kind of trouble that people have to take. However I assure you that after you practice doing this for some time the subsequent things become very easy. I would like to show you a small video it is on YouTube. We are ready to play this please note that you will all be familiar with the slides. So please ignore the slides just listen to the voice and try to see whether I have been able to correlate the timing of their voice with whatever is going on in the slide. You must appreciate that I know only Hindi and Marathi and therefore the synchronization of voice clips of our colleagues in Malayalam, Tamil, Gujarati and Bengali are done by me only on the basis of speculation. On the basis of some after all symbol a, b and some or symbol a, b and max are to be said to be a, b and max only whether you are using Tamil, Malayalam, Bengali or Gujarati. So I have used that to try to sort of synchronize the voice with the slides. I may not have succeeded but this is just to show you how easy it is to put these audio dubbed voices on to the original video clip that is made at one place. Let us start. The sequence execution of the instruction can be started. Two signs are a, b and some are to be written in the program. Three locations are to be written. The input instruction to read the a, b and b and some are to be written in the assignment operation and the C out sum operation is given to us. All the instructions here are executed according to the program. Some of the conditions in the assignment are executed according to the instructions. This happens in the daily life. The question is to find a large number of two signs. Here we are not going to use two signs as a, b and some, but we are going to use two signs to assign to the location where max is located. When this program starts, we will fill three locations. After that, we will write the input instruction to read the a, b and some. Now, we will assign the a, b and some to the max. So, now we are going to write a rectangular box in the paper without knowing how to do it. After that, we will write the rectangular box in the paper. After that, we will write it in the paper. After that, we will do the output instruction to the max. So, we will write the output statement. Let's look at the execution of our program statements. This is a declaration. We have an input statement. We have a box to assign the a, b and some to the max. We will now do the output instruction to the max. Now, we are going to write the output instruction to the max. Now, we will write the output instruction to the max. Now, we are going to do the output instruction to the max. We will write the output statement to the max. Now, we are going to write the output statement to the max. So, now we are going to write the output statement to the max. So, if we see the sequence of execution in the program, then it is a declaration statement, if we see the sequence of execution in the program, then it is a declaration statement, If we see the sequence of execution in the program, then it is a declaration statement, If we see the sequence of execution in the program, then it is a declaration statement, If we see the sequence of execution in the program, then it is a declaration statement, I hope you are able to appreciate both the efforts made by our friends and what I showed you just sample of five people practically arbitrarily chosen, of course it was not arbitrary because as I said I did not want to show only the best effort, I did not want to show the worst effort, but I wanted to show some efforts in which at least those people who understand that language can decipher both the nice points and some inelasticness, for example as I said some of the voices while the voices are very clear, very good, but the description is more in terms of as I said a radio announcer kind of thing, in some cases the voice has lot of noise around it or breaks and things like that, in some cases the things are not synchronized, in fact I got several audio files which were either only five minutes when the original video was eight minutes long or they were even twelve minute audio, so people were so excited that they explained in their own manner the correct way of doing it is actually play the video by muting the sound and then record while the video is playing, so that your voice is exactly synchronized second to second minute to minute, of course it is not easy, we are not after all movie artists with expertise in dubbing, but the idea is that we do not need an extraordinary expertise, of course we use that expertise our videos in multiple languages will look like national geographic videos, while that will be ideal it is not essential, simple videos made by us alone at home in our offices may be adequate, I would now like to use the remaining time of this session to go over to other centers, let's go to Tehran Engineering College Nehru. Sir good morning sir, since two days we are trying to get connected to IIT, it's really a pleasure to talk to you sir, my question is sir there is a confusion project should be on the topic assigned to us or on the entire C filibus or C plus I think my instructions earlier also were very clear, project cannot be on any one topic, a project is an activity which students do to build a programming system small or big and that programming system is built to solve a problem, and of course to solve any real life problem in your program you will have to have conditional statements, you will have to have iterations, you might have objects, you might have functions, you will have all kinds of things, so I wonder why this doubt has come but it is quite possible that others should also have this doubt, so I am clarifying the project has absolutely nothing to do with that topic that has been allocated to your team, that topic is allocated only for you and your colleagues in the team to construct three quiz questions with answers and to construct an examination question in the model answer, that is the limited purpose of that topic. The project conceptualization, project description is meant to be an activity which would be done by student teams and which will attempt to solve a larger problem as I explained yesterday, I hope that answers your question. Thank you, let us go to SVP engineering college. Sir, we have a question, our student has developed an auto grader which can grade only one program based on whether the answer is correct, so on the discussions we had in the previous class that the program can be, the auto grader can analyze the program, so how it can be? It would require a long answer at least half an hour of discussion, there are some of my M. Tech students who are working on these things, please ask that student to send a mail to me but I will not recognize that student, so please ask the student to give your reference, the reference to this workshop and send a mail to me, I will forward it to my M. Tech students and in fact if something good comes out of it and if the student is willing to release that auto grader in open source, we will help him do that so that the student in your center or your college would get some good name in publicity and we may get some useful software. But there is a lot of work that is required, initial attempt must be good of course, I will definitely direct that student to my M. Tech group here. We have done it like the students will upload their programs and it will be automatically compiled and executed and based on the answer we are getting, we will be evaluating whether that is correct or not. Yes, that is exactly the essence of most auto graders, in fact there have been several such auto graders also in IIT Bombay which have been developed by various people including faculty. But what I said is we require two or three things more, we require the auto grader to have the ability to partially grade answer and for which the question has to be framed accordingly and if we have framed the question accordingly, then the auto grader has to be modified to be able to examine by running individual segments in consonance with the correct back end answer. That extension conceptually is not very difficult but takes time to implement. The second problem with auto graders is that they must scale, for example if I have a class of 300 students and all 300 students have submitted that assignment within the span of half an hour, ideally the moment I as a student submit the assignment meaning I type in say return, then within a few seconds I should get my marks. In veryably such efforts as have been taken by your student for example and we have several such efforts here, they do not scale, they will work in sort of sequence. So, if you throw 300 programs at them one after another, each one may take only two seconds but the 300th program will come out of 600 seconds. So, that is another problem of scaling, it requires you to actually define an architecture where copies of the auto grader will be executing in multiple virtual machines and they would all be taking inputs from a queue and the queue formation software will have to be written. So, it is there are fairly complicated activities that you have to do. Actually it would be a good project for students to do as a preliminary but do write to us, we will try and see what we can do. At least it would be a good example for our own students who are working there. Thank you. Sir, we have mentioned that in code blocks as whenever we are developing one project we have to add programs, programs will be added to the project and how to compile the programs individually. Yes, as I told you a group of my staff members are actually working on what they call a simplified code block in which you do not have to develop a project or any such thing. That simplified version is able to take program files from a directory directly, compile and execute it. So, you can have separate directories and within the directories you can have separate source code files and it is capable of just taking that file and executing it standalone you do not need a project for it. So, that simplified version might be easier for people to use in first two or three weeks or four weeks even five weeks till such time that they need the additional features of debugging and so on. The version is almost ready I think they have tested it on Ubuntu, they are testing it on Microsoft now and we will release it on the Moodle I mean we will give you a link. Fortunately the size of that package is only 20 MB as opposed to 190 or 200 MB of the original package and that is because our teams have removed all other non essential paraphernalia from the package such as compilers for other languages and whatever whatever you will hear about it very soon. Om Institute of Technology. Good morning sir. Good morning. I have two questions in the software engineering. What SDLC model should be bad suited for the duration of two months project? It is very difficult to formally state a particular model at that level. Please understand that even when we teach software engineering in second year, second semester or third year, first or second semester or even fourth year even by that time the students have not written any large amount of code and to understand and appreciate these various approaches you should actually have handled I am not saying written but you should have handled programming systems having at least twenty five thirty thousand lines of code. In fact software engineering is better understood only by professionals who actually spend a year, year and a half in dealing with such large code. So what is the objective here? The objective here is not to teach them the software engineering approach of formal design or formal analysis. I mean if you do that then your course will not be on basic programming but the course will become a course on software engineering that is not the intention at all. My suggestion to you is that you do tell them about what software engineering is but stop there absolutely stop there and let them figure out how they should approach the problem. Some of them will be interested they will read for example Pressman's book and try to follow it. What is important is two or three things that they should do.  Second they should understand the importance of testing. Many students believe that once their program compiles properly and once it executes on one set of values the job is done. The fact that individual programs require testing and combination of programs in order to work together require testing is another important point that you can drive home through the project. My request to you is that tell them about the software engineering principles but do not tell them that what they are doing is actually software engineering practice. Let them discover that automatically. Let them then do the normal programming documentation and testing in that style. So the moment you talk about SDLC or any such thing they will get scared and they will forget the more important part of understanding basic programming proper. That is my suggestion. This is Goa College of Engineering. Yes I can see you my friends from Goa College of Engineering over to you. My name is Nalina Maria Fonso. We have been eagerly waiting to hear you. So my question is many times it has been noticed that the students who come from plus two that is 11th and 12th they already many of them have an introduction to the programming language. So does your how is it possible to differentiate first of all in terms of teaching as well as in terms of grading for students who have come with a background of programming while those who have not. And secondly does your college have any provision to cater to any such needs of students who have learned have learned this knowledge at some place and those who haven't. And so time and again you have mentioned that C C plus plus is not a language I would say for you know to introduce programming. So could you have some suggestions about the two three languages which would be interesting for actually introducing the subject. So let me answer your second question first. When I said that C C plus plus were not designed as programming languages to be used for introductory programming. But let me add to it. It does not mean that C C plus plus cannot be used effectively to teach the first course. These two are different statements. Secondly if you consider which are the programming languages which have been designed to introduce programming the names like scratch and logo come to my mind. Unfortunately the high end professionals such as engineering college students and teachers consider it beneath their dignity to use things like logo and scratch to introduce programming. The point is that we are teaching programming with two purposes. One to introduce programming and two to develop adequate competence in our students such that they can solve computational problems in their own field. It is for this reason that FORTRAN programming used to be taught in engineering colleges for decades and that is because at that point in time almost all computational procedures were available only in FORTRAN. Many faculty members who taught finite elements for example in civil engineering or who taught chemical simulation and so on. They extensively used FORTRAN programming and FORTRAN library. In fact the best FORTRAN programmer in IIT Bombay amongst the faculty was not one from computer science. Although I am myself an accomplished programmer the best programmer is my colleague Professor Gayathonday who had written literally tens of thousands of lines of code for his own work in mechanical engineering department. So it was natural that all departments wanted us to teach FORTRAN programming there. Since then the majority of computational procedures which are available today in terms of libraries or whatever are in C and C plus plus and that is one of the reasons why in IIT Bombay we still teach C and C plus plus. The fact that it is not ideal to be used as the first course in programming is a problem that we teachers have to solve but that competence is considered essential by the fraternity of engineering discipline and that is because that is what the students use later. As the usage changes in the profession so will change the demand to use a specific programming language. What is important for us is to ensure that students learn programming concepts well. Once they learn programming concepts well they can master any other programming language with reasonable ease. Our problem is the students get inundated in syntax and they confuse that knowledge of programming is same as knowledge of syntax properly and many of us make the mistake by actually asking questions in our quizzes and test which revolve around syntax and not around the logic of the program. So that is my long answer to a short question. C C plus plus is perfectly adequate and the very fact that our students become good programmers now as they became good programmers ten years ago when Fortran was being taught and as they will become good programmers elsewhere if they start learning with Python or something. I am convinced that what programming language you use while it is relevant it is not the most critical part. The most critical part is our ability to actually teach the students and make them experts in our thinking in translating the algorithm into the program as Professor Anales says. So please look at that point. Don't be depressed by C and C plus plus. It's perfectly alright. This is the JP Institute of Technology. JP Institute, over to you. Good morning sir. Sir, myself Shaili from J I I T Noida. Sir, I would request to if you can please let us know the tools you use for creating the animation of Mr. Dumbo. Yes. The tool that we use is another open source tool which is called Blender. Blender you might have heard of professional animation tools which for example are taught in well-known institutions such as Maya Academy and all. These are costly tools. They are very good tools of course professional tools but very little is known about Blender. Blender is an open source tool. It can do 2D and 3D animations well. It has a gaming engine. It can actually do versatile animation including interactive animation and so on. We have a team actually which has created expertise. In fact I had suggested to them that they could create a video recorded course on animation using Blender. But I will tell you if you are interested just go to the Blender side. Type Blender in Google. You will go to the Blender side. You can download that software. It's open source so you can start using it from day one and you can actually create interesting animations using that. So if you like I am happy you like Mr. Buddhuram Dhambo. The animation was created using Blender. Arunai College of Engineering. This is Satekla from Arunai College of Engineering. I have two questions. One is actually yesterday we have discussed some sample program for string manipulation. In that we are using the header file hash which include IO string and we are using use namespace STD. But that coding will not execute in Turbo C++. My question is is there any common tool to support all this type of coding? Okay. You are talking about a tool but it's not actually the tool. It is actually the utility or the environment which determines what particular directives will work and what particular directives will not work. What you are talking about are compiler directives and operating system directives. So for example in Turbo C++ you have to use header files of the classical vintage such as strings.h or such as stdio.h whereas in the modern operating system environments you might have to use something called C string and whatever. So this is not related to the programming language per se but this is related to how the different environments expect the nomenclature of their header files to be made. I would suggest that you should advise students not to get too worked up with a little experiment. They can immediately figure out that if a program runs in Unix with certain header files, a program will run in Turbo with certain other header files. On the other hand there are a few things which Turbo environment does but which Unix environment cannot easily do at all. For example capturing raw input when you type a single character is done in Turbo environment so very easily and naturally. Whereas in the GCC compiler environment when you want to input a character you have to actually press return after that character without which that character is not taken in. So these are some of the nuances but don't worry one thing is you can definitely tell people there is nothing like a single tool which will universally accept everything and run it properly. In fact I will remind you that only yesterday we saw through a question from one of our colleague participants that the sizes of memory variables are significantly different. They are not 4 bytes but they are 2 bytes. This is another Lakuna where the programming language itself says that the size of a variable is an implementation dependent thing. It merely the language specification merely says that every implementation must be able to represent let's say numerical values in this range but beyond that it is silent about how the implementation is. So do not worry these are the problems that will have to continue to sort of sort out but these are not very unsurmountable problems. We will just take two more centres. We will go to National Institute of Technology, Kurukshetra. Good morning sir. My question is that whenever we acquire PhD degree or some person has acquired PhD degree he is not a ready made teacher. Basically there should be some training program for those teachers who are just joining this profession. What you just said is what I have been saying for about 30 years of my 45 years of experience. You are very right. You have touched the raw nerve. In every other profession whether TCS employs an engineer or whether Tata Locomotives employ an engineer they provide a training ranging from 3 months to 6 months before the person becomes a true professional. Teaching is unfortunately the only profession in which we are employed and we are told from tomorrow start teaching this course. I have been insisting that there has to be a mandatory training program for all teachers before they are even employed full faith. Let us hope I have been making representations to the government and let us hope that they make this training compulsory. Further the training once is not adequate because our job is a job which deals with changing knowledge every day and that is why a minimum annual reorientation program on the subjects that we teach is very very essential. The QIP programs, the AICT workshops such as this IST workshop etc were designed for that but they are apparently not adequate. So you are very right. I can only agree with you. Shulini University is stolen. This is Himachal Pradesh. Good morning sir. Good morning. The question is, is it possible to read string by string of a file in C programming? Generally we read character by character. Thank you. It is not string by string but you can read line by line. If you recall I had mentioned a function called gate s which has been deprecated. It is no more proper function but a function called gate line will read one line. So you can read one line at a time as far as text files are concerned separated by line field or a new line character or carriage return. In that line whatever characters you type including blanks including question marks including whatever whatever all will be taken in as an input you have to define a large enough array inside. In fact there is no limitation. You can actually type maybe thousand characters in a row one after another before you press return and all thousand characters independent of how many blanks or whatever it is. So it is essentially a very very big string as long as your target array is large enough. So I hope that clarifies. In fact one of the sample programs the gate s statement has been used which now should be replaced by gate line. We will have a tea break.