 Good afternoon everyone. How many of you have done Ubuntu installation on your own? At least twice. At least twice. Five times. I would be interested in talking to both of you later. Why five times? Such cases happen like when you play around something messes up and just crashes. So you're not afraid of messing up things? It's a straightforward process to install. Not so straightforward if you don't take the default option. After the repetitions it becomes straightforward. There's a reason for asking that question. You'll know when we go through the presentation. I belong to the IIT Bombay software development team. The name is just an official thing that we call ourselves. Because we do software development of the IIT Bombay platform. That's my email ID in case somebody wants to contact me. I'm going to stick around here till tea break. So even after the presentation if you have any questions you can always come and ask me. These are the four projects that we are offering as part of the IIT Bombay software. So you can take a minute to just read obviously as we go on with the presentation you will understand more details. So first one is around integration using APIs. So those are the keywords I would like you to pay attention to. The second one is to create a setup of the IIT Bombay X. The third one is the IIT Bombay X platform upgrade. And the last one is a search engine for the IIT Bombay X platform. I'll tell you more details about the projects. So this is our platform IIT Bombay X dot in. This is a MOOC platform. You have probably come to know by now that we have our own MOOC platform where we offer MOOC courses. So platform similar to say Coursera, edX, Udemy any of you would have done courses. You would be familiar with the MOOC platform basically. So our platform is based on open edX which is a open source platform. We have taken that, we have customized it and deployed it at our local cloud for our students to use. This is the architecture of open edX. I'm not going to tell you about each of these boxes. It's not going to make sense and it's too much to talk about. The reason for showing this slide is just to emphasize that the open edX platform is a huge platform. It's a complex platform. It has multiple pieces talking to each other, moving parts what you can call. So like Ubuntu installation, one installation can make or break. So here you have so many components which have to be installed which are talking to each other. Anyone component breaks, it's going to break the whole system. So what this shows if you are able to read, there is a student management component. There's a course management component. There is MySQL database, Mongo database which is a NoSQL. Who all have heard of Mongo database? How many have used Mongo database? Anybody done certification of Mongo? You should do it. It's free on MongoDB University. So there is the discussion forum which is again MongoDB based. There are notes. There is a messaging software which is called RabbitMQ. There is Celery which is again another queuing software. There is all the monitoring software. You could use say New Relic. There is all the software installation components Ansible Docker. Kubernetes we don't use but Docker which is like similar to Kubernetes if you have heard about it. There are the certificate generation components which have their own messaging. There is the analytics pipeline which Shukla ma'am talked about. The software talks to cloud. Amazon S3 integration is there. That is one of the components. Of course it doesn't require installation but it has an integration with that. So these are all the various pieces which make up the Open edX product. So anything that you want to do with the platform is going to be at this scale. Whether it is modifying the code or installing it or migrating it to a newer version. All of these components have to be taken care of. So I mentioned IIT BombayX which is based on Open edX and that is such a big platform. And the vision that we have for which we have hosted these four projects is to have this kind of a network of IIT BombayX all over the country. So not one IIT BombayX installation. I have shown here four but we will probably have 50. And 50 central IIT BombayX servers talking to a lot of smaller local IIT BombayX installations. So we are talking about a couple of hundred IIT BombayX installations all over India which will be talking to each other for some purpose or the other. So you can imagine the size of the task of installing, maintaining, porting all of that. So the theme of the project as I said the four projects is going to be this vision that we have of having multiple installations of IIT BombayX at various places. The reason for this is that IIT BombayX like we have hosted our platform. We have technical people. We have the know-how for hosting this platform. But assume that there is a small college let's say some arts or commerce college. They are not going to have the skills for installing or maintaining such a big platform. So if they have to use some kind of open, rather a MOOC course platform, they need some hand-holding. Either to set up their installation or they need somebody else who has created a setup. They just use that. But they need hand-holding. Without that you cannot have commerce courses for example. Most of the you would have seen all the online courses are typically to do with technology related. So data science, artificial intelligence, machine learning. All these courses are very popular. But you will rarely see like some commerce accounting course for example. That's because it's very difficult for these kind of colleges to maintain their such platforms. So the first project in this series is going to be the API based integration. APIs I assume you guys would know. Just one slide to show you the importance and how popular the use of APIs is. So this is our 2014 list of top APIs. I've just been lazy. This list would only have grown. So every product company you name it is using APIs. Applications of APIs, any social media, e-commerce, any app that you can think of is using APIs. So it's important to know how to create APIs, how to use APIs. It doesn't matter for what purpose. For example, I may be using an API for my education related purpose. But once you learn how to use an API that technology you can use to build a stock market application or a weather forecasting application for example. So that's what I would expect you guys should aim to learn to use APIs or to create APIs. So this just shows that once you have an API anybody can use it. So your API could be used by say a mobile device. It could be used by an enterprise application. Data for your API could come from a sensor. It could come from a MOOC platform. It could come from a host of sources. And the consumers for your API can also be a whole lot of different types of applications. So the first project is around this theme of using APIs for integration. APIs can also be used for integrating two applications with each other. So yeah, these are the technologies that we will be using for this particular project. Python, Django. All our projects are mostly around Python, Django. Java to some extent. APIs, REST, APIs. The REST framework. MySQL, MongoDB because that's what our main two databases are. Git obviously. JavaScript, ReactJS. This is just a short list of the main technologies that we will be using for this project. So going back again to this diagram. So the APIs you can understand will be for allowing each of these instances to talk to each other. They may have some data to share with each other. So the concept is to allow that kind of a data exchange to be possible. The second project is to create a distributable IIT Bombay X. So these are some of the DevOps tools that some of you may have heard of. Some of you may have used. Going from the infrastructure level. You could have the Docker, for example, more common Ubuntu Linux. Going to databases where you have Mongo, MySQL. App frameworks are there. Applications, management and DevOps. So there's a hierarchy of so many tools that are available. All of these tools are definitely not going to be used in the project. This is just to show you what are all the different types of tools that one uses in a DevOps kind of a project or for a setup, for creating a setup. We will be using some of these and few more for creating the setup. So this is the setup that I mentioned that if there is an arts college and they want to create their own IIT Bombay X installation, how will they do it? They cannot do it on their own unless they have some hand-holding person. So we are going to create a setup. It's so easy for them to create this platform at their local, whatever site it may be. So that's the second project. So people who are interested in doing installations, who are interested in solving problems, why things don't work, those kind of people should come to me for this project. It's not a development project. There will be some shell scripting kind of work involved, some make files and all that. But it's not like a proper coding programming kind of a project. So as I mentioned, IIT Bombay X has a very complex and highly scalable and highly available infrastructure. The scope of this project is to create a setup which we will give to various colleges to create IIT Bombay X installations at their own local premise. The technologies, few of them are going to be these. It's a highly complex project and we are going to need three people for this. The third project is IIT Bombay X platform and database upgrade. So like all software, like you have MS Office, for example, keeps coming up with newer versions. Similarly, IIT Bombay X keeps coming up with newer versions. So wherever a new software is released, so we have these bunch of 100 virtual machines on which Open edX is installed at our local premise. Now a new version comes about. Can you create another 100 VMs and then do the installation on that and then get rid of this? A better way would be if you can reuse, let's say some of these. Supposing the MySQL portion has not changed. So I leave the MySQL as it is. Supposing only the Mongo has changed. So my Mongo cluster, I move to the higher version. If we can do something like that, you are going to save a little bit of money and obviously the computational resources. So that's the idea. How to go about from one version to the next version in a way which is the optimized way of doing an upgrade. So there is the code which has to be upgraded and also the data because as you go from an older version, IoT BombayX has been in existence for almost five years. So all the data that is collected for five years, you don't want to get rid of that when you go to a newer version. So moving the entire data from the older version to the new version. So that's also part of this project. So this diagram just shows how the database upgrade works. So there are a bunch of scripts that we create. So people who are interested in database related activities, basically this is for them to go from an older schema to a newer schema then moving all the data from the old schema to the new schema and then testing, making sure because you can imagine if there is a schema change and if just one field supposing you have not handled it correctly, your entire destination system can break. So this is for testing all of that and making sure that your migrated data in the production environment works perfectly. So that's what the project is. So this is a database related project. So you need some interest in databases, Mongo and MySQL mainly. Shell scripting is required. Test automation we'll be using for testing to make sure that all the data that has moved has moved correctly and you're not missed out anything. So mainly for the testing. So Selenium software we'll be using for that testing. And the last project is a search engine. Basically, I showed you that we are going to have 500, let's say installations of IIT Bombay. The data which it will generate is huge. And Open edX does not have a lot of search facility. It has some rudimentary search where you can type in some text and it will throw you all the courses which contain that text. But when we have all this data, you would be interested in doing a lot more searches. So this project is to build sort of a search engine that's the closest word I could use for what we want to do. So based on various criterion, we do a search on the IIT Bombay data and throw up results. So here we'll use some of the data science related concepts for some of the analysis that we want to do later on based on the data. So obviously data science projects are complex. It has a longish life cycle. We may not be able to do all of these, but even if we can do like two or three of these items, I think we should be good. So as I mentioned, IIT Bombay's data is structured, unstructured, logs, all kinds of data is there. You need to be able to pull out the usable parts of it and then do analysis and search based on that data. So the technologies will be some of the data science related technologies. We may use R for example. We may use little bit of like MATLAB kind of software. And some search engine related concepts will be required here. So that's the last project. These are some of the references that I used, mainly for the pictures. Thank you.