Due: Friday March 30 before 1pm.
How to submit
Hand in a printout of your project proposal and your annotated bibiliography
pdf to me before the due date. Also push the proposal.tex source to your project
repo (As soon as you have your project group, email me your project
group members' names, and I will created a repo for you
latex starting point files for your proposal and annotated bibilography).
I WILL NOT accept any proposals late;
late submission will result in a zero for this part of the project.
These parts count towards 5% of your final grade
If you have not already done so, first read the page about the course
project that gives a high-level overview of the project and lists the
specific parts with tentative due dates for later parts:
CS87 course project
You should create an annotated bibliography of at least 3 papers closely
related to your project (more is fine). As you read each paper, add an
entry to your annotated bibliography. An annotated bibliography will list
each paper as it would appear in a references section of a research paper.
In addition, each listing is annotated with a couple paragraphs that describes
the work. Use the course reaction notes as a guide for writing the
annotation part: each paper should have 1 paragraph that summarizes the work,
lists strengths and weaknesses, and discusses the main contribution of the
work, and it should have 1 paragraph that analyzes the work in the context of
how it is related to your project (think about asking and answering some
questions about this work related to the project you are addressing).
For your own purposes, I encourage you to add a second part that lists
additional related papers/work in your bibliography and to include a very
brief summary of them (you do not need to include the full required
annotation of the 3 most related). I will not grade these, but doing so
may be helpful as you refine your project over the course of the semster,
and it may help me point out some other related work to your project.
Look at the annotated bibliography section of my
CS Research and Writing Guide the "Getting Started" section below
for links to places to look for related work papers.
Your project proposal should be 4-5 pages long (in addition to your annotated
bibiliography). It should clearly state
the problem you are solving, how you are solving it, and explicitly list your
plan for completing your proposed project. Specifically, your proposal should
contain the following:
- Title and Authors
- An Introduction: 1-2 paragraph summary of the problem you are solving,
why it is interesting, how you are solving it, and what conclusions you
expect to draw from your work.
- Related Work: 1-2 paragraphs describing similar approaches to the one
you propose. This need not be an exhaustive summary of related literature, but
should be used to put your solution in context and/or to support your solution.
This is also a good way to motivate your work. This can be a summary taken
from your longer annotated bibliography.
- Your Solution: 3-4 paragraphs describing what you plan to do, how you
plan to do it, how it solves the problem, and what types of conclusions you
expect to draw from your work.
- Experiments: 1-3 paragraphs describing how you plan to evaluate your
work. List the experiments you will perform. For each experiment, explain how
you will perform it and what the results will show (explain why you are
performing a particular test).
- Equipment Needed: 1 paragraph listing any software tools that you will
need to implement and/or test your work. If you need to have software installed
to implement your project, you should check with Jeff Knerr to see if it
is something that can be installed on the CS lab machines.
- Schedule: list the specific steps that you will take to complete your
project, include dates and milestones. This is particularly important to
help keep you on track, and to ensure that if you run into difficulties
completing your entire project, you have at least implemented steps along
the way. Also, this is a great way to get specific feedback from me about
what you plan to do and how you plan to do it.
- Conclusions: 1 paragraph summary of what you are doing, why, how, and
what you hope to demonstrate through your work.
You must use my latex template for your written report. Once you notify me of
your project group members, I'll create a git repo for your project that will
include the latex template for your report. It will be based on one like this
Your Project repo contains:
FinalReport/ MidwayReport/ ProjectProposal/ README.md source/
You should write your proposal and your annotated bibilography in
subdirectory in the proposal.tex
file. Look at the README.md
files for more information about
the repo contents.
You are strongly encouraged to come up with your own idea for a course
project. However, I have suggestions for some, which are available
here (and please, these are not for public distribution):
You are welcome to use one of these as a starting point for developing a
project, or to come up with your own idea.
Once you have one or two general ideas for projects, you will want to
more completely define exactly what you plan to do and how you plan to do
it. A good way to start with this step is to take a look at related work;
you want to have an understanding of what has been done, and how what you
want to do fits into the field. It will help you modify and more
completely define your project, and get some ideas of how to implement and
test your project.
Take a look at the "Getting Started" section of my
CS Research and Writing Guide for links to places to look for related work papers. There are links
to USENIX conference proceedings and to ACM and IEEE digital libraries.
I have links to some other (older) papers here:
Additional Cluster and Distributed
Another place to start getting ideas is to look at recent conference proceedings
from SC, IPDPS, and other parallel and distributed computing conferences:
- SC conferences
(look for Technical Session to find papers):
- IPDPS conferences
- Other ACM, IEEE, and USENIX sponsered conferences. Here are a few suggestions:
PODC (Principles of Distributed Computing) www.podc.org, HPDC www.hpdc.org, ICDCS, PPoPP, IEEE Cluster, ...
USENIX conference proceedings USENIX has a lot of top systems conferences. Some that may be more applicable to
course projects include: OSDI, IPTPS, NSDI, HotPar, USENIX ATC, HotCloud, HotStorage, FAST
- other ACM sponsered conferences can be found of their main web page
www.acm.org. Looking as specfic SIG pages
may be useful, for example SIGOPS sponsored conferences:
- all IEEE Conferences:
www.computer.org and search for
parallel and distributed conferences under the "Conferences" menu
- and USENIX conferences at www.usenix.org
Machines and Software Available for your use:
- openMPI: runs on all lab machines
- openMP: on all lab machines
- CUDA: runs all lab machines
- all CS lab machines
- chervil (available only to CS87 students)
- XSEDE access to large clusters and other parallel machines. All
machines support MPI, and many also support CUDA and other parallel languges.
- If you want to install python libraries that don't exist on our system, here is some information about Seting up virtual environments
If there is other software you need that is not available on our stysem,
we may be able to install it or install it on our system or on some of
our machines. You should talk with me and Jeff about this.
Some Benchmarks and Tools: