Project Proposal Due: Friday April 3 by 11:59pm
Project Proposal Due: Tuesday April 7 by 1pm (EST)
I encourage you to submit your proposal eariler to get feedback from me earlier.
1. Course Project Changes/Updates
This is an update to the project and project proposal part of the project in reaction to our moving to on-line courses for the rest of the semester.
Because we are all working remotely, I do not believe that a large implementation project will be feasible, nor will a project that requires software installation or dedicated hardware resources. As a result, you may satisfy the course project in a couple ways described below. It is still the case that your project must have a main focus on parallel or distributed computing (PDC).
The details of the project and its parts are still on these pages:
-
original Project Assignment updated with new due dates.
-
original Part1 Assignment updated with Type 2 proposal information.
However, here are some changes to the type and scope of the project you can do in light of our remote class:
1.1. 1. A version of the Original Course Project
This would be based on a topic that that can be implemented and tested on the CS machines (and possibly on XSEDE and the Swarthmore cluster too) using the software that is already installed on these systems.
Projects that fit into this model would include ones that have a main focus on implementation and testing. Some examples include implementing and testing different parallel algorithms, or comparing different implementations of one or a couple of algorithm for performance and scalability. The implementation would use software that we currently have installed, such as CUDA (without ParaVis), OpenMP, MPI, pthreads, or sockets.
You could try parallelizing a sequential algorithm that you learned in another class, or find some parallel algorithms to implement and test.
You could try a hybrid parallelization that combines MPI and pthreads, or MPI and CUDA for example.
You could also try a project that does a little bit of system building, but think about simplifying (and simulating) a lot of your system so you can build something and so that you can test your ideas. I think this will be a more difficult path to take as a remote project.
1.2. 2. An in-depth research report on a PDC topic
In depth research report on a topic related to parallel and distributed computing. This would have little or no implementation and testing, but would involve an in-depth literature investigation of a topic and an in-depth written report on what you learned that would include an extensive bibliography (all or much annotated).
You would start with a general topic, and as the proposal part refine its focus, discovering some papers that would be starting points for your investigation.
Some possible topics include (but are not limited to):
-
Parallel Graph Algorithms
-
Parallel Approximation Algorithms (Branch and Bound, Simulated Annealing are two examples)
-
Parallel Algorithms for solving a class of problems or application domain
-
Cloud Computing
-
Green Computing
-
Consensus in Distributed Systems
-
Security in Networked and Distributed Systems
-
Peer-to-Peer Systems
-
Grid computing
-
Heterogeneous Computing
-
Distributed File Systems
-
Distributed Hash Tables
-
Scheduling
-
Languages (pick ones we haven’t done as main focus)
Many of these are very broad topics, and you would want to refine the focus of your report. I have a link to some papers on these topics here (this is in no way a complete, nor completely recent list): some papers on PDC topics
I will update the proposal details to reflect this option, but the main idea of picking and refining a topic still holds for this. You also will produce an annotated bibliography.
1.3. 2.b The Hybrid
An in-depth research report on a PDC topic with some implementation and testing part.
This would be like the in-depth research report on a PDC topic, but you would have a little bit of implementation and/or testing that you did as well.
A project like this might test out some existing code (or a benchmark suite) on our system to see how it performs, for example. Your report would include these results and a discussion of what you tested, but this would a small part added to the in-depth report that would be the main focus.
The idea is that it is mostly an in-depth report on a topic, but you could include some focus on trying some things out and including some of your own testing and results in your report.