Due Dates
Project Presentation: Monday Dec. 11 and Tuesday Dec. 12.
-
Talk slides should be uploaded, and link added to the (presentation google doc) by 1pm on the day of your presentation.
-
Presentation Times: Mon: 1:15-2:45, 3-4:30, and Tues: 1:15-2:30
-
Presentation Locations: 104 Sci Cntr.
NOTE: you are required to attend all presentations sessions (both Monday sessions and the Tuesday session). The only exception is if you have another class that meets during one of the Monday time slots. If this is the case, you should let me know right away (and fill out the presentation poll posted to EdStem). Please schedule your other events. meetings, work schedules, etc., on these two days with this in mind.
Project Report: Tuesday Dec. 19 before 5pm, push to repo and turn in a hardcopy to Tia.
Project Code: Wednesday Dec. 20 by 5pm
Project Demo: By Dec 18, 20, 21. Sign up for a demo slot on the demo google doc
Overview
The final part of your course project consists of:
-
An oral project presentation
You will deliver a 30 minute presentation of your final project during one of the two final exam slots for our class. See Project Presentation for details and requirements for this part.
-
A written project report
You will write a 10-13 page final report that describes your project (using the latex template in your Project repo). It should be similar in style and organization to the research papers that we read this semester. This is your opportunity to describe in detail what problem you were solving, how you solved it, how you tested your solution, what your results show, difficulties you encountered along the way, what you would have liked to have done (or done differently), and what you learned from your project. See Written Report for details and requirements for this part.
-
A project demo, and submition of your project code.
The written report and oral presentation are the main parts on which your final project grade will be determined. You will also submit all your project code and give me a demo of your project. However, your grade is almost exclusively determined by your written report and oral presentation. This models the real research world where the research paper is the primary, and usually only, mechanism through which your work is evaluated, and where written conference proceedings and conference presentations are the main mechanism through which others learn about your work. As a result, you should spend a significant amount of effort making sure that you have a complete, and well-written final report and presentation; don’t do a fabulous project and then fail to present it well.
Written Report
Due: Tuesday Dec. 19 before 5pm
Detailed Requirements
Prepare a final written report that describes your project following the guidelines for your project Types, and following the writing style guidelines in Style Guidelines.
Your report should be 10-13 pages long using the latex template
provided to you in your Project repo in FinalReport/
.
Your report must be at least 10 pages and may not be more
than 13 pages long (including references).
Optional, additional appendices do not count towards the total length.
You may add additional appendices that exceed this length, but they should not contain main content of your paper; they must be true appendix content such as complete longer examples or extra figures (the main figures and graphs should be in the body of your 10-13 page report).
Latex
You must write your paper in latex using the template for it in
the FinalReport
subdirectory of your Project repo:
Project/FinalReport:
Makefile README.md finalreport.bib finalreport.tex
The README.md file has information about these files and some links to resources.
You may want to start with your proposal.bib
file as your finalreport.bib
.
You can copy it to your finalreport.bib
file like this:
$ cd ~/cs87/Project/FinalReport
$ cp ../ProjectProposal/proposal.bib finalreport.bib
As you work on your report, you should compile and build it periodically
to test your .bib entries and that it builds correctly (also periodically
commit to your repo at various stages so you can recover any lost or
deleted content). Make sure to do a make clean
before building to ensure
that your latest changes successfully built a .pdf file, and check latex
errors for undefined references that
$ make clean
$ make
You can scp your finalreport.pdf
from the cs account your home machine
to view:
# from your home machine:
$ scp you@cs.swarthmore.edu:./cs87/Project/FinalReport/finalreport.pdf .
or you can email it to yourself using gmail or by running mail
on our
system, specifying
finalreport.pdf
as an attachment. For example (and just pick the
email address you want to send it to…I’m showing to your swatmail):
# from a cs machine:
$ echo "hi" | mail -s "report" you@swarthmore.edu -A finalreport.pdf
Paper Organization
You should have the following main sections in your paper (and you are welcome to add additional sections, and subsections as you need them):
-
Abstract The abstract is a brief summary of your work. It should be written to make the reader want to read the rest of your paper. Briefly state the basic contents and conclusions of your paper: the problem you are solving, why the reader should care about this problem, your unique solution and/or implementation, and the main results and and contributions of your work.
-
Introduction The introduction is the big picture of your work: what, why, and how. It includes a definition of the problem you are solving, a high-level description of your solution including any novel techniques and results you provide, and a summary of the main results of your paper. In addition, motivates the problem you are solving (why should a reader find your work important), and describes your contribution to the area (this may not be applicable to your project).
The first paragraph of the introduction should contain all of this information in a very high-level. Subsequent paragraphs should discuss in more detail the problem you are solving, your solution, and your results and conclusions.
-
Statement of Problem Being Solved
-
Motivation
-
Problem Solution
-
Results and Conclusions
-
-
Related Work This is an essential part of a research paper; discussing related work is a good way to put your work in context with other similar work, and to provide a way for you to compare/ contrast your work to other’s work.
You should use feedback on the annotated bibliography from your project proposal to structure this section; it should be written as a re-write of your annotated bibliography in a single Related Work section.
-
One or more sections describing your Solution
-
Details of the problem you are solving.
-
Details of your solution and the project’s implementation. Even though you may have spent an enormous amount of time writing code, this should not include a listing of any code you wrote. Only if your project is about developing an algorithm or a new language, may code examples be appropriate here.
-
Discussion of how your solution solves the problem.
-
-
Experimental Results demonstrating/proving your solution
-
Explain the tests you performed (and why)
-
Explain how you gathered the data and details of how your experiments were run (any system/environment set up)
-
Present your results. Choose quality over quantity; the reader will not be impressed with pages and pages of graphs and tables, instead s/he wants to be convinced that your results show something interesting and that your experiments support your conclusions.
-
Discuss your results Explain/interpret your results (possibly compare your results to related work). Do not just present data and leave it up to the reader to infer what the data show and why they are interesting.
-
-
Conclusions & Future Directions for your work Conclude with the main ideas and results of your work. Discuss ways in which your project could be extended…what’s next? what are the interesting problems and questions that resulted from your work?
-
A brief meta-discussion of your project Include two paragraphs in this section:
-
Discussion of what you found to be the most difficult and least difficult parts of your project.
-
In what ways did your implementation vary from your proposal and why?
-
-
References At the end of your paper is a Reference section. You must cite each paper that you have referenced…your work is related to some prior work.
Style Guidelines
-
Write in a top-down style. First present the the high-level issues, then expand them. This applies to the overall organization of your paper as well as the organization of sub-sections and individual paragraphs.
-
Conclude each sub-section, section, and entire paper. Each chunk of your paper whether it be a paragraph, a sub-section, a section, or the entire paper should have a conclusion.
Each section and sub-section of your paper should be organized as: high-level important points first, details second, summarize high-level points last.
The introductory paragraph to a section should be written as follow:
-
1st sentence(s): main idea of section or sub-section
-
middle sentences: expansion of the big ideas of this sub-section, or section.
-
concluding sentence(s)
-
-
Use active 3rd person: We present, we show, we demonstrate…
-
Define terms, and always define them before using them.
-
Use figures. Use diagrams to help explain system design, and graphs or tables for presenting results. If your project has a GUI component, then your paper should have some screen dumps of your interface (look at the man page for xwd). You should have a figure showing the high-level design of your implementation.
More detailed writing advice and guidelines can be found here: CS Research and Writing Guide
Draft Feedback
I encourage you to get feedback from a WA on a draft or detailed outline of the Introduction section of your report. See this link for more details: WA Feedback on Introduction
Submit
Due on Tuesday Dec. 19 before 5pm
-
First, check that your report builds correctly. In your
FinalReport
subdirectory, do amake clean
and then amake
to buildfinalreport.pdf
. Check that your .pdf is correct (no missing references or missing figures), and fix .bib entries an other errors before submitting.$ make clean $ make
You can scp your
finalreport.pdf
to your home machine to veiw, or you can email it to yourself by runningmail
on a cs lab machine:# scp from your home machine: home$ scp you@cs.swarthmore.edu:./cs87/Project/FinalReport/finalreport.pdf . # mail from a cs machine: # Enter a line at the command line, then `return` for `cc:`, # then `CNTRL-D` to end the mail message: cs$ mail -s "project report" you@swarthmore.edu -A finalreport.pdf # or just echo something as the message body: cs$ echo "hello" | mail -s "project report" you@swarthmore.edu -A finalreport.pdf
-
Then, do a
make clean
, and add, commit, and push yourfinalreport.tex
andfinalreport.bib
files, and any other files necessary to build your report .pdf to your repo (like figures and graph files).$ make clean $ make $ git add finalreport.tex finalreport.bib $ git commit "final report done" $ git push
Project Presentation
Due: Monday Dec. 11 and Tuesday Dec. 12 (Mon: 1:15-2:45, 3-4:30 and Tues: 1:15-2:30)
Upload your talk slides and add link to them
to presentation google doc by by 1pm on your presentation day).
You will give a 30 minute presentation of your work in a 35 minute time slot. Plan for 30 minutes of presentation with 5 minutes of questions.
Your scheduled time is available in Presentation Schedule.
Add a .pdf of your talk slides to the presentation google doc prior to by 1pm on Monday Dec. 11 and Tuesday Dec. 12. You may additionally add .pptx (using MacOS fonts) and/or a link to a google doc of your slides if you want to present using either of those formats instead of a pdf. However, you should make sure to also upload a .pdf regardless of if you plan to deliver your talk from this format.
Talk Organization
Your talk should include the following:
-
Introduction to your project, including motivation, problem statement, and a clear statement of question your project is addressing and the parallel and distributed focus.
-
Description of the main algorithm/system you implemented/tested. Include figures and examples.
-
Clear description of the parallel or distributed parts/focus of your work, its parallel/distributed goals.
-
Description of experiments run (and why/what hypotheses).
-
Clear presentation of results, and explanation of what they show.
-
Conclusions, Future directions (what is, or would be, next?).
Your talk should also have a logical narrative flow to it, so think about structuring your presentation in a logical way. Striving for a top-down approach will help with this. Using lots of figures and diagrams will help explain your project. Simplify, at least at first. And make it clear where the parallel/distributed focus is in your project. Make sure to define terms you use, and explain algorithms in pseudo code.
See my {oralpres}[Oral Presentation Guide] for more detailed information on organizing, slide design, presenting, and preparing for an oral presentation. There are also links to other oral presentation advice.
Also, use these CS87 final presentation rubrics to help you structure your talk and determine good slide content.
Presentation Schedule
Due by 1pm on Monday Dec. 11 and Tuesday Dec. 12 uploaded a .pdf version of your talk slides on our system and add a link to them to presentation google doc. You may additionally upload .pptx or links to google doc presentation too. See Upload Slides for more details.
You are required to attend all presentations: both Monday sessions and the Tuesday session. The only exception is if you have another class during one of the Monday sessions (please fill out form posted to EdStem to tell me details about the course if this is the case). Be sure to schedule your other events. meetings, work schedules, etc., on these two days with this in mind. You will give feedback on each group’s presentation. Your feedback is part of your grade. |
Monday Dec. 11: 104 Sci Cntr | Tuesday Dec. 12: 104 Sci Cntr | |||
---|---|---|---|---|
1:15 |
Derrick, Kevin, Tony Hypercube P2P Chat Network |
1:15 |
Abdel, Ibrahim, Zakir CronMon: A Centralized Scheduler Leveraging Peermon |
|
1:55 |
Daniel, Ivan, Jonathan SwatDocs-Realtime Collaboration |
1:55 |
Aarushi, Mandie, Rodas, Ziming Parallelizing Network Flow Algorithms |
|
break |
break |
|||
3:00 |
Leo, Sasha, Yatin .sly-Recreating BitTorrent |
|||
3:40 |
Dzineon, Henry, Sean, Tommy Integrating CUDA and MPI for Discrete Event Simulation |
You are welcome to swap presentation times with another group. Just let me know the change in presentation schedule if you do.
Upload Slides
Create a .pdf version of your presentation talk slides and scp them into your public_html subdirectory on the CS system, set permissions so that they are world readable, and add a link to them from the presentation google doc. Make sure you upload a pdf version before by 1pm on your presenation day.
-
From your home machine, copy the pdf version of your final presentation slides (e.g. final.pdf) into your public_html subdirectory on the CS system:
$ scp final.pdf you@cs.swarthmore.edu:./public_html/.
See the details about setting up your public_html directory on the CS system from the webpage directions from Paper1 assignment.
-
On the CS machine, set permissions so that this file is world readable:
$ cd ~/public_html $ chmod 644 final.pdf $ ls -l -rw-r--r-- ... final.pdf
-
On the Final Presentation google doc add a link to your talk slides:
-
Insert → Insert Link
-
Enter the url to your talk slides and name the link something (I have an example off this page you can follow). The url will be something like this:
https://www.cs.swarthmore.edu/~you/final.pdf
Test out the link from the google doc page after you add it to make sure you download your talk slides .pdf from the link you added to the google doc.
-
Project Code
Due: Wednesday Dec. 20 by 5pm push to your repo before 11:59pm
You should be periodically adding and pushing your project code to your Project repo, but I’m giving an extra day after the presentations for any final code clean-up.
You should push to your Project repo (in the source subdirectory) all your
project code, Makefile, run scripts, etc. Make sure to include a file
named README.final with the information described below.
Specifically, the source/
subdirectory of your Project repo
should include:
-
Everything I need to build and run your project
-
source code
-
run scripts
-
Makefile
-
etc.
The only exception is do not include large input or output files in your Project repo. Instead, tell me where these are (e.g., in
/scrach/username/subdirectoryname/
or on a specific CS machine’s/local/subdirname/
). -
-
A
README.final
file that explains how to build and run your project. Give me example command lines for running. It should take no more than my running make to build, but if that is not true, then also tell me how to build your project. Also, give me any information I need to set up a run environment (again this would be a good thing to include in your Makefile), and any information I need to use any run scripts you have. If your project only runs on XSEDE resources, then give me much more detailed run instructions.
Final Version of your Code
Make sure that the final version of your project code that push includes code that is:
-
well commented
-
attributes the authors (you), and, IMPORTANTLY, if you used some code from other sources in your code, make sure that you cite that source in a comment around that code.
/* this function is from Jo Schmoe of (list org or paper or url) */
If you are using full libraries from other sources, those usually have a top-level comment with the author’s name and organization, and often a copyright statement. If not, add a top-level comment like the above to the file saying where it came from.
This should be done for larger portions of code you used from other sources. This does not apply to code you wrote where you may have looked for some examples of how to use a particular library or structure something similar to what you were doing. For example, looking at some examples of calls to MPI or other library code, looking at examples of cuda and applying to your solution, are fine, and you do not need to cite these examples that helped you figure out how to write your code.
If you implemented an algorithm based on its description from a paper, you don’t need to cite that in a code comment (however, it is a nice thing to do as a reminder of from where it came). If a paper had a full code solution that you copy and pasted into your code, then you do need to cite that code in a comment.
-
compiles and runs (do a make, a test that it runs, then a make clean before submitting).
Project Demo
Due: Dec 18, 20, 21
Sign up for a demo slot on the demo google doc.
During final exam week, your project group will give me a 30 minute demo of your project. All your project group members must be present for the demo.
It is up to you to decide what you are going to demo. Before we meet, decide what you are going to show me, come up with a simple demo script, and run through it several times to make sure that there are no glitches during the demo. This is your chance to show off all your hard work; you want to convince me that you did something interesting and that you did a substantial amount of work.
Handy Resources
-
My Research and Writing guide: resources for finding related work, information about creating an annotated bibliography, and organizing report organization.
-
Tools for creating documents (latex, bibtex, and others)
-
Resources Section of CS87 homepage has links to other resources