CS290F Project Ideas
There are a couple of ways to approach doing a project. The first
is to determine whether you want practice in hands-on implementation
of a system or whether you want to work on a research-style project.
These two choices are not mutually exclusive, but realistically
speaking, trying to do both in a single quarter is. Also, since the
class is a combination of MS and PhD students, some students may be
less interested in a research-style project. I believe that the
span of possible projects can reasonably include either type.
Regardless of which type of project you are interested in, consider
PRELIMINARY NSF Report on the future of wireless networking research. Even though this is about wireless networks specifically, there is quite a bit in the document that relates to multimedia. (Note: developing an accurate vision for the future is a hard process. Take whatever anyone intelligent ever says about the future and incorporate it into your own vision.)
The projects this quarter also have a great deal of flexibility with
respect to their relationship to "multimedia". Projects can either
be about multimedia or for multimedia. In the later
case, the project might also be useful for other data types. For
example, you could work on a project that studies the impact of
wireless link loss on TCP-based delivery of multimedia content (not
very original, but it serves its purpose as an example).
If you are interested in a hands on project, one of the directions
in which to do is to simply to gain experience in
taking video from a camera, encoding it, transmitting it over a
network, decoding it, and displaying it. While the idea is simple,
often times, the implementation is not. The variety and challenge
of a project like this would be how much you rely on existing tools
as part of the end-to-end process and how much you do on your own.
For example, there are plenty of library routines (or even complete
software packages) that allow you to pull video from a USB-connected
camera. While there isn't much to do if you just pull existing
solutions, the real goal is to design a challenging project around
what is available. You might implement pieces yourself or you might
evaluate the transmission of the video in a wireless environment
to see how it responds to loss. Part of evaluating the project
proposal then is to see what you can come up with that is an
interesting and non-trivial problem.
If you are interested in a more research-style project and you
don't have a good sense of what to do, your absolute best friend
will be existing literature. It will serve you in two ways: (1)
it will give you a sense of what others think are interesting and
hard problems on which to work; and (2) it will give you a sense of
how others are evaluating their ideas. Given that we are spending
a decent amount of time at the beginning of the quarter talking
about idea evaluation, you will want to think hard about what you
want to say about your idea when you evaluate it. (Imagine standing
up in front of the class and independent of what your actual idea
is, once you've described it, what are you going to say that sets
it apart (and above) from what's already been done.) In this
regard, you probably want to draw upon experience you already have
in analysis, simulation, or implementation skills--we aren't going
to be spend time talking about simulators, that's a skill that's
covered in CS276.
Finally, the two options presented so far are somewhat on opposite
ends of a spectrum. I fully expect there are some folks in class
who are interested in doing a research-style project but don't
have the experience in analysis or simulation to really do a
full system evaluation. My suggestion in this situation is to a
proof-of-concept evaluation. Basically you show that the system
can be implemented and that it works. You might develop some
observations about how well it runs, how quickly it runs, or you
might be able to test it under different factors (e.g., you
develop motion tracking software for a camera and you test it
to see how well it track when you do jumping jacks). Depending
on how interesting the results are, the proof-of-concept
evaluation might turn into something really inter sting.
The following is a list of examples that I thought might be interesting
projects. At least some of the projects are brand new. That then means
that some are not new. A "not new" project, while less interesting to
the rest of the world, may be interesting to you because it is a problem
you would like the experience of building.
All of these projects include a wide range of potential complexity.
In many case, to do the project "right" will require more than a month
to complete. In this case, plan on completing a significant
piece that can stand on its own. Half-completed or half-working
on bigger projects will earn very little credit unless it is clearly
stated how what you have completed fits into a larger project.
This "incremental project" idea only works if you convince me that
you plan to continue working on this project beyond this quarter.
The list of projects includes:
- Friend Relay (and GUI): Imagine you are in a coffee shop
and your friend as a TMobile account, and you do not. Design a protocol
and GUI that allows your friend to run a server and allows you to run
a client, that together, find each other, and allows the server to act
as a relay for packets sent to/from the Internet. A GUI is an important
piece so that your friend can monitor who is using his/her connection,
for what, and how much bandwidth is being consumed. This ideas was
done as part of a class project once upon a time and published:
H. Caituiro-Monge, K. Almeroth, M. del Mar Alvarez-Rohena, "Friend
Relay: A Resource Sharing Framework for Mobile Wireless Devices", ACM
International Workshop on Wireless Mobile Applications and Services
on WLAN Hotspots (WMASH), Los Angeles, California, September 2006.
They did an okay job.
- Ping Pass-Through Client/Server: This project has already
been fairly widely done. Therefore, a key will be to doing something
novel. The idea is that some protected wireless networks still allow
ICMP to pass through the access point, even before properly authorizing
to use the network. By running a server on a
machine at UCSB and a special client on your mobile device, the client
can encapsulate all data traffic inside of ping and send it to the
server. The server strips off the ICMP headers and delivers the
traffic to the intended destination. Of course, some of those headers
have to be changed so it comes back to the server for "re-encapsulation"
in ICMP. Here, a GUI might be helpful
to monitor what is happening, but again, only if time permits.
Performance-wise, you could run some
experiments to measure the performance tradeoffs and scalability
limits. A one-off on this project is use a cell phone's data plan
and a bluetooth connection from a laptop to have the cell phone
provide a data relay service.
- Laptop "Lo-Jack" System: The "lo-jack" system is a tracking
system for cars that can be activated if the car is stolen. Design
such a system for your laptop. The server runs on a non-mobile
PC and the client runs on a laptop. Every time the client boots,
or more periodically, it signals the server with information about
where it is. If the laptop is stolen, when it boots, it may provide
useful information about where it is located (assuming the thief is
not smart enough to wipe the machine). Beyond just a ping with IP
address, there might be additional useful information to collect and
send to the server. Again, a system like this for PCs exists, but
costs money. Design a better one for free! A multimedia component
of this would be to map location data into Google Earth or some
- Media-on-Demand Client/Server: This is really just a generic
client/server to download/stream/deliver content from a server to
a client. One challenge is to try and built a truly interactive
client/server that focuses on reducing the delay between when the
content is created and when it is played, e.g., a Voice-over-IP
client/server that minimizes delay. However, the real challenge
here is likely for you to learn how to packetize and
stream media. There are obviously numerous commercial tools and the
idea has often been given as a class project. So if you choose this
idea, you will likely have to work hard to add some real creativity
to develop a neat, new, novel system.
- Implement "Coupons" for Mobile Systems: We are reviewing
the paper as part of HW#2. Now implement the system.
- Intermittent Access Agent:
Many Internet users now, once they are online, go through a fixed "set"
of sites, finding news, stock quotes, email, bank account
status, etc. The way things currently run, the user must
access each of these services separately/sequentially over
numerous/multiple connections. How would things change if we created an
"application layer bundler agent", or a higher level services protocol
that would be responsible automatically grabbing all the info required
in large "bundles" and delivering it on the local machine in the end?
The agent could either act based on some input/request from the user
during a setup phase, or be more intelligent and gather that from the
machine's local logs (browser history for example) and know what to
fetch. This application layer agent, would be even more useful
in cases where the network has only intermittent connectivity.
This project was done as a summer project, but there is still tons
of stuff that could be done. For a starting place, see: C. Holman,
K. Harras, K. Almeroth and A. Lam, "A Proactive Data Bundling System
for Intermittent Mobile Connections", IEEE International Conference
on Sensor and Ad Hoc Communications and Networks (SECON), Reston,
Virginia, USA, September 2006.
- Build a network traffic visualizer: One student in the
class is working in this area for his PhD research. We might talk
about this some as part of the course. But wouldn't it be neat
to be sitting in a coffee shop and have a display that tells you
what everyone else in the shop is looking at? There are some
data visualization tools available and the challenge is to connect
the network traffic collection tools with the visualization
- Anything on a mobile device: Mobile devices are hot.
Just building an app to receive video that you stream to the phone
is probably a cool (and hard project). Hard because of the varieties
of phone platforms, but easier because its a solved problem. The
way to make it challenging is to add something on top. One of the
papers we'll talk about this quarter is: "Random Network Coding on
the iPhone: Fact or Fiction?" presented at NOSSDAV 2009. Look it
up if you are interested.
- Create Your Own Project: Clearly you have the freedom to
choose anything you would like to do. In fact, the more creative the
better! If you would like to discuss your ideas with me before
the project proposal deadline, feel free to do so.