 Good evening all. Our project is clicker 180 application. So before going in detail, we should know what is clicker actually. Clicker is a student response system. This is the basic idea of Mr. Pataksar and in this student response system, what happens is the responses from the students will be returned to the instructor instantly so that the teacher come to know the performance of the students very easily. This is our team Ajitha and Gagan, Myself Gagan, Love, Prudhvi, Robert, Sriyatha and Swetha. This is our team who guided us to complete this project. What is clicker? As I said clicker is in a student response system where the students can submit their responses and instantly the instructor gets the things and he will easily get the scores also. Before going to them, we can explain the history of the clicker. Initially what happened is before this Akash has come, the clicker team in this IIT Bombay and some interns designed a device. You can see in this, the don image, we can see this is the size of this mic only. Using that device, you can press the button, you can send the responses to the instructor and the next version, you can see the topmost image. They have added extra features to the device like digital display and keypad so that he will enter the things and he can send the response. And what happens last time in the design and app, we can call it as web app because what happens is when you enter user ID or URL, it invokes a browser and it connects to a server and criteria starts. This time we are going to use a native app. Initially it question arises, why native? Because these are the things we can call it as. What happened is last time web app, it's totally browser dependent. Suppose the functionality may be different if you use a different browser instead of Chrome, you can use Firefox. It may create problems sometimes. And navigation during quiz, what happened last time is, suppose I am writing a quiz, I can go back. That is a somewhat drawback of the thing. And what happens last time, this is a client request thing, it will send a total file including CSS, HTML, JavaScript code. But what happens is a native app, no need to send these things because layout already will be there in app. So we need to send only JSON or XML. And what we analyzed in the version 3 is, the size of the file is very much large. It's nearly more than 3MB kind of thing. The time to download is very large because of file is very large. So what's new in our version? Clicker version 4 we can call it as. The interesting thing we have implemented is the rest. It's a technology implemented to connect. And initially we studied about the rest and implemented successfully. The beauty of the rest is it will not maintain any HTTP connection in between. So last time what happens is when a student logs in thing, the station is created and it will be maintained till it logs. So this is the burden on the server. And the file size is bigger. So every time it will send packets, it will busy up the router or access point. So in this version we overcome those kind of things. And we have included extra kind of thing, random questions and options so that student cannot be able to copy a thing. And time synchronization, we have followed that random batch algorithm that is inspired from the M-Tech student Mr. Parmentra. He has given an idea to batch the thing to increase the efficiency of router and access point kind of thing. And this is the basic architecture that we are using. Simple, server and clients. We can see that clients are assuming as the tablets and the server is the system or the instructor machine which he uses. Intermediate between them through connectivity is Wi-Fi. This is a flow of functionality. We will summarize how the app will function in a rough manner. Okay, first is the log screen. The student will enter the student ID and URL and he will press on the connect. This connect button will invoke, I mean, it will switch on the Wi-Fi in the client and it will try to authenticate. It will connect to server and check for the user entry kind of thing, user ID and MAC address. What we are doing when we connect the thing, it will take a user ID as well as MAC address too. These things will be linked and stored in the database. If the thing is correct, I mean, he's authenticated to log into Min. Switch to another page. It will list the courses he has registered previously. So he has to, I mean, if want to, he has to be registered before to any other course. So you can see in the last image, the student is registered with three courses. I mean, they are not visible. You can see in the demo also. The student will select the specific course he is in. Then home page, we can find, suppose if the instructor launches a quiz, you can, he press on the button, quiz. And it sends a request to quiz. It sends a request server and it downloads a quiz JSON. You can pass them, you can see in the quiz, conduct the quiz after the thing. So we have included two cases there. Either student can submit manually or otherwise, time note also. So if the time note thing, it will directly pass and correct answers and answered correctly or wrongly. And if he is submitted manually, he has to wait for some time to end the quiz. Synchronization. One of the important, I mean, what we consider is important because what is our objective to include this synchronization is every student has to start the quiz at the same time and that is what our intention is. So to solve this, we have included two times. That is launch time, another one is access time. Launch time is the time when the quiz is going to be displayed in the students' tablet. The time when it's going to be displayed on the tablet and that is equal to the server time when the instruction launches a quiz plus wait time. The wait time is given by this instructor so that the student can be downloaded the quiz. In that, we have access time is the time when the client's request hits a server. And there are three cases we can save. The first case is launch time greater than access time. This is the logic we have implemented too. So I will go first. Launch time greater than access time. So launch time is greater than means there are some more time to display the quiz underneath. So it will wait for that time. And if equal to thing, it will directly quiz. Quiz will be displayed. Launch time minus access time means what? Means student can wait. If the latecomers are there, it will get the less duration on time. So that's what quiz time minus access time. I will hand over the lecture. Good evening all. Coming to the architecture we have used in our project. That is REST. REST is representational state transfer. The key points of REST is stateless. REST is nothing but it simply follows the HTTP protocols. Simply that its clients and server are going to connect via request. So stateless in the sense that each request is independent of the previous request. So there is no session stored on the server side. So there is no information required. So each request we have to require total information to clarify what the request is going. And the second is a scalability. Since a session is not stored in server side, so every resources server side is able to free the resource quickly and the connection in REST, the connection is not persistent. There is no life connection between the client and server. Next coming to the architecture, there are number of tablets they are going to use, going to REST web resources. We have used jersey as API. The jersey is reference implementation of REST web services. If any client request come to the server, it is going through the jersey API. It has a by default servlet that dispatch the request to particular web resource pages. Web resource pages have directive structure and that consists of many web resource classes and their methods. We have used quiz services, call, result, and raise hand. According to the URL, that request passes through the jersey and jersey contains the starting information where the web resource is contained. And we have Jax REST. Jax REST use annotation. According to the annotation, different methods are going to be called. Suppose there is a request for quiz. According to that URL, the quiz is going to be accessed and we have used in quiz method, we have used representation. That is representation is what the document is going to transfer between the clients and server. We have used JSON. JSON is very small in size and easily pass. At back end, we have used MySQL database and JSP as a coding. So, that is going to execute and do the work of back end. Coming to the next slide, we are going to handle Robert. Good evening everybody. I am Robert from Andhra Sothkal and I am going to talk about something like randomization in our project. So, what we did is very... I like this actually, our features. Random question and random options. So, we are displaying random question and random options so that people could not be able to copy the things. So, even... I am sure it is not... I mean many people could be getting the same order of the question. It could be possible. But even if the people are getting the same order of the question, they would not be getting the same order of the option also. So, even I consider like... they are... order of questions are correct. Order of options are same. So, the possibility of sitting the both person to each other is almost list. So, this is the one feature we added. So, I would like to talk about how I did this. So, this is the array. The left side I can... from my left side. This is the array. So, the value of the index... value of the particular index is same. The value is same as the index actually. So, for 0, the index... value of that array is 0. For 1 is 1. 2 is 2. So, what I did, I just suffered that value. So, after suffering, what I got is like for 0, I am getting 3 value. For index 1, I got 5. For 2, I got 7. So, in this way, if I am going to display the question number first. So, it won't be... it will be actually third question, not the actual first question. So, in this way, I was able to print the order... random questions. So, the same logic I applied for the options also. So, they are also... I am doing the same thing for like four options are there. So, I shuffle the arrays and display it in the tablets. So, I could achieve this and it's working perfectly. So, next slide. I would like to talk about the challenges what we faced. Challenges... The first challenge we faced was web servers and the Android application. The communication between the web servers and the Android application. We went through a lot of links and some research papers. But finally, we could implement with the rest technology what my friend, that was already told. So, in that way, we overcome with the first challenge. The second challenge was to synchronization between app and the server activity. The same thing what my friend said. Like synchronization, if a person comes after the quiz has been started. So, he should be getting the last time, right? So, that's the thing we implemented. Third one is keeping track of the responses. So, there are so many people, so many random options, random questions. So, keeping track of those things were a little bit difficult. So, somehow we did this. And the third is like database schema. So, the database schema was to design that also, it was also very tough job. So, the next one is random question, displaying random questions and options. So, I like this actually because I did this. It was a little bit interesting. So, somehow I did this. I got some algorithm. I implemented this. After that last one is random batch algorithm. From some empty guy, empty people, we got this idea how to implement. What is the idea? So, we implemented that idea. Now, we are successfully able to overcome all these challenges. Next are these statistics we conducted some experiment. So, these are the statistics. Most of the things we got almost 100 percent. It was not exactly 100, but almost 100 percent. So, we are through two types of IPK we installed. One is throughout Wi-Fi and one is automatic switching on and switching off. So, what happens in automatic switching on and switching off? Whenever the communication between server and client is required, then only we are going to switch on the server. So, switch on the Wi-Fi automatically. And this was the first application. And the second application was throughout the Wi-Fi. Wi-Fi will be switched off throughout the application as long as application is running. So, these were the two applications and these are the statistics. Next slide. Okay. Okay. After this, I would like to mention what we learned from our project. Some project, what we learned is like Android and the rest technology and the some JSP and some algorithm we developed so that we can properly do the project. And apart from this, this much we learned from this project. I would like to hand over the rest of the presentation to my friend Ajitha. Okay. So, we included this random batch algorithm because to improve scalability because if the router capacity is less than the number of clients, then we need to scale it up. So, we included random batch algorithm for every client to connect to the server. So, any request the client sends to the server, like quiz, request, response or poll request, response for result, requesting the result, every request to the server. In the client side itself, we calculate number of batches. That is the number of students in that course divided by 25. We will maintain that throughout our app on the client side. That is n and random number is generated from 1 to n the first time. The next time n is decremented by 1 and then generated, I mean 1 to n minus 1, random number is generated. So, first time if the random number is 1 to 4, the next time random number will be 1 to 3. Till the user, I mean the client gets 1. If the random number is 1, they will switch on the Wi-Fi and obtain an IP address and the data is sent to the server. After the data is sent to the server, the server will send an acknowledgement to the client. If the acknowledgement is 1, then we are sure that our request or response has reached the server. So, we have had this sending of request or response to the maximum of 4 times till we have an acknowledgement. This is to ensure that our data is received at the server end. Our future works. Audio-video interaction which has been done by the other teams is not implemented on the native app. So, that can be done and images for questions can be done because for now it is only textual questions and multi-language support can be added at the server side. The server side, the instructor enters the course ID and goes to the quiz module. Connect to the server. On the client side, they will enter student ID and then server IP because our database is like checking it with the MAC address and with the student ID. MAC address is taken automatically from the tablet and after logging in, they will get a list of courses and if they select a course, it will be redirected to the home page which has these modules quiz, poll, result and raise hand. Raise hand is to ask questions. Poll is to give any answer. The instructor asks something like we have had three types of questions, multi-choice questions and then radio button questions like two of all's questions or something like that and then text box questions. This will be in a quiz JSON file sent from the server so that the overhead of sending files will be very less. Our file size will be very less and manuals are met so it will be redirected to this page till the complete time and this is the result page. What option he has selected and all those and the wrong answer will be displayed in red for the user to have a clear idea and responses can be viewed on the server side. How many downloads of the quiz and how many uploads of the result? Previous results can be seen from the result module and also it can be downloaded to a PDF and poll option is like when a server has some question like do you want to have a class tomorrow or something like that, then the options I mean responses can be collected from the clients. The same process as we implemented in the quiz the same option will be like in poll also. The same process. Raise hand is like like other teams said the client can ask any doubts and it will be posted on to the server database and the instructor can view those doubts. So this is something which is a marked improvement on our earlier efforts. Only one thing saddened me. You have not acknowledged the input of the MTech student. Nowhere in the report the inputs that you got from the MTech student are acknowledged. We have implemented two APKs sir like throughout Wi-Fi and Wi-Fi on and off. The demo we showed now includes the random batch algorithm which is done by MTech students which we have acknowledged in the PPD. No, no, no, but that's not fair. You have not, see what happens is one year later if somebody reads this report it would imply that when you did this project you were not even aware of the alternative. If that is the alternative which IIT ultimately takes forward you will get zero credit for any contribution. So write an annexure of few pages saying this is the alternate method and quote now that he has MTech project reported itself is ready you can quote that report. Now what is your judgment if I want to scale it up to 500 tablets in a classroom or 250 tablets in a classroom? Actually the Wi-Fi on and off time only takes much time so if we increase that time the batch time the time the batches has to wait for the Wi-Fi on and off if we increase that time it can be scalable until 500 tablets also but we should increase the time each batch has to wait and There is, by the way all of you are familiar with the clicker app I have been talking about it and we propose to use it one of the fundamental problems of this entire quiz conducting exercise whether it is online on desktops or clicker devices is the sadly mistaken notion of all testers that a fixed time 1 minute, 2 minutes, 3 minutes is so vital in life that everything else can be sacrificed let me tell you that is the stupidest way of testing if somebody takes slightly longer and if somebody does it slightly faster the difference in the knowledge of the two is zero but during the test the person who does things faster gets enormously extracurated that happens in life also you cannot for example I cannot say that like Einstein I will take about 10 hours to answer this quiz because we are not Einstein but the fact of life is that this penchant for 1 minute, 2 minutes, 3 minutes etc and even in the demo the time that is given is completely inadequate for the physical users to enter all the answers properly so I am reminded of a demo which I remember I was in Mao military headquarters and they had run a simulation of tank battle on a TDC 316 computer and one officer was showing that demonstration it actually gave a scenario that there are some enemy tanks from this side and you have this tank unit at this place so how would you counter attack and there were three options A, B, C etc and the person being quiz has to think about the right option and press the right option the major general who was actually an extremely well known tank commander of the Indian army could figure out the solution even before the question was raised by seeing the and he says of course B and then he was struggling with the keyboard to find out the letter B because he had never climbed in his life anything he took several seconds and typed B and the response was please get yourself medically checked the officer who wrote that simulation was promptly transferred to an unknown location the point I am making is that while time is important and all of us are familiar with this 3 hour final exam, 2 hour mid-same test, 1 hour this 1 minute quiz etc etc all of you I would like to think about it how much time versus how vital is to give every individual sufficient time as per his or her own speed of thinking not inordinately last time but as per speed of thinking what would produce the better judgment of a person's understanding now this is something that we are seriously working on basically this extends this kind of quizzing and testing extends the established educational practice which talks about fixed time variable learning say the classes are 1 hour long 40 lectures, 30 lectures, 20 lectures what I understand in those 20 lectures may not be same as what Professor Avina Shouti understands of course he didn't attend lectures to understand him but that's a different story he understood the lectures only when his colleagues took their long notebooks 2 days before the exam to ask him what this means and he explained to them after reading their notebooks but that is exceptional the point is that if there are some differences not extraordinary differences and some differences will exist does the education system give equal opportunity for every individual based on every individual's speed and what I talk about lecture time fix tutorial time fix, semester time fix, year fix extends to testing so sorry for taking your time but this is something which all of us need to be concerned about using MOOCs we hope to completely change this paradigm you had seen earlier an adaptive testing mechanism where the adaptive testing will permit individuals to make up, understand something else and then sort of go ahead in IIT we do these kind of experiments I don't know whether I shared this with you or not but it's worth noting the first year programming course in the very first month the students who come to IIT they are all through JEE they are all smart people and IIT Bombay gets the best of breed but there are several students who have studied in their native languages are not good in understanding English for first 2 weeks or so they are completely lost because the lectures are in English so what we find is that in the first test many perform miserably some are weak in programming but some are weak because they could not understand the lectures so the experimental basis I did it for 3 years and it proved to be successful namely that I would give a make up test to all those people who have scored less than 40% marks why 40% because 40% was announced as the passing percentage in my course now when you give this re-test again and you give this after sufficient times so that people who understood everything the syllabus would be same as that of the first year very obviously people will score better now what happens if somebody scores 100 on 100 the person who got only 42 in the actual test would he not lose so the rule that I made is that you can score as much as you want but only up to 40% will be considered as a replacement of your poor test score but believe me that helped people understand and learn much more now this is some kind of an adaptive testing I digress but the objective of this entire clicker application is that rather than to wait for the first test to find out who has not understood anything I understand it in every lecture by conducting a quiz so there has to be a compromise I can't conduct a quiz for 10 minutes each to give everybody time but it should not be another extreme it says 1 minute or 2 minutes or something like that so pedagogically even in the demonstration and you should all know this because you will be demonstrating different things in life when you demonstrate if there is a user interaction first of all the demonstration strings that you use should be valid strings like they had put all valid questions you enter a string not enter ABCDFG for demonstration that string has to have a context if it is a name it should be name of person etc and second estimate the time required to quietly enter whatever things are to be entered by the user by doing a pre-hand demo with people who are not familiar with that you would have tested all of these amongst yourselves now you know all the questions you know the software so it takes you probably only half the time to answer the correct question but what you should do is you should pick up the other people so remember this when you do a demo for user interaction do a demo with friends of yours who are not involved with that find out how long they take double that time or at least multiply it by one and a half and set that time as your demo time because the demo is being shown to completely different and new people sorry for digression but good work thank you so much and please provide that annex shell let's give them a big hand