Skip to main content

Virtual Labs launched

[21 March 2015] Update: The original URLs for the Software Engineering and Advanced Network Technologies Virtual Labs are temporarily not working. You can access these labs here:

The Virtual Labs project has been formally launched today.

This is a day perhaps many of us have been waiting for long. The Virtual Labs is an ambitious project undertaken by Ministry of Human Resource Development (MHRD) as part of the National Mission on Education through Information and Communication Technology (NMEICT) program. This project, I believe, has the potential to bring considerable improvement in science and engineering education in India. The world has changed, and learning (or teaching) is no more confined to the traditional books. Rapid progress in technologies and increasing accessibility to Internet gives ample scope to gain clear understanding of the subject matter. However, something still lacked there. Contents available online tend to provide theoretical knowledge. In many cases one doesn't get a hands-on exposure to related things and techniques.

Virtual Labs attempts to provide a online laboratory to overcome this lacking.

I've been involved with the development of two virtual labs (Software Engineering Virtual Lab and Advanced Network Technologies Virtual Lab) for more than a year. I've joined this project in 2010 after the pilot phase was over. I remember the initial days when we were struggling with the idea of a virtual experiment:
  • What could be called as an experiment in Software Engineering?
  • How could one possibly work online on a problem on say, class diagram?
  • Even if he is able to do so, how does the user get to know whether he is correct?
And there were many such questions. Not to forget, different technical issues that came along the course. For instance, I had a hard time in finding a software that could automatically generate UML diagram from user input. PlantUML finally saved me.

Apart from Software Engineering Virtual Lab, I've also been a part of the Advanced Network Technologies Virtual Lab. This lab, too, has been quite challenging. Nevertheless, together with other team members, all such challenges have been met till date.

That am a developer of these labs, of course, makes me proud. This is the largest project that I've undertaken till now. Work on these labs have given me exposure to the recent trends in web technologies. This is my first real-life work with Python and Django. And I feel I'm growing a taste in UI design as well. But what is more important: this project gave me a scope to contribute something towards my country and society. Being a "software guy", this is possibly the best way I could do so :)

Work on these two labs would be over in the coming few weeks. Kudos to the qualified team (Tuhin Chakraborty, Sujata Pal, Bibhudendu Pati, Arijit Roy, Tanay Chaki) who have contributed largely to these projects. Hope Virtual Labs would benefit the future scientists and engineers of our country!


Popular posts from this blog

Specifying Source and Destination of Messages

One of the frequently asked questions in the community is how to specify which particular nodes would act as source(s) and destination(s) of the messages created in the ONE simulator. The simulator, in fact, provides a pair of settings (shown below in bold face) aimed for this particular purpose.

Let us consider that there are $n + 1$ nodes in an OMN.  Further, let the nodes with addresses from $x$ to $y$, both inclusive, would create messages. The nodes in the range $w$ to $z$, both inclusive, would be the destinations of those messages, where $0 \le x \le y \le n$, and $0 \le w \le z \le n$. Then, the corresponding simulation scenario can be configured as follows.

## Message creation parameters # How many event generators Events.nrof = 1 # Class of the first event generator Events1.class = MessageEventGenerator # (Following settings are specific for the MessageEventGenerator class) # Creation interval in seconds (one new message every 25 to 35 seconds) Events1.interval = 25,35 # Me…

Effects of Buffer Size on Delay Tolerant Routing

In this post, we look at how buffer size affects, if at all, the performance of the routing protocols in DTNs. For this purpose, we will consider the following five routing protocols:
EpidemicPROPHETSpray-and-Wait (SnW) First Contact (FC) Direct Delivery (DD)  Detailed discussion of these protocols is scoped out here. We just note that in case of Epidemic, there is unlimited replication of the messages. In PROPHET, however, the replication is usually less than that of Epidemic. On the other hand, SnW has a fixed limit (L) on possible number of replications of a message. Finally, FC and DD involve message forwarding -- not replication. So, in the latter cases, there is always a single copy of any message in the DTN.

We will consider the buffer sizes from 20 MB to 180 MB, both inclusive, in steps of 20 MB so that we have total 9 different buffer sizes. We will use the real-life connection traces from Infocom'06. Therefore, we will need to simulate 5 * 9 = 45 scenarios to get the rel…

Controlling Transmission Range from within the Simulation

While simulating scenarios with the ONE simulator, one typically defines one or more network interfaces, and add them to the nodes as required. This use case prevails in most of the scenarios. However, a drawback here is that different network interfaces are mutually incompatible — an interface of type 1 can't communicate with any interface not of type 1.

Under certain circumstances, it might be required to control the transmission range of one or more network interfaces dynamically from within the simulation. For example, in one of my works, "On emotional aspects in Mission-Oriented Opportunistic Networks", I have considered the case where users occasionally turn off their device radios based on their contemporary emotions. In particular, the following shows how to set the radio range to 0: ModuleCommunicationBus comBus = host.getComBus(); // Store the original radio range the first time it is reset if (this.originalRadioRange == -1) { this.originalRadioRange = Double…