CSCI 3366 (Introduction to Parallel and Distributed Processing), Spring 2009:
Guidelines and Requirements for Projects
One of the requirements for this course is completion of a project.
The project will count as 80 points of your total grade.
It should be a little more than twice as ambitious as one of the homeworks.
All projects must be approved in advance by the instructor,
who will be the final arbiter of whether the topic and level of
difficulty are appropriate.
Possible project topics include the following, or you may propose
something else.
If your project involves writing code, you may use any language/library
that can be run on the department's network of Linux machines.
Your project could be the design and implementation of a non-trivial
parallel application. There are many, many possibilities here,
mostly falling into one of two categories:
- Applications that use multiple processes/threads
to improve performance.
You should plan to collect at least minimal performance data
for your application.
- Applications that use multiple processes/threads because they're
inherently parallel.
This category includes what are often referred to as
``classical synchronization problems'' (e.g., the
bounded-buffer problem discussed in class).
You should plan to demonstrate as well as possible
that your application really solves the problem
(e.g., for the bounded-buffer problem a process trying
to read from an empty buffer waits).
Your project can consist of a set of experiments designed to measure
something about a parallel-programming platform or platforms,
such as one of the following.
- Compare different languages/libraries, e.g., MPI versus
Java RMI. For example, you might implement the same
algorithm using two or more languages/libraries and compare
the two implementations, with regard to both performance
and ease of programming. Cross-language comparisons might
compare both absolute performance (different implementations,
same number of processes/threads)
and scalability (different numbers
of processes/threads, same implementation).
- Compare different algorithms.
For example, you might
compare the performance of some of the MPI
collective-communication library functions
(MPI_Bcast(), etc.) with user-written functions to
accomplish the same things.
- Measure characteristics of the hardware/software platform.
For example, you might measure the average time required
to send a message and how it varies (if at all) depending
on message length, identities of sending and receiving
process, processor speed, etc.
- Project proposal.
- 5 points; due April 30 at 5pm.
A brief description of your project topic, no more than
a paragraph. Submit by e-mail.
- Written report.
- 35 points; due May 12 at 5pm.
A brief report (no more than five pages should be required,
and two or three will suffice for many projects)
describing your project's goals and outcome,
in hard-copy form.
It should address the following topics
and include bibliographic references as appropriate.
(1) Describe what problem you are solving and how:
If you are writing an application, describe what problem
you are solving and the design of your parallel algorithm.
If you are conducting performance experiments, describe
what you are trying to measure and the experiments you
will use to measure it.
(2) Discuss your results, including graphs and tables
as appropriate (e.g., to show performance as a function of
number of processes/threads).
(3) Describe any unusual or interesting difficulties
you encountered, and/or what you learned from
doing the project.
- Source code.
- 40 points; due May 12 at 5pm.
Complete working source code for any program(s) you
wrote as part of your project, submitted electronically
as for homework.
Be sure your code is readable and well-documented.
Berna Massingill
2009-04-24