222a Projects
The centerpiece of CSE222A is the term project, which culminates in a
workshop-quality paper and a public poster presentation. You are encouraged to
think carefully about the project topic and scope, as I expect that a number of
the projects, with some amount of extra polishing and follow-up work, will be
submittable to a high-quality venue. Indeed, students with successful projects
from recent CSE222A offerings earned all-expense-paid trips to present their
work at international conferences in places like Austin, Texas; Hong Kong; and
Bern, Switzerland.
Of course, time is limited. The key to a successful project is to carefully lay
out a plan of action so that some significant portion---but frequently far from
all---of it can be completed in time to write up and present at the end of the
term. Projects will be graded in the same manner that conference papers are
evaluated: we're looking for interesting insights, clarity of presentation, and
appropriate positioning of your work within the framework of existing research.
From the point of view of the class, the goal of the project is to give you
first hand experience conducting research in networking and exploring a topic
that interests you in more detail than we well in class. It is OK to carry out
work that validates (or invalidates!) results that have been published in the
literature. Furthermore it is OK to publish a "negative" result, as long as
you clearly and carefully describe your research process.
Each project will be presented during a poster session scheduled during the
official final exam period for the course. Groups will also submit an 8-10 page
research report describing their efforts. All class members are required to
attend and the poster session.
Projects should be done in groups of three to four. Project groups of size
five require permission of the instructor.
Timeline
To assist in the timely completion of the project, we have established the
following checkpoints.
10/8: Form your project groups, and fill out the Google
web form with information on the group members. Then email the TAs to ask
for login information and accounts that can be used for the course (optional).
10/22: Each group must submit a page-long project proposal. The proposal
should contain five sections:
- An introduction, providing a basic overview of the goal. What is the problem you're
trying to solve? Why is solving that problem important?
- What is the approach you are going to take? This could be (1) validating (or
invalidating) results from the published literature, especially on workloads
not considered in those papers, (2) making a change to an existing idea to
(hopefully) improve it, or (3) coming up with an entirely new idea.
- Related work, which discusses the current state of the art that you intend to build upon.
- What is your plan of action? What research questions do you want to
answer? How will you answer them? What applications/workloads/traces/etc. will you
employ in this task? How will you know when you're done?
- A schedule, specifying concretely what you intend to have accomplished by
each of the two milestones below as well as for the final report/poster.
It is perfectly acceptable if the final deliverable is not a completion of the
project---which, if successful, some members of the group may wish to continue
after the term ends---but it does need to be something that can be clearly
demonstrated/evaluated/graded.
Included in this schedule is a description of any resources you believe you
will need to complete the assignment, such as access to testbeds, software,
hardware resources, etc. We expect most of you will be able to complete your
projects on resources already available to you, but if you have some particular
needs please call them out and we'll see what we can do. Note that if the
successful completion of your project depends on these (as opposed to "it would
be nice if") please make sure you discuss this with the TAs and/or the instructor
before submitting. You will be provided with at least on VM that you can use
during the term.
11/5: Each group will submit a 1-2 page summary of their progress to their
assigned TA. We will take a look, and either provide written feedback via
email, or schedule an in-person meeting to discuss the status updates.
11/24: Submit a 1-2 page summary of your progress since the last
checkpoint to your assigned TA. In particular, concisely describe the deliverables you have
completed, and provide a brief preview of what you expect to present during the
poster session.
12/3: A draft of your poster is due, in PDF or PPTX/PPT format.
12/8 (8am-11am): All groups will present a poster during a poster scheduled in CSE
1201 (the large room right off the main lobby). All group members are expected
to participate in presenting the posters and answering questions about the
work. In addition, students are expected to visit other posters and actively
participate by asking questions of the presenters. This will count toward your
class participation grade. The actual poster session will be from 9 to 10:30,
with 8-9 available for setting up the poster, and 10:30-11 for taking it down.
12/8 (midnight): Final project reports are due by midnight. All groups
are expected to submit an approximately
6 page project report in the format of the papers
we've read in class (i.e., double column, single spaced).
The report should include references and
citations to related work, as well as graphs, figures, etc., documenting the
performance of your software prototype to the extent possible.
Submission instructions will be provided closer to the end of the term.
Project ideas
To help you get started on potential project directions, here are some areas
you might think about:
- Internet of Things. There are now all kinds of crazy gadgets connected to
the Internet, most of which do not have an end "user" that is on-line and
interacting with the device at all times. The devices tend to be resource poor,
infrequently updated, etc., etc. This has many implications; what does the
end-to-end principle mean in this case? You might study the prevalence of
devices on the 'net, measure/analyze one or two you have handy, design a new
protocol for XXX for them, etc.
- Data centers. The underpinnings of the "cloud" are clusters of
thousands of machines, and scalability is the rule of the day. Building
effective congestion control, flow control, naming, consensus, location
services, orchestration services, etc., is a challenge, since the resulting
systems need to be low latency and highly scalable. Dig into a recent
proposal from Sigcomm, NSDI, OSDI, SOSP, etc., and try to understand
the limits and benefits.
- Smartphones. The PC is dead. The new 'host' on the Internet is the
smartphone. Happily, the Android platform that powers a large fraction of them
is open source and easy to extend/modify. Consider
extending/replacing/measuring the functionality of an Android device, either a
real one or in emulation, to improve its functionality and/or performance.
- Software defined networking. SDN is the new rage. Conveniently, you don't
need actual hardware to experiment with it--Open Virtual Switch (OVS) provides
a software-based OpenFlow compliant switch that you can program and experiment
with on your own machine(s). Consider using SDN to explore new/better ways to
handle old tasks.
- Wireless. 802.11ac is now standard. There is very little published about
its performance in practice, or even how to do simple things like rate
adaptation, channel selection, etc., etc. Your laptop and a cheap basestation
probably speak 802.11ac. What could you measure/evaluate?
- Censorship/Privacy. The world is up in arms about the amount of
sniffing/snooping going on in the Internet today. How could you
detect/measure/quantify/prevent this from happening, either in the Internet at
large, your local Intranet, or in a particular service?
One potential way to organize your thinking is as follows:
- Deploy application X, or workload generator Y into a VM environment
- Pick a mechanism from the course. Examples include MPTCP, DCTCP, various congestion control systems (eyeq, pfabric, pdq, ...), P4, a new SDN program,
802.11ac, an Android feature, a wearable body monitor (e.g., FitBit), etc.
- Download the code for that system from the author's website, email
the authors and ask for the code, or implement your own version.
- See if you can reproduce their results.
- Try their approach on a workload they didn't consider in the paper
- Try to tweak or modify their algorithm/system and measure the effect.
The experimental methodology will depend in large parts on the topic,
but hopefully this will get you started. You will receive feedback
as part of the project proposal process.
Helpful links
Last updated: 2015-11-24 13:57:44 -0800
[validate xhtml]