 तो बना हो यह रहे हैं तुक्तदिर मर्ठू है तुक चन्यों छ़े तुक जाएं its one and a half hour session. and it can be broken into two pieces very easily and each of the two pieces can be converted into lecture videos of still shorter duration but retaining shorter duration and repeated shorter duration. ventional utility of two dimensional arrays is 10 compassion on x, 5 ğluagmentar friendial and, 2 oa bean, 4 oa have made 10 repetitions. So this is an example of how the sum of rows column etcetera happened to be 15. And now we want to find out whether a given a matrix is a magic square or not. Of course it's a square matrix. We test the given matrix for being a magic square by using this formula that the required sum should be this. वह obeying the sum of the different rows of the different columns and sums of the diagonal and determine whether they are all same, so there is one particular approach, it need not be the approach people can take different approaches that is perfectly fine with this number, is more or less a problem then there is no problem whether you include these two terms in this list. जोग of different columns and sums of diagonals and determine whether they are all same. तो there is one particular approach, it need not be the approach people can take different approaches that is perfectly fine with them. तो they can even discard the sum by after finding out the sum. तो they need not store the different sums in different area elements at all. तो you can simply find the sum and if it is same as what is required you discard it. तो the moment you find any sum which it does not match the required value अज़्ाए बुवोई करति जीबका के ने ठुपड़ तो डे बोब वो मुझे नाँएव तुफ्वाखेः तो बजन्चाएव. तो ती थी वो वो बोगाएव धेभाखाएव और गाद कराने अज़्ाएव वोगा. इसे को सरबाख्य आप पिर और करादेटा के भाशा, आब और ठीवाश कता, कि आप उवटेः को थुब, इसक्छी करतित आप इस्टा के देशा सब ख्ढब़ूएका। ुउ डालाख करितम्म, तो ऐढ घए वि alloy, you combine these three tags & say why there is a fear in this one as it's up to the various groups. precaution to milkbrighters see to the end of the course of the session ूए और नऑ बनाENTS वो दोल्य तूछु था। But there are things that too don't go according to the reasons Friday. ये ने ढे a number of things that will not end in the next week, नही pouvait बकुखचित, भचघón नत withdrawal. how to solve a set of simultaneous equations. So you are familiar with Runge-Kutta, various methods that are used. Substitution method for example, and you can indicate those algorithms. And with that kind of algorithmic representation, you can actually digress into the discussion of numerical errors that may crop up. When you subtract a very small quantity from a very large quantity, what happens? When you add a very small quantity to a large quantity, what happens? These kind of discussions can be done best in such examples when you are handling a system of simultaneous equations and trying to find out if the coefficients are very different for the given system of equations, what would happen. And then you can point out to the interested students too a plethora of books on numerical analysis or the open source material on the web on the issue of errors and how to control those errors etc. But I digress. So there is a good set of problems that can be thought of associated with these kind of explanation and these could be used for both classroom discussion and giving the students as practice problems in the labs or wherever. In fact in the 10000 teachers training program we will be giving such lecture sessions and we will be asking these 10000 teachers to submit a set of problems which they would like to discuss with the students to explain that concept better in a flip classroom or otherwise. Now I come to the digital images. Notice that in every lecture or any place wherever you use material from some source you must cite that source. All of you are familiar with the creative commons license? No. I think you should read, just google creative commons and read the license terms. The creative commons tries to permit people to use creative content such as text, images etc. etc. as freely as is possible. It is called the knowledge commons. And all the material incidentally including these lectures and these interactions are going to be released under creative commons license so that anybody can benefit. One of the cardinal rules of using creative commons property is to give a reference. The first important requirement of creative commons license is by attribution. That means I can use any material as long as I cite the reference that I have taken it from such and such place. I need not tell you how plagiarism grips this country. Even grown up people are tempted to copy portions of submitted papers elsewhere and submit the whole thing as my own research paper. How many times? Time and again. And I am not talking about past tense, in the past 5 years. Conferences after conferences. In fact whenever we are on the PC committee the maximum time that we spend in taking a submitted paper putting it through Turnitin and such software which actually compares your submission with whatever has been published elsewhere and it shows 60% match, 40% match. How many of you are aware of Turnitin? Quite a few. Good. So that means you examine either you or somebody else's submission using Turnitin. It's a good practice. Of course, if I am a crooked person I might actually use Turnitin to minimize the visibility of my copying. That should not be the objective. Now, so I digress but the objective here is to say that the digital image processing session that I am going to describe. Of course I have written my own programs. Of course I have developed my own logic of explanation but the basic material on image representation and image processing comes from Wikipedia. We just say Wikipedia that is good enough. So then we describe a pixel as a picture element and there could be an array. I use usually a blank slide in the classroom to show what I do is I will leave this space here and I will actually use the tablet to draw a rectangle or a square and I will show how the pixels are there arranged in rows and columns and each pixel would have a value commensurate with the value of light intensity. Then I tell them different encoding schemes. For example, I can use one bit to represent a pixel which will give me only a monochrome value black and white. I can use eight bits which will give me a gray scale. I can use 24 bits which can give me red, blue, green etc. So I can have over 16 million colors. And it is interesting to tell people that look human eye is limited to a small range of 200 to 2000 colors only. So even if there are million colors, first of all actually there will not be all million colors present but there will be large number of colors present and the eye is not able to detect all of them. It is a natural phenomenon. Anyway now here is what we tell them how the digital images are stored so they will be stored in terms of height, width, type of colors present and that is how many bits are to be used for reprinting each pixel and then all the pixel value. So monochrome fingerprint images are small size for large images compression may be necessary because a 12 million pixel camera can produce 36 million bytes in an image one photograph can produce 36 megabytes. Now that's a very large area. So you have tried to take a photograph with modern digital camera which has 8 megapixel or 4 megapixel or 6 megapixel thing at the highest resolution you get a very large image but when you convert it into JPEG it becomes smaller in size that is because of the picture encoding that is done. These things need not be discussed in greater details but just told to the students as a matter of interest. Invariably you will find that majority of your students are familiar with digital images and digital photographs not to the extent of how they are internally reprinted etc but they generally have seen digital photographs on a computer or they will see after they come to your college on the net or whatever. So it is not a very difficult thing but you give them additional information like there are several file formats and different people who are interested in knowing these formats they can look at these and so on so forth. Now I come to the main crux of this particular lecture session where I try to tell them some very basic processing on any image that can be done to enhance the contrast of that image and to that extent I introduce the term histogram. So for example histogram which is a term from statistics and it is used to denote frequencies or count of number of times that an event or incidence occurs is a basic definition but in case of images a histogram table indicates how many times a particular value occurs in the image. To explain that and to explain why is the histogram important we will show them an image. So this is a sample image of 8 pixels by 8 pixels. Notice that all pixels are squared some are very dark some are light this is the whitest portion but notice that no pixel is completely dark black no pixel is completely just white then I show them that the values of the pixels are like this so this first pixel is 52, 55, 61, 66 etc. they are numerical value I also remind students that look for a black and white or grayscale image like this and if I am using 8 bits to represent an image then the maximum value can be 255 the minimum value can be 0 I suddenly notice that the maximum value here is 154 and minimum value is something like 52 that means the contrast in the picture is not good enough and that is the reason I tell them that you will see this picture in some kind of a blurred fashion to explain this further I tell them that from these pixel values I can actually look at individual pixel for example this is the brightest thing but its pixel value is 154 the true brightest spot could have been 255 not 154 so I observe that if I calculate the histogram values which are shown in a table for non-zero pixels so for example how many times value 52 occurs one time 55 occurs three times 58 occurs two times please note that these are not necessarily neighboring pixels 52 may occur anywhere these three elements of 55 may occur at different places but histogram is merely a count of frequency so if I do the count I observe that the values vary between 52 and 154 and that is why I have inadequate contrast so what do we wish to do we want to activate people for doing some image processing the histogram is concentrated in a narrow range whereas the possible values are from 0 to 255 now if I can stretch that histogram if I can make that 52 to 0 and the largest value 154 to 255 but stretch it such that the stretching applies uniformly to all pixels then I will get a contrast which is better without destroying the originality that the method to do that is through histogram equalization this is the motivation for them that if I stretch the histogram to cover all possible values I will get a equalized histogram but in order to do the equalization I need to map existing values to new values so I must get a formula for histogram equalization and then using that formula I must map existing pixel value to a new pixel value as per that histogram equalization model this is the motivation how do we do that so in order to do histogram equalization I am required to find out the cumulative distribution function or cdf of a histogram so cdf is nothing but cumulative values that appear say at 52 we ignore all the 0 elements of course 52 we say 1 that means up to 52 value there is 1 pixel there is 1 pixel somewhere smaller than 52 sorry 52 there is exactly 1 pixel at 55 let me go back here the cumulative histogram values is at 52 there is 1 pixel at 55 there are 3 so the cumulative at 55 will be 3 plus 1 4 cumulative at 58 will be 2 plus 3 plus 1 6 plus 3 9 plus 1 10 so that is how you will find the cumulative values and I explain to them that these are the cumulative distribution function which has been determined by simply adding up the elements of the histogram table in that order now having done that then I introduce them to a formulation and I tell them it is not necessary for you to understand the mathematical derivation of histogram equalization those who are interested can go to Wikipedia article on this and then do a cross reference to find out how the histogram equalization formula has been developed but at this stage we tell the students assume that this is the formula how to apply this formula in your program is our requirement you will recall the discussion that professor had briefly yesterday the difference between program design and algorithm design and I think many of us often confuse between these two terms and algorithm design will require people to figure out this equalization formula itself a program design on the other hand will require people to figure out how to implement this formula in a program and I would tend to agree with him that the primary objective of a first course in programming is not to teach them algorithm design but to teach them programming so given an algorithm so for example we are not teaching them the fundamentals of matrix inversion but we are telling them this is the matrix inversion process how do you implement it in a program if you agree with that approach then this is exactly what we do here we have told them about histogram we have told them about cumulative distributed function and then we have said that if we wish to apply the histogram equalization what we will have to do the equalization formula to calculate a new value for a given pixel value v is this and the equalization formula for example if the given image l is 256, m and n are 8 minimum cdf is 1 so the actual formula that we use becomes this we just substituting the values in this formula relevant to our image and then we show them that if we did that this is the cdf of 78 is 46 so a pixel value 78 will be equalized using this formula it will go to 182 and we emphasize to people look what was the pixel value 78 now it has become 182 it has become larger clearly 154 will become 255 52 would become 0 and that is how the image will get straight we calculate such new value for each pixel so these are the pixel values after histogram equalization and we tell people that look now I have a 0 earlier there was no 0 now I have 255 earlier there was no 250 but these numbers have not arbitrarily come they have come by the histogram equalization formula which somebody has worked out for and then we tell them if we plot this image it will look like this by the time I show them this image they have forgotten the previous image so I typically show a slide this shows both the images side by side and ask them to compare which has better contrast can you see how convince the students would be when they see these two images that one has a better contrast the other one has a less contrast then I point out that this is an artificial image so let us take a real image and then I go to the next image which is this grayscale picture you can barely see it it has nice meadows some grass some trees and so on but the contrast is very poor I show them that for this image the histogram and the CDF is like this so the histogram which is shown in the red is concentrated between the values 120 to 200 and this is the cumulative distribution function of the histogram then I say I would like to stretch it like this such that the histogram becomes like this and the cumulative distribution function becomes like this and if I do that and if I apply the histogram equalization this is the image I will get and this image is much more visible again as usual I show them these images in the context so for example this was the original image this had this kind of histogram and cumulative distribution function when I equalize the histogram this is the new histogram and this resulted in this image can you see that you don't have to go through a huge image processing algorithm and introduction and so on to introduce this and none of this material is my creation it is available free on Wikipedia I merely took that Wikipedia article wrote a small program to indicate how these computations are done motivated the students to look at this you will appreciate that the students will definitely be more motivated by this example rather than a statistical description of cumulative distribution function and its application then now when I show them the program so this is how do I calculate the entries in the histogram table because I have only pixel value so I create an index 0 to 255 and simply use the element number itself as the pixel value and accumulate all the pixel values there then I show them that this is the program for histogram calculation and equalization so I read in the image value then I calculate the equalizer I calculate the histogram table entries first then I have to calculate the cumulative distribution function I have to find out the minimum value of table because that is required in that formula you will recall that formula which had one min there so I have to calculate the minimum and then I have to calculate the entries in the equalizer table so these are the equalizer tables once I do that I calculate entries in the new image area the new image ij is equalizer of image i the discussion on this program may take some time but observe that the program itself is not very lengthy it's hardly 20 lines of operative code and in 20 lines you can do all of this and then you can tell the students that those of you who have digital cameras or who have seen modern digital cameras the modern digital cameras themselves have an equalizer function so when you take a photograph you can actually do the equalization by pressing some button who does that equalization there you can then tell them about the embedded software you can tell them that a code written like this in cc++ can be converted into an embedded software for that camera and that is precisely what some smart fellow has done and that is exactly what you all can do so you can even motivate them towards embedded c programming embedded c++ programming you need not have to waste your time while teaching programming to do that but giving such sample indications of what other things are possible motivates the people and I have found that invariably in every large class there will be few students who will take in their mind to pursue a particular aspect that was discussed sometime during the class and then subsequently they may spend a semester or two years studying that or understand well that is our job isn't it try to motivate people to the best of their abilities do whatever the last point that I wanted to mention is that this discussion I led to an image of a fingerprint and I showed them how a black and white fingerprint will look like there were other sessions on fingerprint analysis there were other sessions on fingerprint comparisons there were several sessions then on describing the other authentication technique that also resulted in large discussion on problems of huge size 1.2 billion Indians each Indian you get all the 10 fingers captured you don't actually calculate the iris but you look at the humongous storage that is required as compared to that the storage required to store your name your address etc appears very tiny you see the text description even as ASCII code may amount to 200 bytes 400 bytes or something here you are talking about several kilobytes per image of a finger and such many and then you get them and you have to classify them and what is the hard computational problem that I enrol a new Indian into the other scheme those fingerprints that have been captured have to compare with all existing fingerprints to ensure that the person is already not enrol somewhere else and I tell them how hard that problem is the second problem I tell them not the problem but an opportunity is that once these fingerprints are there then I can use the bank of fingerprints to affirm my identity so if I go to a bank I don't have to sign and somebody does not have to compare my signature I just put my thumb this time they need not find out the back end system need not find out who I am because I already claimed this is my account number this is my other number all that the back end system has to do is to find out my stored images and compare those with the image that is being captured today the only response I want from the authentication system is yes this person is a product or no this person is a fake throw him out or put him in jail and that response can be done very quickly now these are practical issues which tremendously interest students I will tell you that particular year I got some experts from the industry also to give talks on fingerprint analysis I purchased fingerprint capture devices surprisingly they cost only 4000 rupees a piece I bought 4 devices put them in the lab and batch after batch I told people that take a photograph on a camera and put your fingerprint there and record this in a file system with different names and now some groups will work on analyzing this on comparing this and on building an application like an attendance application or building an application for authentication so different groups work on different projects although we have said that project related discussion will do in the later session but you can see the potential now this is the last point I wanted to make in this session that whenever we discuss a topic whether it is arrays and matrices whether it is iterative solutions like finding out roots of an equation by mid-square method or by Newton-Raphson or whatever each of these discussions if you just apply your mind a little bit and look at the associated larger problems and just tell people about those problems and tell them that look there is a potential to do a programming project as an extension of this so programming project definitions in many colleges are given either arbitrarily by us teachers or we will tell students to find out some problem and 95% of the students find out a problem for which the solutions already exist from previous years so if they find it easy to take it do some lipapoti and submit but to challenge their creative talent you can actually think of something incidentally how we tackle this problem of students looking at the previous year projects and trying to submit as their own we had a very simple solution we put all previous year projects in open source for those students and we encourage students to take one of those projects but that project documentation clearly says what has been implemented so they have to think of some additional functionality and implement that over and above what has been written this also encourages people to understand two important thing reuse of existing software and modifying an existing software to extend its functionality which is how modern programming is done nobody writes a 20 million line code or a 2 million line code or even 200,000 line code from scratch teams have built this but each contributor could write a 2,000 line code to augment functionality of a 200,000 line when we look at the edx platform later I will tell you what is the size complexity and what exactly are we trying to attempt to do that but it is possible to introduce to our students such notions of doing larger programs as projects it is not necessary that every project must contribute to something like 5,000-10,000 lines of code that is unrealistic and I will conclude this discussion by talking about the differences in productivity of programmers in professional life and the differences that we observe in our classroom between different programmers or different students so are you familiar with the differences in the productivity of programmers productivity of programmers is measured in the professional careers typically number of lines of code delivered by a program what is your guess on how many number of lines of delivered code is expected per programmer, per day any numbers 400 to 500 400 to 500 400 to 500 400 to 500 lines sir delivered 400 to 500 100 times difference 320 do you see now that amongst the people like us who teach programming day in and day out we are ourselves not sure how exactly does the industry measure the productivity of a person 200 to 500 lines of code can be written by an individual in one day but it will not be a delivered code a delivered code is one which has been tested rigorously which has been documented properly and which meets all the algorithmic specifications and that is a much harder problem I may do it overnight in case of an emergency but I can't do it day after day after my colleague Ajit Diwan who actually teaches algorithms he is a theory guy but wakes by the students not being able to implement a particular algorithm in one single night he wrote 2000 lines of code he is exception so people can write 200 lines of code in a day but that is not deliverable code 2 to 5 lines is too small we will get thrown out in a job if we actually deliver only 5 lines but 20 to 25 lines is uncannily close to accuracy the trick is the number of lines of code that a programmer can deliver does not drastically change if the programming language changes what it means is that if I am writing assembly language code I will still be able to produce 25 to 30 lines of delivered code when I am writing CC plus if I am writing SQL queries I will still not be able to write more than 25 to 30 lines of delivered code what it means is that is the reason why computer science researchers strive to define, develop and implement more and more expressive languages such that for doing the same thing you have to write less code because the deliverable productivity is same now given that 20 to 25 lines of delivered code can be given what it means is if you have about 20 working days in a month unfortunately working days are calculated by the Americans so they don't count Saturday, Sunday ok so 20 working days per month we are talking about 600 to 700 lines of delivered code if a person works full time now imagine if 4 students are working in a group and they are working part time for our project in our course they have 4 other courses to do so our expectations about the deliverable of the project should be realistic all of you would have seen batches I have seen batches who turn off 5000 lines of code 6000 lines of code in some project there are some uncannily productive people shall commend them two things one the differences in productivity could be huge so for example if I am an average programmer and I am capable of generating 25 to 30 lines of delivered code per day over a period of sustained period of 6 months my left hand neighbor sitting in the same organization may have a productivity of 100 lines of code per day and my right hand neighbor might be able to produce only 10 lines of code the person who writes 10 lines of code per day on an average and the person who writes 100 lines of code on an average per day both get the same salary both have exactly the same qualifications on paper both have the same number of years of experience now this is the fact of life the productivity difference even amongst grown ups exist even in our students the same difference will be reflected that is why when the groups are formed if we let students choose the group first of all good students will try to come together so you have to actually ensure in every group there are a few smart students and few not very smart students so not very smart students benefit by the smarter ones of course you drag the total output of the project for that group now there are different ways in which you can assign this work but different groups and different individuals have different productivity how do I then evaluate how do I give grades do I give grades based only on the number of lines of code that people have written if I say that people have written 2,000 lines of code in a group project will get an A grade and there is only one group do I give B and C and D grades to all other groups so I have to set the minimum expectation that I have and I might award an exceptional bonus points to the students or groups who do an exceptionally good job in my marking scheme or evaluation scheme I must make sure that the lowest group is capable of producing an acceptable project and that acceptable project should be the criteria for my acceptability of that project as a reasonable project I need not give that group 10 out of 10 marks but I need not give that group 0 marks or 1 mark or 2 marks just because the number of lines of code developed by that group is the smallest I hope you get my point I am sure that most of you would be applying such mindset while evaluating students for their group projects but I will tell you it is not an easy task every year, year after year you will get different people different groups and you will find tremendous differences in productivity and I am not talking about understanding basic program this is after they have all understood basic program but their productivity will differ and there is absolutely no problem with it that is the reality of life our task should be to encourage the better programmers to solve harder problems I will conclude this session by saying one of the motivations I understood very early as an important motivation for a teacher as an objective my objective is to ensure that every ordinary student is driven to do extraordinary work and every extraordinary student is driven to achieve the impossible that is how you keep pushing the envelope and it is stages an ordinary performing student you first direct him or her to become an extraordinary performer and remember we might have a class of 60 students but every student is an individual and every individual student is our responsibility as a teacher since we can't address each individual by spending enough time with him given the class size this is where we segregate people we segregate people into groups or classes and so on the lagars as a student and the smarter people who must be challenged with harder problems giving them a group project we have consistently found a very good idea to bring out the creativity amongst the more talented and to ensure that even the lagars do at least some work which otherwise they might have the only thing you have to guard against is the tendency among the student to do the best code and submit that I will close this session here let's have some question answer related to these topics and these general like the session is open sir stating the productivity of code also the number of source lines of code is depend on programming languages no it does not depend the number of lines of code you have to write to achieve a function programming languages to state that point for example if we are going to choose some languages those are some languages in fact I will try and show you an example in the string processing I have given the class a problem of getting the comma separated you are all familiar with CSV format if you take a spreadsheet and store it the CSV file format you will get comma separated values now these comma separated values may appear uncanny the name somewhere may be longer somewhere may be smaller so every field does not have a fixed length a number 24.8 will occupy 4 character positions a number 12 will occupy only 2 character positions so one of the tasks that you have to do if you want to assimilate the CSV file into a database or into your program arrays differently say roll number marks in quiz 1, marks in quiz 2, marks in quiz 3 name etc etc then you have to identify the comma separated fields forget the comma and extract some other portion regular expressions are commonly used to do these things at the higher level of program in the first level of programming what we do so I have given a problem I will upload that problem later and I will show you how some smart students have written thousand line programs correctly to handle all such comma separated values and so on and undoubtedly it becomes a large program however if you use C++ standard library and if you use lists then like python this problem can be coded in 10 lines of code in fact in our course we don't talk too much about object oriented programming in the first course although many colleges and universities have either two courses one course in the conventional C programming and the other in object oriented programming but towards the end of this course our motivation to people to tell them how object oriented program is better not because of the object oriented programming context not because of the existence of powerful member function libraries powerful classes which reduce the amount of programming that you have to so that is the motivation thank you sir sir actually in a face to face lecturing mode we can identify the group of the students are average some of them are not average and some of them are good and some of them are very bad normally in our system bad students are also there but in a flip classroom when the student comes only we have discussing the problems and all those things so it is difficult in the lecturing mode we can understand and we can put more effort on some group but in flip classroom we are not delivering the lectures in face to face mode how we can identify those students in fact it is exactly the other way round our experience is that in the discussion session we are able to identify weaker and stronger students much more easily in the discussion session I am not standing at one place I am actually moving around and occasionally I am coming over and I am letting students speak I am letting students tell a solution so in one of the discussion session for example you talk about weaker students so let me explain how I learn to handle the weaker students properly in the after dinner sessions when I would give lectures in Hindi for example they still have to write program so I will give some problem on the board and I will ask people to write some program segments then what I will do is I will arbitrarily pick up 3 notebooks and on the board I will write the 3 programs that these 3 people have written each of the 3 is wrong they are all poor programs however when I start discussion now I will say ok let the whole class look at the first program what is the error that you find surprisingly the same student who has written that program says sir hudar semikuland rahe gaya or this variable is not properly defined but majority of the students enjoy participating in such discussion because there is a uncanny human mentality I enjoy finding out somebody else's error so when the master has put up the entire program everybody will participate you can immediately find out which among the poorer students are relatively more engrossed or interested in program you can immediately find out the people who don't speak at all to such people you can go to personally and talk to them in a regular classroom lecture most of the people are quiet so it's actually not easy to find out both the better performers and poorer performers in the regular classroom it's much more easier to find out during this interactive session it all depends upon how the interactive sessions are conducted if I convert an interactive section into another lecture then I have not achieved anything and that is the reason why majority of the thinkers all over the world are suggesting that the discussion sessions should not be held in such a classroom said there should be round tables ok where people should say but it is possible to decipher ok there is another administrative issue that is associated with it which I would like to tell you since we have large number of teaching assistants and I would encourage all of you and I would like you to encourage all 10,000 teachers to introduce the notion of teaching assistants in the first level courses the senior students can very well do that the additional administrative thing is in such classroom discussions when we do either the TAs are present or we identify the people and tell his or her TA to either pay special attention to clear the further doubts that the student may have the student is very poor or to tell them that look this guy is so smart you please ensure that he solves harder problems and use him in the class to tell other students about so that is how you expand this actually sir in industry why the students are explored more towards programming when you are considering the academic student they are having the fear to do the programming they are doing just copy and paste why is it so there is no justification except that there are marks to be obtained by doing cut and paste and in the profession they have to obtain salary by actually writing code so when I go to profession I can't cut and paste because I will not get my salary in college I can cut and paste because I still get my marks but some employees they are getting salary from 4000 also but still they are good in programming and they are more explored the salaries and capability of the individual or salary and productivity of an individual are completely unrelated please understand that is how real free market economy is like constant price they are completely unrelated the cost of producing an IC may be 10 cents its price may be 12 cents 1 dollar 12 dollars or 15 dollars depending upon what market will pay so its a supply and demand thing if I am in a small town and I want to stay in that small town and if there are only 5 companies and if there are 100 people wanting to become programmers then I might have to accept that 4000 rupees salary but if I am in Bay area in Sunnyvale even if I am the same poor programmer I will be minimally paid 6000 dollars for doing the same shitpot programming my programming is not improved so please remove this from your mind that your programming abilities are going to be related to your salary it is not true it is not related sir but why you are making the language simple so that we can motivate the student towards the programming the point is that the objective of the first course in programming is not to motivate all students to become programmers in the end because the students who are learning programming in the first course are going to be mechanical engineers, civil engineers physicists, chemists even commerce accountants they are not going to be programmers probably only a very small percentage of them will become programmers that small percentage which become programmers in profession like joint TCS in forces or whatever while a majority of them may come with a computer science or IT background it is not uncommon to find good mechanical engineers, civil engineers etc becoming programmers later these are the people who will take to programming as a kunnas when they are our students but for majority of our students our objective is not to convert them into professional programmers later our objective is to teach them programming so that they understand A what programming is B they are able to use that programming for their own work in their own field later that is the limited object and language is hardly an issue there I personally hate to use CC++ as introductory programming language all of us agree that these languages were not developed to teach programming simply in fact those of you who have seen the old timers basic and FORTRAN in some sense were much easier to introduce but please remember that all these traditional programming languages have come from an assembly language kind of package jump instruction earlier programs used to have gotoos till Diestra wrote that famous paper and then structured programming evolved and it's not easy for people to understand those structures and so on so programming languages are still not meant if you ask me the easiest language to understand perhaps is python python scripting is much easier and there are courses across the world where the first course is in python it's possible but we are stuck with this unless your university system changes the syllabus you and I are forced to teach it in IIT we had umpteen debates that should we change this CC++ to something better and guess what all other departments other than compressor's department say that no you must continue to teach CC++ because that is what most of our numerical algorithms are for 20 years these departments forced us to teach FORTRAN as the first programming language so and first year course is a service course given by us teachers to the students of all branches so that common wisdom will prevail we can't do much about I am Manish Kakhani from Modi University Rajasthan sir my question is like can we use Wikipedia as an authentic source of resource in research papers and project reports yes most certainly in fact why Wikipedia alone you can use any printed and published material as source of research and quote that material provided you quote it with reference if you use Wikipedia as long as you give Wikipedia reference the difference between Wikipedia open source and other printed material is suppose I write a paper based on the research papers of others as long as I quote the research paper reference I can circulate that research paper to anyone in Wikipedia if I quote the Wikipedia material people can take that Wikipedia material and extend it as long as they circulate in an open source absolutely no problem referencing is what is important citation is what is important you cannot take a Wikipedia article 5 sentences and write them as if you have written them that is academic crime it's not just not permitted it's crime actually people in the western societies are literally hanged for such crime you cannot in fact in any place you cannot quote even one full paragraph of any book or paper including Wikipedia without mentioning that this comes verbatim from such and such source and you have to put that in double quote that's an academic practice there is no compromise with this you cannot do it otherwise in fact I am glad you raised this question because majority of us will understand it but you will agree that many of the 10,000 teachers who will come to attend our course probably will not appreciate because in India all knowledge has always been considered to be freely available and freely usable by anybody but that is not the academic practice in fact in programming what we do is sir that we give us a problem and generally we go around in the classroom and we see that there are different solutions suppose 2-3 students the same problem they solve with 2-3 different approaches generally we call them on the board and they will ask them to write and generally we use to compare it so that other students also they use to comment on that and which one has that better complexity and which one has that memory management good technique all these things generally we compare it sir in fact that is an approach which actually you can do more often in a flip classroom you are still required to give a lecture and occasionally give this problem in a flip classroom you can do that for the entire hour and you can imagine how many students you can relate to and this approach is very good many of us follow it but we are able to follow it only occasionally in the regular session right good point ok we will take one last question sir good morning sir I am Ramohan Reddy yesterday I sat at Tirupade sir is it possible to adapt SDLC software development life cycle model to teach the programming I would suggest not in fact although in our course we will be telling people about the elements of software engineering to discuss the standard methodologies and to discuss even the waterfall model and other models in the first course may quite often be counter productive what you can do is you can hint to people that such material exists and let us say encourage people to read Pressman's book or some other book or some other reference but leave it to them don't make it integral part of the first course you see the first course is still a first course yes sir by scaling down to sir without cutting any normally do anyway we don't call it SDLC don't we do that we do some design we do some development we tell them to test so we are actually doing it but without naming it if you use heavy names it will confuse people ok thank you sir