 Now, this is merely to give you a glimpse of how computer programming is introduced in IIT typically and how, what is my style of introducing it. One thing I would like to make it clear, this is, this I learned from a observation in an ACM paper in the early days of programming, late 60's after Diestar wrote his famous paper, go to statement considered harmful. I don't know how many of you have read that very old article really where this principle was initiated that if there are M teachers teaching computer programming then there are N opinions on how programming should be taught and N is usually larger than M because each teacher has different opinions at different times of teaching. That was considered rule number one and rule number two was independent of who and how, who teaches programming and how he teaches a student learns programming on his or her own. So, these two principles are very sobering principles which means that and this should be true for any subject that we teach. So, teaching style would be different. One of the objectives in setting up a defined syllabus perhaps is not to really state jacket the teacher but to ensure that all those concepts are covered because given total freedom I could go Heva and discussing something in greater details and something not at all water, water. So, this is just to show the style of introduction or introduction of programming to first year students that I used. Basically, I always start a lecture slide with an overview which is a military standard not a classical teaching standard but in core courses for first year I have found it useful. So, first of all I define our computing model to be based on an entity called Mr. Dumbo. So, who is that Dumbo will illustrate, will describe Dumbo's memory, will describe how Dumbo interacts with us and will describe Dumbo's computing capabilities in which we will describe the instructions and their execution and the notion of ability to store instruction which is the stored program concept. This is roughly what we cover in the first lecture. So, here is what I call a Buddhuram computer. Basically, trying to convey the fact that all thinking has to be done by you when you develop your algorithm and Buddhuram will merely execute that algorithm. These are some fancy character line and this is something like the animators' response to my Dumbo. So, later on in the animation that we will see, we will see this Dumbo as a character coming to life. I describe that Dumbo has his resistance. For example, a Dumbo could be considered an equivalent of a programming language in which case there is an assistant Dumbo who will do arithmetic and another assistant Dumbo who will do IO. You can use this concept to describe both the computer architecture as well as the software architecture at multiple layers. Then we state some specific facts that Dumbo cannot do anything on his own but can execute given instructions correctly. We then say that Dumbo can do arithmetic operations, logical comparisons, manipulate strings, etcetera. Observe that in this single sentence, we are able to convey the ability of the computer to do numerical, what should I say, manipulation of values, logical comparison and string manipulation. The three major data types which are to be handled in our programs. So, we say essentially he can operate upon and manipulate values and produce resultant values. It is the crux of Dumbo's capability. And finally, we say he can compute. So, he is a computer. In today's time, as all of you know, a computer is a misnomer. It is more like an information processing engine but that is how historically it has evolved. So, it is giving some justification. Then we say that Dumbo has a very poor memory. He cannot remember anything in his head and therefore, he needs some mechanism to store values. Then we say Dumbo uses a cupboard with drawers as memory and each drawer is like a memory location. So, I will implicitly introduce the notion of a memory location. We then say each location is uniquely named such as A, B, C, etcetera. And we just show a set of drawers here where the names are given to the drawers and this is Dumbo's memory. A happy Dumbo is shown because earlier the Dumbo could not remember anything and now suddenly because of these drawers, he can remember something. We then say each drawer contains some value. For example, it could contain a number or it could contain a string. So, we just show that this drawer B contains 437, location B contains this, location F contains a string. This again tells them that values which I can manipulate could be numerical values or string values and an association with the memory, location with the value and implicitly I am saying that only one value can be stored saying each drawer contains some value. For example, a number or a name. Then we elaborate that a location can contain only one value and not multiple values. Then the values in locations are normally unknown as long as they are not defined by us or we call them undefined. Now, how does a desired value get into a location? So, we emphatically state that either we supply a value which Dumbo stores there basically describing an input operation or Dumbo calculates and puts a value there basically describing an assignment operation. I have found it extremely useful to emphatically state right up front that there is no other way of getting a value in a memory location. There is absolutely no other way. This simple fact, if you drive home earlier then there will be less confusion in the minds of people when they examine the values here. Then we say how do we exchange values with Dumbo namely the input operation. So, he said Dumbo uses a cart which technically may be called a database to move values in and out and he can put a value in a location as instructed or can copy a value from a location and give it to us. So, this is the sort of cart in which that fellow is counting a value. This value will be going from us to the cupboard or from cupboard to us whichever. Now, we emphasize that Dumbo does anything only if so instructed. So, if we give an instruction. Now, in CS111 at IIT Bombay as you know most of our courses and I think it should be same in NIT also we don't name a programming language as part of the course. It's just computer programming. Any programming language can be anything. This is not so by the way in the majority of university systems and colleges. So, first course in programming is actually called C programming whereas in several places we teach a combination of C, C++ although it is followed by an object oriented programming course later we don't really distinguish. And we like this composite C, C++ approach not only because it permits us to introduce some elementary concepts of object oriented programming early in but also greatly simplifies input-output operation. In fact, we have noticed while teaching C programming while people will learn scanf and printf by road it's not at all easy to convince students why the hell I am writing this %d, %c and then something etc. So, lot of energy is wasted in convincing that. One of the things that we do here and that is what I propose to use in the larger workshop is to hash define certain macros and use them instead of scanf and printf but that is of course for the initial period anyway. So, here I am trying to explain this predicament we say C in greater greater b why C in why not input why not read why not get why do we have to use greater greater symbol so instead of students only raising this question in one's mind it is better that we raise this question ourselves saying these are the concerns and then we can say that look a programming language defines a syntax and we have to follow it whether we like it or not or whether anything better can be done or not and then we explain the input operation by saying Dumbo will collect a value given by us take it to his memory cupboard and store it in location b and then we again emphasize that an earlier value will be overwritten so this is what we talk about input similarly we say output, Dumbo can output values we only mention specifically that Dumbo will copy values from his memory locations and present these values in locations are undisturbed and a useful additional feature we introduce such as a character string can be displayed on the terminal etc etc etc so we are saying if this is the C out instruction and a value is given it will go to b if this is the instruction the value will go here we only emphatically state that the distinction between a numerical value and character string value which will be explained later in the course should be remembered by this for example we will later on be associating a type data type with a memory location so it will not be possible to put a string in memory location C if it has numerical values etc then we describe Dumbo's computing so we say if two numbers are stored in drawers a and b Dumbo can add these and store the result in another drawer say sum so we show by example b has this value sum we do not know what the value is so we demonstrate that by a question mark then we instruct him by saying sum is equal to a plus b so Dumbo starts thinking so what he does is he uses his assistants we call it junior Dumbo's where actual arithmetic operations will be done and roughly describe how the addition operation is done so excess the location a copy the value into a register excess the location b copy the value into another register calculate sum and store the result back in location sum and the location sum will now contain value 47 it is at this juncture that I felt really the need for a simple animation which could demonstrate that concept which is what I have built in I will show you later so this is what we say this is like a register set on a table say work table trying to explain the concept that addition does not happen just like that there is a lot of work that the machine has to do internally then we emphasize that a and b continue to hold the existing values but the location sum will now contain 47 which is the new value then we ask how do we give instructions so most machines take one instruction at a time but Dumbo is special we can write all our instructions in advance and give the entire lot to him and this collection is called a program so there is how we convey the meaning of a program and we utilize this opportunity to convey to students an important historical fact that was von Neumann who conceptualized the stored program notion and therefore the computers even today are still the basic computers are called von Neumann architecture computers it is useful to introduce this I do not know where our students get a chance to learn more about such towering personality and their great work because there is no component elsewhere in a professional college which will force them to read technology history for example there are many people who do not know that the basic contribution of von Neumann was not really computing but operations research so Morgan and von Neumann's treaty on operations research and theory of games is what is supposed to have created the field of operations research but that is very less known even amongst computer scientists most of us know von Neumann as a giant in computing and then you may or may not extend the understanding by asking them where does the program get stored if it is to be stored and we say it is stored in the same memory so we say Dumbo uses some space for storing data and other separate space in the same cupboard to store instructions that way we can easily introduce the notion of an instruction space and data space which are later on can be expanded and then we specifically mention that names or symbols we use to designate memory locations can be arbitrarily chosen by us but should be meaningful, just a device so that I show a complete program now this program is written in our style CS 1 1 style obviously for the workshop I will convert it into a C program proper C program but you can see that I define int A int B int C I get in values of A and B and I calculate C is equal to A plus B and I see out C so basically it is a four instruction sequence read A read B add the two values compute C and output C this is what we try to later on illustrate through a animation there are some examples that we give convert temperature from degree centigrade to degrees Fahrenheit and this is typically a quiz for the novices because there is a funny symbol called backslash and and people could not figure out what backslash means will produce the following additional output backslash and nothing visible and end of line is inserted and I cannot guess what is the importance of this question obviously I should not be giving marks based on this question but this question is an extremely useful feedback this was the first indication I found out how many people know already much about computer program because only those people are likely to give C as the answer all others will either say backslash N or N or I cannot guess so quizzes are useful not only to give marks but more importantly to get meaningful feedback from the students so this is essentially a lecture now the way I propose to organize the lectures for this workshop in the pilot workshop that we conducted I went by and large by the CS11 organization which we do here although as I said the pilot was compressed but we did consider C programming only not C++ program however what we propose to do now is for a 15 day program there will be 40 lecture hours and there will be 3 hour tutorials or lab in the afternoon in these lecture hours I propose to produce lectures which can be used as they are if they want to use recorded lectures going strictly as per the schedule of most university syllabi that is the reason why we had requested you to bring your own syllabus and sample question papers and so on so forth the purpose of asking you to do that is different we will ask the same question to other teachers also the syllabus and the exam pattern that those teachers will bring will represent the larger pattern percolating in the university we already have that material so we will be basing our syllabus and our lectures on that the purpose of asking you to bring your syllabus and your style of questions would be to enhance that base university kind of training that will give them to say you could also try these lab experiments you could also try these questions and so on so forth so that is exactly what we wish to do as a composite thing let me show you now the animations that these people have done this is our Dumbo and this is his cupboard showing different drawers and this is the Dumbo fellow bringing a number from input picking it up opening a drawer and pushing it in some memory location so this is very quickly summarizing how the Dumbo interacts with the rest of the world here is a sequence operation where addition of two numbers I think is being so value 35 comes into A so value 12 comes into B and now these two values are to be added C does not we do not know what the value is so these are the registers that Dumbo has notice that Dumbo is copying a value so the value is not destroyed it continues to remain there copies another value from B puts it on to another register then there is some sort of a thinking I have asked them to introduce that thinking Dumbo here again who does the addition and the value 47 goes here one mistake in this animation is that the question mark should be shown to be replaced by this 47 and then these are the values that this fellow has we also asked them to prepare one more sample animation which will show animated execution of instructions in a program so if I have four instructions in a program what happens when one instruction is executed next instruction executed etc. if you will notice almost all graphical debuggers permit us to do that so ddd that you shall be using you can actually the statement which is getting executed gets highlighted and you can track the variable values there they have tried something like this here there is a program memory and data memory C in A C in B sum equal to A plus B C out less less sum is the instruction so they show those things the first instruction is highlighted in red and that instruction is being executed where the value of A now becomes 35 now the second instruction is being executed the number 12 comes and sits into the location B so you can see this is this turns red whenever the instruction is being executed it turns red there is lot of jitter because of the gaps that you see in portions of animation and then finally the value 47 which is computed goes out into sum when this is being executed and next the statement C out less less sum becomes red so a copy is being made of 47 and our Dumbo is seen carrying away that value I did not like this part because I told the animation team that even an artist in a drama does not show his back to the audience so I should be seeing the value 47 being carted not the back of Dumbo anyway as you will agree just like we have multiple opinions on teaching programming there will be multiple opinions on how an animation should be organized each one of us would like to have something different and that brings me to the other initiative that this has been done using that blender software as I mentioned now my ambition is that if such components can be created a Dumbo as an object a movement as an object value as an object and if I could parameterize these then each one of us could create a sort of different animation using the same components so we propose to build some more animations like that and of course all of these will be made part of the because they are created on blender and they are created through public funds so we will be releasing all of them in open source the idea in showing this is that this is going to be the style of the lectures for the main workshop for teachers of course as we go ahead and concentrate more on what we call technical components there will be larger programs and people will be executing those programs during the labs which you will be you and your colleagues there technical friends will be supervising there do you think this is the because this is how we ran the workshop last time and that appeared to be okay do you think this approach is alright and is doable at your end whatever one thing we have learnt is last time we were sending sending transparencies for that lecture just before hand and they were making Xerox copies and making available those copies after the lecture one feedback we received is that all participating teachers said there will be nice if we have everything in advance as a reference material there is a dilemma I mean teaching methodology wise you want some elements of surprise in whatever you are discussing but on the other hand if they have the material in front of them then they won't waste time in taking notes because they don't know what will be the material given what would be your feedback on this what should we do should we prepare a complete workshop manual workshop booklet sort of thing we could do that easily all the lectures will be ready so all the transparencies for example and the as annexures all the C programs which are discussed both during the class and which will be discussed in the labs we could all print them and just as we will send you the clickers and the other material in CD we could also supply these books so what do you think is better giving them lecture by lecture notes is better or giving them one set is better because you would have interacted with teachers in your vicinity so you would know their mindset their expectations what is your feedback on this it appears to be a very trivial point it becomes suddenly important because we want to maximize the impact of the entire endeavor on teachers so do you think it will come in the for example if we just distribute it in advance will it deflect anything will they think less come in the preparation before coming for the workshop tomorrow this lecture is there we can have the just look up the slides and then come is it expected then it is obvious to give the things better so they may be prepared you are giving me an idea this will mean they will have to do more work more work so after you finish with them in the labs you will go home and relax and you will ask them to read in their hostel rooms not a bad idea at all there is an advantage because we are not in fact come to think of it there is no harm even student ultimately if any teacher is planning to use this material since the material is open so students will also have access to it anyway the only difference will be the quizzes that the teacher should conduct no I think that's a good idea so Mukta just make a note I think we should prepare a booklet printed booklet and circulate it to all the only thing that booklet will not have is the quizzes they will be prepared okay so all of you end of sorry the point I want to make is instead of taking the trouble of printing a booklet and distributing as he already mentioned the material is already available just make it we will be changing those slides now mailboxes okay okay so in the mailboxes in each institution in fact we could even put them on the thing and all participating teachers once they enroll we can give them a link to that that is a good idea so there is only those who register will have access to that thing so it will be through a login id or whatever we have to prepare before that so every time they need the machine and at that time if we have the printed thing then it is easy to just go through that it is not necessary to have a they themselves can take a print out if they decide means print out again is required this is exactly what I felt and I was convinced but let me tell you the kind of facilities we have access to you and me about 50% of the teachers won't have access to that's a fact of life I mean I have seen colleges where the so called internet bandwidth to college sucks not only students but even teachers go to cyber cafe to access internet so that is the real life situation in many colleges so our experience will not be completely correct but in principle what he says is right if I give them access on the this maybe we will do both maybe we will do both no printing 1000 copies anybody has an idea of how much it costs something like maybe we can of course compress things but still about maybe 200 pages 30 paisa per page say it is 200 pages about 60 rupees no yeah about that transportation also 100 rupees that's okay we can we can give him one dinner less yeah pdf will do anyway just no no the point is we will be of course uploading them on the model but what is pointing out is that before coming to that remote center they may or may not be able to take a print out and so on and after they come there you see moodle will be accessible for example I imagine myself in let's say REC 3C so I am going to attend that course in REC 3C REC has organized a guest room for me REC has organized a lab for me but I leave the lab in the evening and I want to read for tomorrow's lectures at my home I may not have access to a computer in my guest house that will be available only in the lab so it makes sense to have both so they can read it at home on the print out besides this psychology of individuals even today is to more quickly skip through skim through pages rather than skim through screens so we will do both may be students perhaps will be comfortable with just the on screen side any other observation that you might have on organizing lectures or how do we go about it so is this is this kind of shield ok fair that's it then thank you very much