 Good morning all of you and welcome to this discussion on the lab session. So far we have been discussing a hypothetical dumbo to represent our computer. Then we looked at the computer's internals, looked at how machine represents information using binary numbers etcetera etcetera and then finally, we decided we will look at the actual computer. If you recall when we drew the architecture, at that time we had shown that we would have a keyboard and a terminal in front of us. Most of you would have used the terminal sometime or the other, some of you have never done that, but that is ok. I cannot show you the keyboard here, but I think you should have seen the keyboard of a typewriter at least, if you are all familiar with keyboard and various keys. So, that is the front end of the machine that you see. At the back end connected through some kind of a network, there are not necessarily one, but multiple computers. So, you have your own PC in front of you which may be connected to a back end server. In the lab that you will work, we have provided for a separate server for CS 101. That is the place where all your computer programs etcetera will reside. Remember, we talked about a disk, a disk which can contain your programs and so on. All of that will be at the back end server. You will not be seeing that. Your own PC that you will use will also have a disk, but that is called the local storage. Now, couple of things that we should understand before we start looking at what we do with the lab. What we know is that we are going to write some programs to solve problems. The programs which we write are called application programs. These programs are to be executed on the machine and we saw that these programs must be translated into the native language. Who does the translation? So, that person is called a compiler. He is not a person actually. Compiler is a specialized program which some experts have written earlier. So, we must know how to invoke that program, how to give our C++ program to that compiler and what will happen to the translated program? Where will it go? It so happens that the C++ compiler program when it is running for it, your program is the input and the translated program is the output. It is not executing your application, but it is translated. So, it will take all the symbols and lines in your program as input, convert it into its own machine instruction and will produce an output which will be the executable program. Where will it keep this? Where would you like to keep your program which you type in? For all of that we said that there is a device like this. So, on the disk, I would like to keep all this information. Now, I want to keep my program. You want to keep your program. You want to keep one's own program. You will not only keep C++ program, but the translated programs also you may want to keep for execution tomorrow. All these pieces of information are kept in the disk in terms of files. You know what a file is? So, let me open up a document. You can see what it being typed here. So, file is the name given to a unit of information that will be maintained in the disk by the computer. For example, we have office files. You have seen the files in which you keep papers. Here, instead of keeping papers, you keep a sequence of bytes. That is what is kept inside of file. Obviously, each file will have to have a name. What is the naming convention? The name, for example, for our program files, you will remember from the lectures, I had used some name as, do you remember some such name? This name has two components. One before the dot and the other after the dot. What is written after the dot? This portion is called actually extension. And there are some standard extensions which mean something to the computing environment. Please remember what we are discussing now is not a computer, but we are discussing the computing environment in which you will work in the labs. So, that computing environment recognizes various extensions to mean something. This dot C P P is recognized to mean a C plus plus program. So, if there is a file called something dot C P P, the computing environment treats it as a C plus plus program. There could be similar extensions. For example, an extension called dot txt. Txt stands for text. So, if there is a name with dot txt extension, it would mean that the file contains some text. It is not necessarily a C plus plus program. It could be a story. It could be any text in English. That could be the file. There are many such extensions. We shall see how these extensions are handled. What we now want is that the computing environment should be able to help us enter our C plus plus programs, should help us to invoke the compiler, make it translate my program and then the environment should help me to run my program. This entire task of handling everything is done by some specialized programs. Those programs are called operating system or for short OS. So, OS is not one program. It is a collection of programs. Who has written them? Well some experts have written them. There are various companies which make different operating systems. You might have heard the name Microsoft Windows. Many of you are familiar with that. Windows is one such operating system. Another operating system which is quite popular is called Linux. The major difference is Linux is an open source operating system. So, several people in this world have collaboratively written this operating system means all the programs which make up the operating system and have dedicated it to humanity. You can freely use it. You do not have to pay any money to any. So, it is called open source operating. We use in IIT Bombay mostly and most certainly in the OSL is a variation of Linux which is called Ubuntu. Ubuntu is the operating system name that we shall use. There are many variations of Linux which are available. Ubuntu is one. Red Hat Linux is another. Suze Linux is third. There are so many of them. Linux itself is open source. So, all of these are open source. The name Ubuntu comes from Africa and a great philanthropist had dedicated a lot of resources to support this development and therefore this has come out as a major operating system which people use. So, what the screen that you see here is actually the Ubuntu screen. So, whenever you start the machine, the machine will come up with a Ubuntu screen. This is the first sign of an operating system. There is a program which is a front end between you and the machine and that program will show you this. In fact, the screen that you will see will be of this kind. So, there will be some icons in the screen. There will be a title called applications. There will be a title called places. There is a title called system. Why you cannot see it here is I have increased the font size so that you can read it easily. Normally the fonts will be smaller and there will be many more things at the top line which you can see. So, let us go back to what we were trying to do. So, we understood so far what that information can be kept in the files in a disk. So, file has a name and an extension and this is an example and this extension means a C++ program. We have understood. Now, there will be many files on the disk, your files, my files, etcetera. It is quite possible that I have a program called add numbers dot cpp and you also have program called add numbers dot cpp. Now, both these names must exist as two different files on the disk. Who will manage that? So, there has to be some management of files on the disk. One of the tasks which the operating system has to do is, now you pile up on the computer and you want to run various programs. The very first task you want to do is to create a program. You have written it on piece of paper that C program how will you write? Can you just type a program on the terminal? It will remain on your terminal. How does it go to the computer? In fact, how will you correct your program, modify your program? So, you require text editing. So, there is a program called g edit which will be using for this purpose. After you have created the program and stored it in a file called add numbers dot cpp. For example, you would like to compile the program. So, compiler will have to be there. Now, if all programs remain in files on the disk, the compiler will also be sitting in the disk. You would like to use that compiler. What is that compiler called? So, you will need a compiler program and the compiler which you use is called gcc. It stands for GNU C compiler. The actual command that we give is C plus plus. We shall see that in a moment. So, you can say a variation C plus plus. G stands for GNU C compiler. GNU is not necessary to understand that. Gcc is a very standard compiler. Many of you might have used turbo C for example, that is one compiler. This is another compiler. The point I am making is that the computing environment should provide these programs to a C compiler or C plus plus compiler. It should have an editor. It should have. You may want to browse the network. So, you will require a browser program. The browser that we use is I think, is it Firefox? You want to do emails. So, there is a mailing program that you can use. There are multiple mailing programs that are available in IIT, like Scriral Mail or there is a web-based web mail program. You can use any one of those. You would like, when you do the assignments, you would like to submit those assignments. In old days, people used to take printouts of the program and submit, but that is silly because the programs are on the disk and I have access to the same disk through some other means. So, therefore, you would like to upload your assignments automatically onto the computer. Similarly, these printouts which I have given today, it should not be necessary to circulate printouts. I can put this document as a file on the disk and make it available to you to read. Now, I need a system which will manage this interaction between us, where you can upload assignments. I can upload announcements. I can display grades, marks. I can put notices there. You can read that any time. You can see who are the students in your group. You can see the bar point slides which I use, converted into a PDF document. You should be able to see them on that system. Such a system is called a learning management system. The one which we will be using is called Moodle. Moodle is used extensively in IIT. You must have been introduced to the notion of Moodle. Now, this is the background. We need all of this to be provided and all of these programs, text editing, compiler, browser, email, LMS, all of these are programs. And all the programs, their execution, their safekeeping, etcetera, is controlled by the operating system. The operating system which we saw, which does the management of file system as one of the function, it also does something else. It also does loading and execution of all programs. So, this is, that is why the operating system is called the manager. Remember, operating system is a collection of programs. So, just as you know, one Dumbo to be one computer, imagine there is a operating system Dumbo, who is sort of a manager. And he has several assistant Dumbo. One assistant Dumbo is text editor, another assistant Dumbo is compiler, a third assistant Dumbo is file manager, which manages the files on desk. A fourth assistant Dumbo is what is called process manager, because it has to manage memory allocation. You remember, I said memory is in bytes and computers have gigabytes of memory. But when I use the machine, I want some portion of that memory for my program. Simultaneously, you may be executing a program. So, you will require some memory. How will the, just like files have to be separately kept. The memory also has to be separately assigned for different thing. I might be running three or four programs simultaneously. The memory inside the computer has to be allocated to all these programs. All these tasks are done by the operating system. So, memory management, management of files and management of execution of all programs or process management. These are the main functions of the operating system. In addition, it has to manage user interaction. So, if we imagine that operating system is some kind of a Rakhvaldhar or a gatekeeper, the big Dumbo, how do I interact with Dumbo? Dumbo himself does not understand C++. So, in which way I will give it a command? I want to make a file on the desk containing a program. Or I want you to run my editor. I want you to run my compiler. I want you to run my email. How do I tell? How do I interact? This user interaction is controlled by a component of the operating system, which is called the shell. So, shell is the user interface to us. And this interface is obtained using a terminal. What do you mean a terminal? I mean after all for me the computer terminal itself is terminal. But that is not the terminal. So, let me show you what a terminal is. When you go, as I said, when you switch on the machine, you will see this screen. Actually, you will see a login message that login followed by a password is to be first done that is authenticating yourself to the operating system. The operating system must understand that you are a valid user. Otherwise anybody will come from Pawai Lake and start using your computer. It is not permitted. Now, you all have your roll numbers. Roll numbers have been entered by what we call system administrator, who is the boss of the operating system. He is a person. So, the system administrator in our lab has created login IDs for all of you on our computer environment in the lab. So, when you go, you will login using that roll number. And first password you will have to be. Initially, your password is your roll number itself. And then you are permitted to change the password, how to change the password, etcetera, is part of the exercises here. Now, what I was telling you is that what you see here is not the terminal. This is the physical terminal that you see. The word terminal that I use is actually a utility program of the operating system. And for that, can you see the mouse moving on the screen? So, there will be a mouse by which you can move this cursor. This cursor, you take it to applications and press the left key of the mouse. You will suddenly see a menu. It will have accessories, education, games, graphics. Please avoid this during the lab timings. Internet, office, programming, whatever, you go to accessories. In the accessories, you see so many things here. Out of these so many things, the terminal, this is the terminal. So, when you press this, see what happens. You suddenly get, this is the terminal. This terminal is your interface to the operating system. Whatever you type here is read by the operating system DUMBO. And whatever operating system DUMBO wants to tell you, will be shown on this terminal. The dimension of this terminal can be modified. So, for example, I can take this screen and make it smaller. For example, I can move this window. I can move this window like this anyway. So, what you see is the background screen and you see a terminal here. In a nutshell, how did I get this terminal? I took the cursor on applications, looked at the accessories, looked at the terminal and press this. Oh, I got another terminal. What it means is that the operating system is capable of permitting me to open multiple terminals. These are all windows on the screen. Later on, we will see that this is a very exciting possibility. In one terminal, I can run one program. In another terminal, I can run another program. In third terminal, I can be doing something else. So, that is all possible in a single physical screen. But anyway, for the time being, let us remove this. Now, this is the terminal which permits me to interact with Mr. DUMBO as I said. You see how I am changing the size of the window. So, I can make it small, big, whatever way I want. Please note that the example that I was using was being typed by invoking a program called OpenOffice, which is a word processing program. It is almost like a text-intel program. So, I am using that online to type text which you can see. But I can store this as a file. I can give it a name and then I can store this as a file. So, this I am using as a sort of white board for you. Anyway, now we see something more about the files. Files are organized in directories because I may have multiple C programs. I would like to access all of them together. You would have multiple C programs. So, there is actually a hierarchy of directories that is created. What is a hierarchy? You will have a main directory in which you will have one, two, three, four sub-directories. Under each of those, you will have one, two, three, four, five other sub-directories. Under each of these directories or sub-directories, you can keep some files or you can keep additional directory. Ultimately, the smallest unit of information is file which has a name. When your usage account is created in our computer, the Ubuntu automatically creates some directories for you, whether you like it or not. Those are known as the default directories created by the system. Additionally, you can create as many directories as you want. This directory structure is visible whenever you want to open any file. I will show you the directory structure here. So, when you go to places for example, you can go to home folder. It is called a folder in Ubuntu. What I call directory is called a folder. So, instead of directory, sub-directories, you can imagine it is folder, sub-folder, etcetera. So, you press this home folder and you suddenly see this screen. Notice what it says. It says location is something slash dbphotag. dbphotag is my name. So, this is my home directory. Whenever you log in, you will go to some home directory. In that, there are so many directory – Apple iPhone photos, Autumn CS1012010, Ock Scripts final, SEBI. Notice that these are all names that I can use for either for files or for folders. Same names can be used for folders. So, let us… If I want to see what is there in this folder, the notation for the folder is like this. I go there and click. I press the left button of the mouse. I have to click twice. And suddenly what I see are the list of files which are inside. So, there is an ASC list, CS101, Computing, Environment, ODP. All of these are files which are inside. I can see these files differently by going to view and saying, I want to look at the files in the form of a list. So, when I say list, the files are seen like this. This is the name. This is the size of the file. I hope you can say what is KB. KB means kilobytes. So, bytes, kilobytes, megabytes, in that you will get the size. And it will say type. Notice this is called .txt file. I have named it. I have a choice of naming the file. There is no issue there. So, this is how files are handled. Now, we come back to our terminal. There are two terminals in fact. So, let us remove one terminal and keep only one. What you see is a dollar sign here. That dollar sign is a signature of operating system. Whenever you log in, this dollar sign will come. It is called a prompt. So, operating system is prompting you. Please give me some command. I will execute. So, whenever you are at the dollar sign, whatever you type is a command to the operating system. There are certain commands which deal with the file system. These commands are given here under elementary unique shell command. You remember I mentioned the shell. Shell is the interface between operating system and you. This dollar is the shell program. So, whatever command I give here will be executed by the operating system. For example, I want to know which directory I am currently in because I will have some access to the directory. I can say pwd. pwd is not public works department. It stands for print working directory. So, currently I am in some directory which is that directory. When I press enter, it will say this. Slash home slash db further. Slash home is my home directory under which I have created a directory called db further. Under that there could be many other directories and files. Currently I am here. What are the files inside this directory? I say ls. ls means list. Give me a list of all files. I press enter. I will see all these lists. So, it has template, test, trial.vp, trial.cpp, videos, expert, expert, no member, nine, etc. The other way of looking at it is places. You remember what we saw this when I go to home folder. Whatever I see here, actually I have a very large number of mess in my directory here. So, whatever you see, all of these are directories and some files are also there. Inside this, when I go to home directory, I will get some specific. Now I want to go to this 2011 CS101 directory for example. So, please note that once the operating system has finished the job, it will give me a dollar prompt again. So, the shell is at my disposal. It is like my servant. If I just press enter, saying go back, it won't go back. It will again come back with a dollar. Its job is to execute my commands. So, two commands we saw PWD and LS. But suppose I want to change directory. How can I change directory? If I want to find out whether a specific directory exists or not, I can say LS CS star. That means show me all the files, all the sub directories which start with the word CS. Star means anything after CS. When I do that, it shows me CS101, autumn 2011, 2012. It shows me greetings.cpp, which contains this. So, I have this directory. I can change to that directory by saying CD. CD means change directory. Currently I am in home db folder. Now I want to change it to something else. What I want to change is to, I want to change it to this CS101 dash autumn dash 2011 dash 12. This is the name of a directory. So, I press return. It doesn't say anything. But if I now say PWD, it will show me this directory. So, it has gone one level below. The levels are indicated by the slashes. Slash this, slash this, slash this means go down. Now I want to see what is inside. I will say LS. It shows me A dot out, greetings.cpp, greetings v2.cpp, tilde tilde. Notice that for every dot cpp, there is a tilde. The additional file that is created by the editor. I am not concerned. But since we are at it, let us look at an editor. If I want to invoke an editor, I will do it from the same place. How do I do that? I say g edit. Remember I gave you the name. g edit is the name of the editor program. When I say g edit, another window will come. This is the editor window. In this editor window I can start typing any text that I want to write. Usually I will use this to create my C++ program. So I will say, for example, hash include IO stream. As I type, it will appear here. You can see the cursor. Suppose I want to add, let me just type something. Notice that I made a typing mistake here. I said using blank NAM space. So what I can do? You can see the cursor that is moving. I can take the cursor to this NAM. I can place it here and press the left key. The cursor will move there. See the cursor was somewhere here earlier. The cursor can be moved by the arrow keys also. So I can use the arrow keys and move it. Now I want to add E here. I will just type E. I want to delete something. I press backspace. It will get deleted. It is so easy to edit text. When I do all this, I can store this as a program. So I can say save. It will show me where it is saving. In the DB folder, inside this folder, some unsaved document one is the default name that editor has given. I do not like it. So I will give it another name, try1.cpp. This is not a full program. But I have given it a name. And when I say save, notice this save button on the right, this program will be saved. Now you notice what it says that the top is try1.cpp because now it has a file. This file, when I complete it as a program, I can actually run the program. Now here I already have some programs written. I have just created a file try1, but let me open another program. See it has these many programs. Let me say greetings.cpp. I double click on this. The same editor window will open greetings.cpp. Notice that it has opened two files. One is try1.cpp. I take the cursor here and press the left key. I will see that file. If I go here and press, I will see the second file. You will agree that this is a complete program? Greetings.cpp. Sorry, come again. No. This is the C++ standard. GCC, the compiler that we use, uses this standard. Anyway, we will know. He pointed out that according to him, there is possibly some error here. But whether there is error or not, we do not know. In fact, let us make some deliberate error. Let us write only one slash here. C out less less. Instead of that, C out less. You agree that this is a definite error? I will save this now. And after saving, I want to run this program. So I will say stop. I will go to my terminal. I do list. I will see this program is there greetings.cpp. I want to compile and run the program. What is the name of the compiler that we are going to use? GCC is the GNU C compiler, but the specific command we give to compile C++ program is called C++. So we type C++. If I just press return, the major Dumbo operating system comes back saying, you are not specified any file. You say compile, but what do I compile? So I have to type here C++ blank and I have to give the name of the file. What was the name of the file? Greetings.cpp. So when I say C++.greetings.cpp, it has given me these errors. No match for operator less than in something-something. You see for one simple error, how much that compiler is shouting at me. These messages are not given by operating system. These messages are given by the compiler. So what the operating system does? It invokes the compiler says, you run and whatever error messages are there, indicate it to the user, but when you finish, give the control back to me. And when the compiler gives control back to operating system, it throws me these lower. Now I can see these messages. I know there is some error. I will again say g edit. I will again go to that window. Now everything else is gone. So I have to open that file. I open this file again. Greetings.cpp. Now I see there is a mistake here. I correct that mistake. So I take the cursor down here, like this, wherever I want, by arrow keys or by mouse and putting it here, I will say this and I will now save. The name has already been given. So it will not ask me for the name. It will save the file. After I save it, I can close it. Now I come back here and I again want to give the same command. What was that command? C++, something, something. Now there is an interesting feature that operating system gives me. That operating system shell tells me that, look, if you want to execute a command which you have already given earlier, you can press the up or down arrow keys and I will keep showing you those commands. You can execute any one. So I press the up arrow key here. You remember g edit was the command I just gave? I press the arrow key once again. I get this command. So this is a shortcut. I don't have to type again. If I have given a command earlier, I use the arrow key, get that command. I still have to press and enter. The operating system shell does not know which command I want to enter. When I press enter, it will now execute the compiler and compiler will translate the program. When it translates the program, it does not say anything. It just gives me a dollars. It has executed the compilation is done. But after compiler, how do I run the program? Do I say greetings.cpp? Because this is the program I want to run. I say this, what happens? Sorry. It says permission denied. Mr. Dumbo finds out that this was a C++ program. This is not a machine-read, a machine-executable program. Dumbo cannot execute any program directly in C++ or whatever. It has to execute program which has been translated. The translated program is kept in a special file. This special file is called a.out. It is an output file created by the compiler and to refer to this file, we have to type against the dollar prompt that we see .slash a.out. I will leave it to you to figure out why do I have to say .slash. It is not easy. You read some material on the file system and I will explain it to you in the next week in one of the lectures after you have completed the first class. But this is for the time being just understand that by default the operating system is looking at some place for this a.out. It will not find that place unless you specifically tell that place. . means the current directory. . slash a.out means the a.out file which is in the current directory. That is the meaning of it. When I give this command, not here. This is the word processor. Where do I give this command? In my shell. So here is my shell. Now I say a.out. It worked. Let me try to give .slash a.out. This also worked. What it means is in my computer I have set environment variables such that I do not have to say .slash. But you may have to say .slash a.out if just saying a.out creates a problem. You see that the program is executed. Is this program executed correctly? Of course. Whatever we have written the computer has done. But why am I getting hello blank word nothing. How blank are you? Question mark. And my dollar has come immediately after that. I would like these messages to come in different lines. This is not happening because we did not tell the computer in our C++ program to insert new lines after the messages. It will not do even that on its own. So we will edit that program again and correct it. And here is another trick that I can do. So far we saw whenever I say g edit I would go to the editor window. But I had to close the editor window to come back here again. How nice it would be if I can see the program that I am editing. I save it there. But without moving away without moving that screen out of my side I can come to the terminal window execute the program. While the execution errors come I should be able to see what that program was. I can move to the editor again. That means what I want to keep the editor window as well as terminal active. If I just say g edit the terminal will disappear only editor will come. Unless I close the editor I will not go to the terminal window again. To keep both of them whenever I give a command g edit let us say I give a blank and I put an ampersand here. This g edit and in plain English means that Baba you run the editor but run it in addition to this terminal. Keep the terminal as it is. So give me a dollar prompt here so that I can do something else. Simultaneously open a window for me. When I press return here you will see some interesting thing happening. See this editor window has come but the terminal window is still there. Notice what has happened in the terminal window. When I say g edit and it says some number 1 it says 5397. Actually the operating system Dumbo is telling me through the shell that look mister you asked me to run an editor so I am running it. I have internally given it a process number 5397. It is running there somewhere else. However if you want to give any more commands I am at your service. So now I can see both of them here and I can switch between them by simply moving the cursor. Let me open this greetings.cpp. This is my 5. There is a command in C++ called end L that is end of line. If I insert that as an additional output this is capable of showing me different lines. So if I save this notice that this program is still there. Now I come to the terminal. Here was my terminal. How do I compile that program up arrow keys twice, twice, four times, five times. It has compiled again run it. See now the results are better. I can write any types of programs, any computations I want to do. Let us quickly execute a program for adding numbers. How do I prepare a program for adding numbers? Should I start typing everything from the beginning? That will be stupid. Since I am an editor I can modify this program itself so that I do not have to write those lines include IO stream, using namespace etc etc again and again. So what I will do? I will do some cheating. I will not say save. I will go to the file and I will say save as and instead of greetings I will change this to add numbers. Of course, just by giving it a file name add numbers the program does not change. So I will now edit it here. So I will say a simple program. I will edit this add numbers. Then inside this I have to define let us say I want to add two numbers. What do I have to write here? In let us say a comma b semicolon. Now instead of saying hello word I will say give input numbers. Now let us see the fun. After all these mistakes are likely to happen. Now I will say see in. I have written this program. In a hurry I can see I have made two mistakes. One is that I have not declared see. The second is I have not put double quotations in this. But this is the beauty. While writing a program I may make such mistakes. So I save this. I have to save it because this is still on my terminal here. When I save it will be saved to add numbers.cpp. I go here and I now want to run c++ compiler c++. What I want to say? Now that name is very long. If I just type some add for example and press tab just one key it will expand it. Provided there is only one name by that. So it was add numbers 2.cpp add numbers 3.cpp it will get confused. But unique name is automatically. I compile it. Now you see the error messages. In function int man give was not declared in this code. Please note we have said what? See out give values something something. It thinks give is the name of a location and says you did not declare it. So it is not giving me the right error. Then it says expected semicolon before input and then error c was not declared in this code which is correct. Now without changing again saying g added I simply take the cursor to this window come here and start editing I say ah c is not here. Now before I start typing I would like you to see something at the top. You remember this add numbers.cpp is the name of the file it shows what that file is. But see what happens the moment I start changing it. I say comma c. Now it has put a star here before the name. This star means that this file has changed and unless I say save it will not have any impact on my compilations. So this is a reminder anyway. So this was one thing I wanted to do. What was the other thing? I want to put this here. Save it double code and I want to put this in. Now this looks alright. I will save it. I will go here and again I will use the plus arrow up arrow key to get c plus plus add number. This time it compiles. What do I execute? You will have to use that dot slash in most of your machines because that environment may not be set. I will let let one explain how that environment will be set or your TA can tell you that. But anyway when I do that see what happens. Give input numbers. So you see my c plus plus number has executed the first instruction. I give two numbers 23 let us say blank blank blank blank blank 56. I can give one blank and 56. A blank separates out multiple values on an input line. So when I press value of sum is 79. Notice there is still one problem. It is showing correctly value of some ease but there is no blank between ease and 79. Is that a decent way of seeing the output? No. So very quickly I go to my editor. I see what is the problem. The double code comes here. There is no space here and this c plus plus stupidly prints the value of c starting immediately after the last character that was printed. So just before ease I will just say here colon and space space. So that means the value will appear slightly displaced away. I save this. I execute the program. I give the value 23 56. Nothing has happened. I change the program but I did not compile it again. So it is running the same old executable file. So I will again have to compile it. And now when I run a dot out and now I give values. Notice that I can give the value of one at a time. I give 23 and then press return. I give 56. Since it is expecting two input values still I give two values. It will not leave me. Value of sum is 7. This is the main thing that you have to do in the lab compiling and running programs. There are several other things that you are required to do. You are required to go to the Moodle. You are required to create backups. You are required to upload files onto the Moodle links. You will have to study how Moodle links work. Lot of this is discovery. You will see that there are a lot many more things to be done in the lab. I have tried to tell you the basics of the computing environment. There is a lot more to be discovered. The point that I am trying to make now is that hence forward your learning such as learning in the laboratory will be a supervised learning but essentially learning on your own and it will be collaborative learning. I do not think you have learnt like this in your past school or college. So far everything that you have learnt is somebody gives a lecture explains you solve some problems correct wrong somebody tells you and then you proceed. That is not how the life works in reality. Most of the time you have to discover things yourself. You have to experiment. You have to make mistakes and you have to learn. Many times you have to ask somebody nearby saying what does this mean? How do I do that etc. Many times you have to discuss with friends. Somebody comes up with a good idea. Somebody for example pressing this arrow key to get the previous commands. Even I did not know it when I started using Ubuntu first but a colleague of mine, another colleague of mine told me Professor why are you typing this command again and again. Just press the arrow key you will get the previous command. So this is the power of collaborative learning. While there are occasions in this course where you will be required to submit individual assignments, those you must attempt on your own without anybody's help. In almost all other cases you are encouraged to do this collaborative learning all the best.