 Our next presentation has a very interesting name. Won't you agree, Kethi? Yes, indeed, Apur. Its name is Kodzilla, the friendly auto grader. And it is under the mentorship of Prof. Avnash Aote. So we are all used to being tested on programming courses through interpreting the results of the complex code written by the faculty or through multiple choices questions. Now, here is an opportunity to get evaluated on what we learn by writing programs. So, can we please have them on stage? I'm Monica Jain and here are my team members, Prabhatakarwal, Neha Sangheneria, Manvi Mukharya. And we all have gathered here to present before you all Kodzilla, the friendly program grader. There's a very famous saying by Steve Jobs, that everyone should learn to program a computer because it teaches you how to think. So think, what can best assist you in learning to program? It's Kodzilla. I'm pleased to present before you Kodzilla, the friendly program grader which is going to revolutionize the way of learning. Initially, we used to read by big fat books and long tutorials, but we could not follow because we could not practice along. But here with Kodzilla, you can practice all the questions from the basics to the very advanced levels. The roadmap of our presentation goes like this. First, we will see the demo so that we can get acquainted with the website. Then we'll see what is Kodzilla, the different types of questions it provides. Then we'll see a walkthrough, features, learnings and future scopes. Friends, the programmers of tomorrow are like the wizards of the future. You're going to look like you have magic powers, which is different from somebody else. So let's boost your powers by having a demo by solving the question on Kodzilla. I'll invite all of you to solve a question along with us. So friends, here's a question for you. The question basically is, the user enters a sequence of 1's and 0's and whenever the user enters a number other than 1 and 0, the loop will terminate and the sequence you get, the program has to calculate the sequence, the occurrence of this sequence 1, 0, 1, 0. Okay, you can go through the question and help us in solving the question. Do you want me to read the question? I think you got the question. You have to just complete the program. The question is, the user is going to enter 1's and 0's in a sequence and whenever he enters a number other than 1 and 0, the loop will terminate and the sequence you get, you have to calculate the occurrence of the sequence 1, 0, 1, 0 in it. So this is half written, you have to complete the program. Basically, Preflin counts the length of the substring of the 1, 0, 1, 0 that you have got. Suppose you have not got anything, it will be 0, you get 1, it will be 1, you get 1, 0, it will be 2, you get 1, 0, 1, it will be 3 and if you get 1, 0, 1, 0, it will be 4. So that's why it has been written that way. So first we see if we have read an A, if it's 0, we are switching over Preflin. So now we have to fill what should be the cases such that it prints the total count of the sequence 1, 0, 1, 0 in the input sequence. I'll like you to participate. That is what you have to update to complete the program. There are more blanks. You wanted to zoom in. Anyone for the first blank? This is easy. I fill this one for you because we have not seen our Preflin is 0. We have seen a 0, so our sequence doesn't start with 0. So we don't do anything. So just 9 blanks. Just 9 blanks. Now can you guess the next blank? Preflin plus plus. I'll fill this one. It will show you because you are not interested then. You break. Anyone? Preflin 0 break. Correct. The next blank anyone? Yes. What was that sound of the tuna? Next. Next blank. No, this blank. It will just show you now how we can solve A0. So now we can submit. There is a Dichaten. So here we get 100 percent correct. There were two test cases both which you have got correct. Now if you want to compile, we can compile. And we get the here. Compilation successful. Yes sir, if there is another solution it will be accepted. Because basically just compiling executing their input cases. So this is a program. So yes, like without Preflin equals to 2. So because if you have to solve this way, sometimes we need to understand others code also. That's why this code has been given an incomplete form. So that you can understand what other wants to do and write. Just writing your own code doesn't let you because half of the time we have to see others code then only we learn. That's why writing always our own code is not good. That's why this is an example where the teacher can present the student with half written code so that he can fill and understand and fill the rest part of the code. So you can create question also. That will be showing you just now. This is just a demo. So now we move to the presentation. As we saw in the demo, this is a programming website where you can master any language from very basics to any advanced level. Here you can find questions to test your basic knowledge like syntax, like declarations and all. And very complex questions can also be there here. And the uniqueness about Codzilla is basically you can convert any question which exists to this autograder format. That is the uniqueness. Any question which you have can be converted into a format which can be hosted on our website. Also here you can create a question as well as solve a question. So at the same time you can act as a teacher, you can introduce questions, you can create questions in your private bank or public bank, and you can also solve the questions. The different types of questions which are present on Codzilla are there are total six types. First is the compile with no warning, then compile with no error, executing with return value, executing with standard output, executing with standard error, executing with standard input and output. Let's see the description of all these six types. Okay, so the first type is compile with no warning. In such type of questions, basically we test whether you know how to declare different types of data types or not. And the code is just compiled on very high level warning. So your syntax has to be perfectly correct so that you get full marks. Otherwise your score will be zero. Next type is compile with no error. Such type of questions are compiled, but they are not compiled with high level warning. So in such type of questions, warnings are allowed. So if even your program generates some warning, you will be getting correct score. The next type is executing with return value. In such type of questions, the teacher gives the students a piece of code to write and basically in the question only the teacher has to see whether the answer of the student is correct or not and accordingly he returns a value from his program, which is zero for a correct answer and one for wrong. Now the next three type of questions will be explained by Mangi. This type is executing with standard output. Here teacher will provide a code or he will ask the student to write a piece of code and student have to validate the provided code and should print the standard error stream which will contain the error provided by the code. So here the teacher should provide the error in the output file or he can provide as a text output. This six type is executing with standard input and output file. Here teacher will himself provide the input cases and output test cases and he can also specify the percentage marks for each of the test pieces. The teacher can also specify the percentage marks for each of the test cases and also the student can write a program or can write a piece of code and then he will be able to test whether the particular test case is satisfied or not. This is the ER diagram. Basically this shows the scheme of our database. Here most importantly we have four tables like users, questions, submissions and topics. Now each of the user can create a question and has submissions. Now each question will have question ID and will have many submissions and each question will belong to several topics. Now these topic IDs will also be stored in the question table so basically there is a relationship between each and every table and we can join many tables and query out the results. The various features of our website which are distinctly done are it covers all kind of questions. As I told previously also the uniqueness of Godzilla is basically any question can be converted to this Godzilla format. So the most significant feature is it covers all kinds of questions. Next you can compile and run with custom inputs. You can provide your test cases and you can check it. Then there is the facility of partial grading. Depending upon how many test cases you pass the partial grading is done. Also you can view your submissions and then you can create questions with the upload facility. You can also upload the files while creating questions. And also another distinct feature is the topic free which you will see in the walkthrough of the website. Okay now we have a walkthrough of our site so we will create a question for you and show you how you can create a question on Godzilla. We will be creating this question now. We can see like many times these questions are set in all programming online courses. But here we have to give the options which give the users the chance to cheat and guess. But here we are asking him for a direct answer. Suppose like here if anyone wants to guess the answer if I write it and then we will show how we can create this question very easily using our auto grader. So you can see this is the answer and we can submit if we got 100 marks. And if the user submits anything else we got a round answer. Now we will go to create question. Now this is how we can create a question on our site. So here first we select whether the question belongs to public or private and then we select the topics from this topic free. I think so there is a bug. So here we will show how we can create question. So we are selecting data type topic. Then we go next. Then this question it is here we select whether which type of question we want. I am selecting executing with the turn value and we can select the complexity because the score of the question depends what complexity you use. I am selecting easy. And let us use a title. And here is a description which is optional. So we go next. Here is the creator's view where the teacher can write his question. And this is the student's view which what the student will see. Now I have a file which I will use to write this. This is the code we just saw. We can paste it here. Now because we want this part to be visible to the student we make it visible. And this is to be invisible. We do not want to see him that we have commented this. See as we are doing it this student section is being updated as we are doing this. So next we want to get the answer from the students. So we make this part invisible. Do not show him this part also. This part we make editable. This is how with the status. This is how the student section now looks. This is what we saw now. So this is how we can create question using this tool. I can submit a student section. So that is when the teacher is creating the question then I will zoom out. So this is so that he can see the both and decide like what is to be done. No there is a user login not student teacher login. Anybody can create question anybody can solve question. So that we will stop. This is what the student says. One thing we will stop. Anybody can create a question. This right hand side is what the student says. No sir. No sir. We can show. We now we submit this. No but that is interesting because that is one thing we will consider. But if you are a student who is smart enough to write and see the course and answer the question probably you can answer it directly. If you are smarter than the student. Sir but there is no sir we can see this. This is what the student sees. Sir there is no answer. There is only the part that is visible is only visible. All part has been removed. So now we will show another type of question which will answer this time. Many times we see this convert to this and hexadecimal and to binary and decimal to hexadecimal. But then most of the times we get an option and again there is a guess work. So here we can use this tool to very easily create. So we can we have made it visible and not non editable 0x. So the student is bound to write a hexadecimal value. Anybody can guess the answer for the question. 63 let's see if you are correct. 63. This is? It's a simple question. 1 0 0 8. Decimal. Decimal to hexadecimal. Interesting. 36. 36. Let's see 64. So basically it's for practice. So if we cheat it's upon you. Wrong answer. 3a 0. 3a 0. It's the correct answer. Wow. So now we can see my submissions also. This is how user can see what are your summations. Anyone? And here is the all summations. Here what all the people who have submitted the question for this question will be visible. Then. So this is the system server time. Server time. And then we have a leaderboard. Which shows all users. And their ranks according to their scores. Highest rank. Because I have tested. So now we are moving to presentation. And this home page. This is our home page. So do visit our site and now have a move back to presentation. As of now we have C. Can be extended to all other languages. C plus plus is very easy. C C plus plus we have. And it will be extending it to Java. We will cover. We can cover any compilable language. Because we are using the compiler to test. Each question. Each question is a complete program. We just hide pieces of it. And show pieces of it. And then we compile. The language is okay. Interpreter I don't want to even look at. We will start with about 400 questions at least in C. Which I can guarantee. I am going to do that. These guys have created some 1890. Right? All of Dr. Fadak's question will come there. Unless you have said it is copyright. In a better format. Because for example what I ask them to take most of the questions were Dr. Fadak's questions by the way. That 1008 the question that was given in EDX. Was some number. What is the hexadecimal octal and binary. And then you gave four multiple choices. So even if I solve one I can do it. If I get the binary equivalent I don't have to get the octal and this thing. Because only one of the four is correct. The same question now I can ask by saying for this decimal number give me a binary equivalent give me octal equivalent give me hexadecimal equivalent. Instead of giving one mark for all three I can give one one one three months. Partial grading is possible. No it will take it. You can give zero zero zero three of zero also. It will take it because at the back end the way it is done is the integer i equal to which is hidden. So whatever you type 0x is there. Whatever you type there there is a semicolon which is hidden. Then the if the compiler fails you get zero. I don't care. No you are not correct. Because you accelerate the integer limit. Your program has to compile. So basically whatever you write the reason why we have given zero axis reason we have given zero axis because you should not do that. Everything that compiles for any anything which requires most of the thing will be write a function. Most of the code will be write a function. Almost all the program which I will create will have a correct function which will be hidden because there is something called static in C. You can't write all correct function and give me the answer because it is static. And it is after that. So GCC. All right. Most of the time I do not want to use standard input output. But about 10 percent of the cases will have standard input output. Most of your whatever you are given in EDX you keep writing write this, write this, write this and how many times this is written. I am not going to execute such programs at all. I will just show it to the user. But internally it will be slash, slash, slash, slash, slash. So there is no point in executing. All I will do is get you get you answer and check. If it is correct, if it is like a multiple choice question. So I don't have to execute that. The advantage is I really do not want any output kind of things. C in, C out want to avoid because all the questions that I create, I will create only in C. All the questions are valid for C programs. Except instead of the standard I have to do the other one. Java will come later that is certain. They have put Python there. I don't know why but I don't know whether I can do it. Whether the Python interpreter will allow me to take your input and tell me whether it is right or wrong. I can is probably simpler because my question can be simpler. Because it can interpret only that. For C I need to have a complete program to interpret. The most interesting thing they are not shown is that when you write a function before submission I will allow you to compile. You can correct your syntax errors. Then we will also allow you to give input in certain cases. If it is standard input, standard output that is the provision they have made. Where you can say I will give input and then type in whatever you want to give standard input and then you can test your program and find out what it produces. Is that right? Yes sir. I don't know. The test case. The tests are provided by that. That is only for the type. Type 6 question. No, but even for 4 and 5 5 will provide the output and error because there is no input. For the 6 types we will provide the input output files and then we can also set the weightage that he wants to give each test. For each test file you can have a weightage. For all those who went to the software quota software quota programming contest. That is what I told them they are working throughout the night. They could not get it to work. But my idea was that I should be able to do that complex contest using purely this. Because it is specifically you based on the it had a set of test files. Each test file had marks. But the problem is that some of the tests were creating standard error also. That is why there will be a failure. And most of the time I did not have output. The output code I gave them this is the test file and this is a log. So, I created log file. So, I may have to modify that a bit. But it can have any complex thing. Any programming can be done accordingly because it is so flexible. I can hide. I can hide. I can show you something just edit this. I just written a while thing where you just give the while loop and give the while condition that is all. Of course, I have done that all the time. And the interface is very very nice. You just open. No, we have. We have time out time. We have a time out of 2 minutes for each and but that is not like that we are monitoring the performance of an algorithm. I think we are talking about whether we are monitoring the performance of an algorithm. The performance is not being tested right now. So, the basic is being tested at the future which we have. What kind of malicious code you are talking about? The answer is right now secret. But we have taken care to see that not too much malicious things can be done. Obviously, you cannot stop malicious code. But to answer your correct question the sandboxing has not been done. Ask them to look at it. They do not have time. It will be done. But currently we have taken care. You start doing that. It will probably say what do you say? Most of the system come and say not allowed. What do you say? Not allowed means what? This is what you say. This is what you say. You should not say that. You should say no, no, no. You are trying something very bad. So, they do not know what you are checking. For malicious people you are not. For malicious entry you do not have to say what you are stopping. Just stop them. They think you are great. We have taken some care. Time out. Time out of two minutes. Sir, all this it will show there are some server problems. Then you can try it again. You will not get the responses the link fails. You have to submit again. Sir, the code is there. You just have to press submit. Because there are my submissions. So, if the link fails the submission has been done. If the link fails after the submission has been done. You can always see that in the my submission page. And you can then use the submission. What you have done. You can see what our learnings are. Teamwork, quality code, deadlines, sleeplessness and as the technical work. CSS, bootstrap, JavaScript, jQuery, Java, JSP and serverless. Next plan? I don't know. There is no there next plan. It is my side. Next plan is to ask Dr. Phadrak and professor Suprakthi to publish it on the EDX page. That is the next plan. By that time I will get C++ and CUP. Students can use it for practice. The next plan is that is why they had given a thing for public and private. The next plan is to actually support a private question. Because industry can also use it. To test their people. Their prank has to be private. It has to be owned by them. Similarly, for the quiz also, Ekashiksha had given a provision for that. Similarly, if you want to use it for the quiz module of Ekashiksha where the time thing is there, that also can be put five questions single time. Once I have the private thing done, we can extend it to actual faculty. Currently it is student centric. It is only for practice. It will start basically with all kinds of basic stuff. Not your complicated stuff I will take from you only. Exactly. You need simple things. Rather than looking at your code and what it does. For example, your complex code which you gave which I got very irritated with and showed it to them. I had code curve. Set up the thing. It was a control loop in which they had given a switch. Inside the switch is modifying the control loop variable and you are asking some n number of questions with one mark. I was told I am irritated. In that kind of question, I will ask the question and ask it what is the value of the variable at each iteration. That is what your show was. First iteration means this variable is the second iteration. Which case is done, which switch is done. Now I can ask him to fill it up. Ask him one mark question of what is the answer. I can force him to execute each iteration and ask him when it reaches this point what are the variables. Fill it up. I can grade him on that how many answers he has got correct. I see it as an absolute limitless extension. The reason why I kept saying this is the ultimate because there is nothing else you can do. Excuse me sir. That is the end of our presentation. Thank you for listening. Thank you all for the applause. Thank you. Thank you.