Semantic Net
 

Overview Administration Calendar Lecture Notes Assignments Links Change Log

  Projects

Graph Application and Kernel

Purpose of this is for each student to identify some significant graph application, and then dive into a kernel that is key to its solution, and implementations of that kernel. Throughout the semester there will be several phases related to this:

  1. Initial Overview: Definition of some general application of interest to you, and a kernel function that is key to its solution. Description of the kernel here is at a high level - pseudocode is fine, with just enough detail to estimate computational complexity for a sequential execution.
    • A presentation defining some general application of interest to you, and a kernel function that is key to its solution. Description of the kernel here is at a high level - pseudocode is fine, with just enough detail to estimate computational complexity for a sequential
    • A short paper documenting the above.
  2. Basic Implementation: Implementation of a basic, probably sequential, implementation, and execution against a variety of sample graphs. A Python implementation is fine.
    • A presentation on your implementation and results
    • An enhancement to your paper from the first pass.
  3. Enhanced Implementation:Re-implementation of your kernel in some advanced paradigm, e.g. parallel (OpenMP or MPI) or in some more graph-domain specific programming paradigm. A more solid sequential implementation with better data structures, heuristics, revised algorithm, etc. is also a possibility.
    • A presentation on your implementation and results.
    • An enhancement to your paper from the second pass.
After both the first and second steps, each student will read and submit reviews on two of the other student papers on different kernels. Those reviews, along with one from the instructor, will be provided anonymously back to each student for consideration in revising their paper. For each pass, each student may choose a kernel paper (first come, first served) as one choice, with the second randomly selected by the instructor. As reference, the following material is available here

Graph Data Bases

Purpose of this project is to identify possible data sets and/or create scalable generators to generate synthetic graphs with controllable characteristics. Groups of students may work together on these.

Graph Programming Paradigms

Purpose of this project is to develop an understanding of different graph programming paradigms.

  1. Each student will prepare and present a presentation on a different paradigm from the literature.
  2. Groups of students will find and install versions of some of these paradigms, and develop short papers overviewing them.
  3. Current Paradigms Report