 Under the visionary of Professor Patak, recently IIT Bombay has got the responsibility of development of EDX platform for Indian population. Under this project, team has transferred content from EDX to Moodle and also EDX to EDX to enhance the process of e-learning. Now let's see what this internship has contributed to the EDX platform. Please come up guys. A very good morning to all of you. I am here Anand Solanki to give a presentation or a modification to EDX. These are my team mates. And this is Kripal Gaurav, this is Pushkar Narayan, this is Rajesh Sarkar, Harsh Sharma, Divyanshu Goyal and Grishma Jainan. So let us start with modification of EDX platform. This is the outline. We are going to give the presentation on these topics. Introduction to MOOC, databases, objectives, scope of the project, reporting data from EDX to Moodle, problems faced solutions. Introduction to EDX distributed platform for course synchronization, then problems faced on this topic, then solutions. Okay, let us move on. So first, introduction to MOOC. What is MOOC? MOOC stands for Massive Open Online Courses. It aims to provide real-time education online with the help of various features like videos, images, quizzes and other online exams, etc. Two famous examples of MOOC platforms are EDX and Moodle. Then, introduction to MOOC. EDX consists of two parts, LMS and CMS. LMS is the Learning Management System. It is user side of the system where a user can opt and interact with the courses created in CMS. It is the instructor side of the system where there is a provision of creating and managing courses. It is also known as EDX Studio in case of EDX. Then Moodle. Moodle doesn't have separate LMS and CMS part but provides login to Moodle as admin and user separately. Then, databases. EDX uses two database systems. First is SQLite, Relational Database. Used to store information about user profile registration data, student enrollment, logs, test grading, etc. It has 127 tables. Then, MongoDB. It is the second non-relational database used in EDX. It is a NoSQL document-based database. It is used to store course content, course policies, etc. and other course-related information. Then, Moodle. Moodle uses MySQL database which has 314 tables in it. Then, Objective. Actually, there are two projects. So, there are two objectives. First is to store data from EDX to Moodle so that whenever course or user-related data is content is created in EDX, then it is instantly transferred to Moodle through a trigger. Then, the second one is providing a simple interface for course distribution facility for universities participating in MOOC with IITB. Then, scope of the project. Porting data from EDX to Moodle. Porting of data from EDX to Moodle will be beneficial in the condition when these platforms, EDX and Moodle will be hosted by the same institute university so as to synchronize their data and get the data from one platform to another. Then, EDX distributed platform of course synchronization. This is the second one. Host university can choose which courses to offer from the available list of courses on its CDX so that the child universities can adapt that and transfer it to other institutes which are getting access to the courses. Then, participating university can choose which course to commit from the list of offered courses. Automatic manual course updates are provided to the participating universities in this case. Then, porting data from EDX to Moodle. Actually, we have a video demonstration for this. So, the first is the user data, how it is transferred to it as ported from EDX to Moodle. So, let's begin with it. So, this is the EDX platform. Here, the registration link is clicked. Then, email, password, public username and full name. These are the least required fields in EDX you have to fill so as to register as a student. So, here, images filled. Then, public user name Mohit and then full name Mohit Sharma. Then, we agree to the term services on a code and then create my EDX course. So, in EDX, now the course is created. This user is created. Is there no validation email? Actually, sir, there is. Sir, actually, if a EDX user is created, then there is validation email in that. Correct. That will be sent. Surely, it will be sent. So, how do you be able to log in without validating the email account? No, sir. Actually, the account is created only. Not validation is done. When the account is created in the EDX, it has to be validated. And after that, you can log in. Correct? Yes, sir. That is the case of EDX. But we are here transferring the data from EDX to Moodle. So, when I... You just showed the registration, correct? Yeah. And then, you immediately logged in. How is that possible? No, sir. We have not logged in yet. Okay. So, sir, when that link is clicked... So, in the Moodle, automatically, a user is generated. This is the admin account. Here, that Mohit Sharma is reflected. MohitSharma.40 at the readgmail.com. Sir, actually, it will get clicked. Actually, we can also log in into that account. Because, having the admin access, we have inserted the user data in the Moodle table. Then, username is entered as Mohit that was there for the login in Moodle. And then, password... The password that he has received from the mail. He can input there and then log in there. And then, this is the account of his Mohit Sharma. And all the courses are shared. So, sir, then the user is created in Moodle and that we can log in. Now, the basic course information, which the Rajashe will be taking on. Basically, you are taking triggers, correct? Yes. Go back to that slide only. The basic course information, that means, anytime a course is created in Moodle... EDX. Okay. It will go into Moodle. Moodle. What happens in the Moodle has the same name? Course. It will not be added. Sir, we are matching it with... It should have the same course ID. Course ID. Course name can be same. Course ID. Yes, sir. We are matching it with course ID. Fine. I am not too sure about that. Course section means what? Sir, in EDX, there is a hierarchy. When you create an outline in EDX. Sir, first you create a section, then you create a subsection. Okay. Now, you are talking about those sections. Yes. Okay. When I create sections of my EDX course. Yes. Okay. You are making corresponding changes in Moodle. Yes, sir. Sir, in Moodle, it follows the nomenclature of topics. Whenever a section is... Yes. And you have done that. Yes. Okay. File. Sir, in file, we have transferred PDFs only. Sir, in... When a PDF is uploaded in EDX, that will automatically get transferred to Moodle. Instantly. Okay. Question. And I was talking about that hierarchy, section, subsection and unit. Inside an unit, a user can create a question. So, all these data you have ported. What data is not ported? Sir, these are the things that we have not ported yet. So, the transfer of file was only for PDF format and not for docs or ODT or TXT. Why? Sir, because in MongoDB, every file is stored in a different way. So, we were successful in... Whenever EDX uses MongoDB, first of all, for courseware content. So, whenever a file is uploaded, it is broken into chunks. And those chunks are stored in MongoDB. EDX combines those chunks and shows it on EDX. So, we have to combine those chunks to get that file. And then we have to transfer it to Moodle. Why? Sir, we have to get that file, that original file. Yeah. But why don't you use the trigger when the file is uploaded in the first place? Sir, but that is the wrong way. MongoDB doesn't create any files. Sir, suppose the file doesn't get uploaded, any suppose of failure. How does it get into the MongoDB? Sir, you are saying, sir, we won't get the file in between. Sir, that is a hackish way. MongoDB, you are saying stores every file in its own format. Yes. All right. Yes. So, you have to be first given by the user through some software to MongoDB. Yes. You have already demonstrated that you can, when I click a button, you can take action. Yes. So, when that user clicks a button to upload PDF file, image file, any idiotic kind of file, why can't you process that particular thing and insert the file in Moodle? Sir, but that file can be anywhere. I don't care. So, the update code of EDX, EDX Studio, where a teacher is uploading anything. It can be an image. It can be anything. It can be a sound file, for example. It's a file, collection sequence of data. Why don't you collect that sequence of data and give it to Moodle and also give it to Mongo. That is the correct place you have to insert, no? Sir, EDX is automatically inserting in MongoDB. You have changed the user code? Yes, sir. The click button, click to register. So, you access to EDX code? Yes, sir. Correct? Yes. Similarly, there will be a button on studio. Sir, my trigger is on the function. Suppose you upload a file on EDX. Hey, Baba, upload of a file. There should be a front end and a button, no? No, sir. My trigger is not on that button. Sir, his trigger was on that button. Your trigger should have been on the button. That's what I'm saying. Sir, the function gets executed in the... No, I don't care what gets executed. If he has demonstrated that he can put a trigger on a button, same technique you should have used. Sir, then if... Why are you doing a database-to-database transfer? Sir, then suppose you don't upload a file and go and just click that button. Sir, the trigger will be fired for no purpose or... Whatever trigger can be fired from anywhere. I don't understand. First of all, I don't care about triggers. Okay? I talk about events. Okay? There's an event that happens. The event that happens is there is a click... User registration. You are transferring some data. The event upload file. Why are you not transferring data at that time? Why different technique? A technique which says that I have to struggle to do PDF. I have to struggle to do everything. Sir, and again the user which will be... I don't care. It's a form. It's a form. A part of the form is a filename. Okay? When I say submit or I do anything, the form gets to some software. Yes. And that software contains the filename. It uploads the filename, cuts it into 100 pieces and stores it in Mongo. I don't care what it does in Mongo. Why the same thing is not inserted in Moodle? Sir, then we have to fetch the file from the user, whichever user is uploading from its directory into ADX. Then we have to provide access to that user also, to that user's folder. Sir, that is a security problem also. That will be the requirement in the final thing if we do it. Okay. Sir, I have videos for all these points. Sir, these are the problems faced. PDF file size. And for Moodle has a nomenclature for storing files, which was not documented properly on Moodle docs. So basically since the team size of our group is large, the project was divided into two tracks. The first track was explained. And the second track we did was introduction to, it's an EDX distributed platform for co-synchronization. I'll just give you an overview of what the functionality of this is. Basically, there are two categories of users. The situation for which we've created this is we have IIT Bombay as the host university, which is offering MOOCs to other universities that choose to participate. So over here you can see on the left-hand side is the admin panel, and on the right-hand side is the university panel. For the first category of user, we're considering it to be IITB, or to be very specific, the administrator of the MOOC courses for IIT Bombay. You can see the panel over here is the responsibilities for the admin is allowing which, choosing which universities can register to IIT Bombay courses, removing those universities, which courses to be offered and which courses to be unoffered. So that is the functionality of the admin panel we have allowed, and the second at the university end, the university can select which courses to commit to, which courses to uncommit from, and also allows for an updation. In case IIT Bombay chooses to update the content of a particular course, the same update will be reflected back in the university end, at the university's EDX. So you can see over here that if the university chooses to commit to a course, we're using MongoDB commands to take a dump, that's the Beeson dump you can see in the center, and that is exported in the EDX of the remote university. And for this, for the update part we are using periodic updates using DJCellery, which is basically used for scheduling. In our creation of this, we have two types of updates. One is the automatic update, which the admin can specify at which instance of time it has to be taken. And second is manual update, which is provided at the university interface end. So if the admin of that particular university chooses to update a particular course, we have functionality for that. And the details will be explained by Harishan Devyanshu. I'll show you a quick demo of the entire project. So this is the main IITB server. So when we log into it, this is the LMS part. It can show the courses available with the IITB. And this is the CMS part of the host server. Now I sign it into the IITB host server and create a new course. I name it introduction to R programming. Now as you can see the new course is created. Now I'll add a new section to it, a subsection in a video. Now we have a basic structure of a course with the host server. Now this is the course you can see has appeared here in the host server introduction to R programming. If I make changes to it in the back end, it will reflect in the front end also. Suppose I add a course pick to it. You have made it on the IITB server. Yes sir. What are you doing now? Now sir, we'll log into RCMS that we have created. Now sir, you can see all the courses that are being offered by the host server. But I don't see Harishan. Sir, it is there. I is there. Third last, introduction to R programming. Now we'll go to the another PC that is the user for it. You can see the username has changed at the top. Now initially there are no courses here because IITB has not offered any courses yet. Now I'll click on the course, introduction to R programming and offer it. Now in the user part he'll refresh the page and you can see the course is included here because the server has offered it. Now this is the internal course structure of the user interface. Now you can see that introduction to R programming course is not here. Now the user will click on the course and commit to it. Now the entire course data is transferred and you can see it in the course opted for column. Now when the user refreshes you can see there is the course introduction to R programming here. Now you can click on the course and you can see the section and the subsections are here plus the video that I have uploaded in the lecture one is also here. What about updates? Updates I'll next. Now suppose I create more subsections, lecture two. So I have changed the course in the main IITB server. Now I'll go to the user part and this is the update button you can see here. This green update section. When you click on the update button the course in the local university server also gets updated. Now sir when you go to the you can see the sections have not working. Sir this is working perfectly fine. I can show you any time. This is not working. This is working. The maybe is not the scenario here. Next one was to implement a queuing system for automatic updates. We don't need to integrate some other tool in EDX actually because that would be a problem. So we needed to implement something that was present in EDX only. So we needed to configure the salary tool which we use for the queuing system. Next was the updating courseware with preservation of course data. The data which any change they make in their courseware and after our updates it should not change and that's what was the problem phase initially and we covered it using the absurd command which we stated earlier. So the solution for the BSN dump was only dump using the course ID and the university ID from the main host university and then was transferred to the other university. Next is we configured the salary build inbuilt in EDX angle to implement the automatic queuing of the update task. Next was the absurd command which we use for the updating the courseware and these are the references we use.