Overview

The goal of the course project is to give you a taste of what it is like to do research:

  • first you will find and refine a project topic organized around a general problem to solve, this will require some examination of related work (resulting in an annotated bibliography)

  • second, you will come up with an initial solution to the problem and a plan for implementing your solution

  • third, you will implement your plan, possibly modifying it as needed

  • fourth, you will evaluate your solution though some type of verification or testing process

  • finally, you will convey the results of your work to others both in written form and through an oral presentation and a project demo.

Since this project spans the second half of the course, it should be a substantial amount of work.

You may choose from a very broad range of projects, but your project

  1. must have a main focus on parallel or distributed computing.

  2. must have some implementation and some experimentation and evaluation parts.

  3. must have some component that looks like science; there should be a general question that you are trying to answer though your project.

Getting Started

You are welcome and encouraged to come up with your own project idea. You may also start with a project suggestion that I provide after break. Anything I suggest is just a starting point for a project idea, and is not fully investigated. As a result, all require some background investigative work and further definition of the problem you are solving and how you plan to solve it.

You should begin with a general idea of the problem you want to look at, then do a literature search of related work and projects to get some ideas of what has been done and what some approaches are to solving your problem. It is fine to do a project whose goal is to reproduce other researcher’s results, and/or to compare different, already developed, approaches to a particular problem. However, there must be some question that you are trying to answer through your project (one example of a general question is "Can distributed service X be efficiently implemented on system Y?"). The answer to the question(s) associated with your project will involve both implementation and testing. Depending on your project, it may have more focus on implementation or more on testing, but every project must have some of both.

You must work in groups on your course project; no individual projects are allowed. Groups of size 2 or 3 work best.

I will help singles find groups, but I encourage you to find your own group based on interests in similar projects ideas.

Any group larger than 4 should split into subgroups of 2 or 3, each subgroup focusing on a significant piece of the larger project. If you form a large group to work on a very large project, then subgroups should work together on project parts in much the same way as individual groups work on their project as a whole. If you create such a mega-group, come talk with me about your project part requirements, and I will set up Project repo for your group members that is a bit different from the default one.

Parts of the Project Assignment

Assignments for the different Project Parts will be linked to here as they are assigned:

Part 1: Proposal and Annotated Bibliography:

Due: by 5pm, Friday Nov. 5

Counts towards 5% of your final grade.

Assignment link: Proposal Assignment


Part 2: Project Work Week

Week 11

Assignment link: Project Work Week (also information about Midway Report and Midway Presentation).


Part 2: Midway Report and Presentation

You will deliver an short oral presentation of your project to the class, and submit a short written progress report and updated project timeline.

Report Due: by 11:59pm, Tuesday Nov. 23 before Thanksgiving break

Presentation Due: in class Thursday Dec. 2 after Thanksgiving break (normally this would be due the same week as the midway report)

Counts towards 5% of your final grade.


Part 3: Final Report, Presentation, and Demo

Presentation Due: Dec. 17 during our final exam slots 2-5pm and 7-10pm in 104 Sci Center

Written Report Due: Dec. 15 before noon

Project Demo Due: during finals week

Project Code Due: Dec. 18 all project code pushed to repo

counts towards 30% of your final grade.

Assignment link: Final Project Parts


Available SW and Systems

Software available on all CS lab machines:

  • CUDA

  • pthreads

  • OpenMPI

  • OpenMP

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.

There is also other software installed on other systems available for your use, like XSEDE and AWS.

Machines and Systems available:

  • CS lab machines: run Cuda, openMPI, openMP, pthreads.

  • Subset of CS lab machines (ssh access only) available only to CS87 students:

     chervil (16 core)
     cs87a (8 core)         stew    (4 core)
     cs87b (8 core)         moltres (4 core)
     cs87c (8 core)         cucumber (4 core)
     cs87d (8 core)         cardamom (4 core)
     cs87e (8 core)         cs87f (8 core)
     cs87g (8 core)         cs87h (8 core)
  • XSEDE Use this only for large experiments after testing on other systems. Bridges-2 has both gpu and compute nodes.

    There are also other XSEDE machines you can use. All machines support MPI, and many also support CUDA and other parallel languages. There are a lot of libraries installed to use too. Contact Andrew Reuther in ITS to get access to other XSEDE machines, or if you need more XSEDE allocation hours.

  • The Swarthore Stelka Compute Cluster.

  • Amazon AWS. Through ITS Swarthmore students get $100 credit to use on Amazon AWS. Spark is Amazon’s MapReduce plus other cloud services.

  • I have a small cluster that could be available for some projects. However, it is running my research OS, and may not be as usable as using an XSEDE or strelka cluster.

  • We may be able to pull a few machines out of general lab use for special purposes if your project requires root access. Using virtual machines in AWS may also be an option for something like this.

We may be able to purchace some smaller hardware for course projects. I have some money to build a small cluster of something like raspberry pi nodes. Anything like this would need to be budgeted and purchaced soon to be available for use in a project.