In teaching computer networks to students, one of the things a person needs to do as a teacher is to assign enough and appropriate work to the students due to which they gain hands on experience about the vast area of technical knowledge about the subject. Similarly, the students should also positively and proactively confront this type of work as such an experience is supposed to provide them with a splendid experience about the various tools and techniques that can be used to deploy and grow computer networks.
In this vein, a number of themes can be thought about. One of them is to give students a number of programming assignments to entice them to develop various network protocols, client-server models, network services, or even network simulators.
Another theme could be to inspire the students to perform some research work. In this, they could be given a number of research papers to read from various sub-disciplines of computer networks. In return, the students can be expected to learn about and choose problems they like. It can be expected that during the course of time students would either come up with an innovative solution to a challenging problem or they would write a survey of a domain or problem that was relatively unexplored previously. The latter outcome could be interesting in that the student could subsequently follow up on this to make it his/her undergraduate student project or even evolve it further in to a professional research project.
Another idea could be to encourage the student to work with already existing network simulators to study some aspect of a computer network. For instance, a student may wish to emulate a hypothetical ad-hoc wireless network and study various aspects of its network traffic characteristics. These could include monitoring overall end-to-end delay, packet loss, jitter or some other related network traffic parameters. The work may then be followed up with interesting statistical analysis that may even be useful for some internet service providers, and may as well develop into a full fledged research paper.
This article i written in this vein and it is intended here to present prospective students with some interesting ideas to work on. What follows are some ideas which the writer article thinks are pretty cool for any student to work on.
Implementation Projects
- Develop a web server in a programming language of your own choosing. This could either be Java, C or C++ or any other scripting language. The web server can be expected to implement a number of well known network services. These can include:
- A file transfer service.
- A remote shell such as telnet.
- Echo server.
- A time server.
- Implement a Voice over IP simulator. The simulator may have following functions.
- A VoIP packet sender and receiver.
- A VoIP packet generator implemented at the sending side.
- A packet loss simulator.
- An end-to-end delay simulator.
- A jitter buffer implemented at the receiver that removes network jitter from packets before playing them out to the listener.
- Develop a distributed file system. The remote file system should optimize some performance criterion while storing files on a large network. The criterion could be to save files on the nodes that are as closely to the user as possible. The user should be able save and access files while being oblivious of where the files have actually been stored on the network (distributed system). Similarly, while fetching files the user should be oblivious of where the files have been accessed from. Consider also the case of a mobile user in which case it would be a nice thing for the file system to move the files (or data) of the user to servers that are closer to him/her.
- Develop a new routing algorithm.
- Develop a new routing algorithm for wireless sensor networks.
- Develop a new congestion control scheme.
- Develop a simulator for a routing algorithm such as RIP or OSPF.
- Go to the website of IETF and figure out what sorts of projects they are doing. Pick one from there or get inspiration.
Research Based Projects
- Study content distribution networks. Understand what they are and how what sort of communication problems they solve. Also study the various open source tools that are useful in developing content distribution networks. Learn about the current state of the art in the field. An end goal could be to write a nice survey paper about the field.
- Study network coding. Network coding is a field that deals with multiplexing of network traffic so as to save bandwidth.
- Analyze the existing congestion control schemes. It would also be very nice if you tried to devise a new congestion control scheme that solved some problem about the computer networks.
- Study cloud computing. Figure out ways in which you could lease your lab’s computing resources to a well known cloud.
- Try to have a look at other research groups and figure out what they are doing. Choose something from there, it might be useful.
Simulation Based Projects
An idea has already been given about this. SImilarly, more ideas can be thought about. It would be interesting here to mention a couple of well known network simulators. You might want to use OpNet and NetSim for these types of projects.
If you found an error, highlight it and press Shift + Enter or click here to inform us.
Selected Problems in Computer Networks by Psyops Prime is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.