From BCCD 3.0

Jump to: navigation, search

Ideas Page Summary

This page serves to house long-term project ideas that may not be suitable for Trac tickets. Generally speaking these are things which users have requested, or would be "nice to have", or "we've wanted to do this, but haven't had time." The Ideas and project descriptions are organized by how hard they're likely to be.

Due to the nature of the BCCD's primary purpose as a parallel programming and cluster computing platform, most projects are likely to require skills in one or more of the following areas:

Don't worry, if you don't know one or more of the above there are still many things you can do to contribute to the BCCD project as you learn more about parallel programming and cluster computing.

The programming languages predominately used in the BCCD are currently:

Some projects could be better suited in a different language; we're not bound to the above languages. If you want to tackle something using, say, Ruby or some other language, we'd be happy to see it.

If a project has different requirements, they will be listed below as part of the project description.

Information about how to get started as a BCCD developer can be found here.

A note about our use of the word "Application"
A few of the project/idea descriptions below use the term "application." In the case of the BCCD, an "application" is a piece of software used to demonstrate concepts in the context of computational science, parallel programming and/or cluster computing. For example applications are programs like GalaxSee (used to show speed-up and communication intensity of an N-Body code), or Conway's Game of Life (used to show behavior of cellular automata in parallel environments). On the BCCD, they are used as tools to teach and discuss specific topics and ideas in computational science, parallel programming, and/or cluster computing.

Easier Projects

While possibly not "easy," per se, these projects are best suited to someone who is either not familiar with the BCCD or only beginning their parallel programming life.

  1. Global configurator - A script to harvest commonly used information from the environment, i.e. MPD port, headnode name, pkbcast port number, etc. For the full list see ticket 500 in Trac.
  2. Collection of usage information. Both the quantity of the information we ask users for and the transport mechanism could be improved.
  3. End user documentation. While we have end user documentation it needs to be re-organized and improved. This project is not a good choice for students working as part of GSoC.

Moderate Projects

The projects in this list fall, naturally, between those above in Easier Projects and those below in Harder Projects. Depending on how the developer or student decides to tackle it, they could quickly turn harder or easier. Therefore, the difficulty rating for projects in this category should be taken with a grain of salt.

Custom ISO Generation/Download Utility

To satisfy user requests, we've had to add quite a few software packages (e.g., MPICH2, OpenMPI, the CUDA SDK, the JDK). As a consequence, the size of the ISOs has grown to unreasonable sizes (larger than a standard CD) and we've had to start cutting back on pre-packaged software.

This project involves creating the infrastructure (both user-facing and backend) for allowing a user to download an ISO with custom sets of software. Alternately, if a user doesn't know what they want (or doesn't care), provide an ISO with the bare-minimum required software. Ideally, this should be implemented using apt or a similar package management system to avoid reinventing "the wheel."

This project does not require specific parallel programming knowledge, but will require familiarity with:

Better Demo Applications

One of the primary uses of the BCCD is in LittleFe. The BCCD developers and LittleFe project coordinators spend a lot of time showing off LittleFe at conferences, workshops, and similar venues. The current demonstration application(s) are a little outdated and not very flashy. Similar to "More Applications" item below, this project is to design an application that is interactive, showy, and utilizes distributed computing techniques. There are many directions that this project could go in, including some kind of interactive (possibly multiplayer, possibly touchscreen-based) game designed to teach certain topics in CS, parallel programming, or science.

Experience in designing clean, high-quality user interfaces and smooth graphics is a plus for this project.

Harder Projects

These projects potentially require deeper knowledge of parallel programming, operating systems, or the BCCD itself. As a result, they either require strong technical/scientific/programming skills up front or have a steeper learning curve than projects above.


The BCCD is upgraded frequently enough that users who are running a liberated system need to have an easy way to upgrade from one version to the next. There are numerous possible ways to go about this project, but in all cases there are some points to be aware of:

Updates, like in most operating systems, have the potential to get very complicated, involving the kernel, kernel modules, package dependencies, etc. so there are a large number of edge cases to consider in this project.

More Applications

The BCCD ships with a few "applications" designed to explore various parallel programming paradigms and scientific domains. BCCD development recently has been focused on the system rather than example scientific applications. This project involves either updating the existing applications to use modern visualization technologies, or adding more applications that come from a variety of scientific domains and/or exhibit behavior from various parallel computing styles (e.g., as in those outlined in the Berkeley Dwarfs).

Prior experience in parallel programming is required for this project.

Personal tools