CS276 - PROJECT OVERVIEW
The objective of this write-up is to give you some ideas for projects;
to discuss some of the requirements; and to review the deliverables.
The project is worth 35% of your final grade. The specific
deliverables, which are taken from the web page are:
Each of these are described in more detail below.
- 05%: Project Proposal [Nov 13 @ 11:59pm: email to firstname.lastname@example.org]
- 05%: Preliminary Project Report [Nov 27 @ 11:59pm: email to almeroth@cs]
- 10%: Project Presentation [Nov 28/30: in class]
- 15%: Final Project Report [TBA: email to almeroth@cs]
This can be a relatively short (1-2 pages or as necessary) description of
what you propose to do. You can submit a longer project proposal if
you would like, especially since some of the text can be re-used in the
project report. The more details you provide, the more feedback we can
The goal of the project proposal is to make you
think hard about what you want to do; do some preliminary background
work; and to start to develop some of the details.
For Khaled and I, it will be a chance to give you feedback both on (a)
whether your project is a good one, and (b) whether what you propose is
achievable within the very short period of time left to complete the
project. Keep these objectives in mind when writing the proposal. Also
keep in mind that we will post all of the project proposals on the course
The project proposal should include three parts. The
three parts are what we discussed in class on Oct 10th: Overview,
including motivation and briefly what the related work is; Project Idea,
which includes as much detail about what you are actually building; and
Project Evaluation, which includes a description of how you plan to
evaluate your work and show it to be "good" or "better".
Your project proposal should also include any relevant "meta-information",
for example, if you are working with team members, include a list of
who they are, and generally what responsibilities each will perform.
Remember that groups can be 1-3 people. It
might also be helpful to include a rough timeline, though this timeline
will probably be more valuable for you than it will be for either Khaled
or I. Finally, if you have any unusual needs or there are any unusual
"risks" that might keep you from completing your project, include those
Preliminary Project Report
One of the most important lessons from this class is that you will
find that a good paper and presentation will require much more
time than you likely estimate. This is one class that you absolutely
do not want to leave either the writing or presentation preparation
until the last minute. In looking at the above grade breakdown from
above, note that your
grade for the project is essentially determined by only the project
report and presentation.
Demonstrations or follow-up questions will only be used in
an "emergency", i.e. if the paper and presentation clearly
do not convey the contributions of your project.
Both the preliminary and final project reports should be written using
the IEEE Infocom conference submission guidelines. You can find style
guides either for
or for Latex. Only papers in DOC, PS, or PDF formats will be accepted.
The page limit for project reports will be 6 pages. Assignments submitted
in a format other than this will not be accepted, as is the case if you
wanted to submit a paper to Infocom! On October 31st, we will discuss
more of the organization of a good Infocom/class project paper.
The reason for submitting a preliminary project report is threefold.
First, giving serious thought to the content of the paper before
you do your presentation will actually help you improve the organization
of your presentation. Second, doing an early version of your project
report will help force you to focus on writing the report relatively
early. And finally, Khaled and I will do as much as possible to give
you feedback about your report before the final version is due.
Again, all preliminary project reports will be posted on the course
web site. These will be useful to other students as background for
your presentation and in completing Homework #4.
Finally, feel free to "negotiate" with other groups to review their
project report if they will review yours. You'll also want to review
other reports for good ideas on how to organize your own report.
The project presentation should generally follow the outline of your
paper. The most important factor necessary to plan your presentation
will be the
length of time you will be allowed. Essentially, we will have 240
minutes maximum for presentations (2 hrs x 2 days). If we have
roughly 15 groups, that roughly calculates to approximately
15 minutes total
for each presentation. I am hoping there will be slightly fewer
groups and so we will have either slightly more time, or slightly
less pressure to switch between group presentations. Keep in mind
that this time limit will be strictly enforced.
More details and recommendations on presentations will be covered
later in the course.
Final Project Report
Final project reports are simply a polished version of the preliminary
project report. At this point, there is not a specific due date on
the project report. My hope is that we will have the final relatively
early during finals week and the project reports will be due no later
than mid-week of finals. We will have to see how the scheduling works
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
"super-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 us you plan
to continue working on this project beyond this quarter.
The list of projects includes:
Again, just realize that a month is an awful short period of time to
develop an idea, do the development, write a 6 page paper, and
prepare a presentation! The more work you can do sooner, the less
stress you will create for you and your team members.
- 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.
- 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
- 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!
- 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: A student of mine
and I have done the simulations to see how this kind of system would
perform. Now, how about an implementation? The idea is for wandering
mobile devices to "infect" each other with "coupons", bits of information
or a real coupon transmitted opportunistically as users come into contact
with each other. A basic description of the system can be found in the
- NOTE: This is a five page paper in a format similar to the IEEE
Infocom format. It might serve as a good guide for all projects
on the scope and amount that you can write in this kind of paper. In
some cases, it is better to have a straightforward idea that you can
do a good job with, than a brilliant idea that you make very little
progress on. Save the brilliant ideas for an independent study project
- 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 will be managed by Khaled, for more details on the
project, contact him.)
- Create Your Own Project: Clearly you have the freedom to
choose anything you would like to do. If you would like to discuss
your ideas with Khaled or I before the project proposal deadline,
feel free to do so. In fact, the more creative the better!
by Kevin Almeroth