Computer Science 335
Parallel Processing and High Performance Computing

Fall 2024, Siena College

Final Project

Groups/Topic matching through: 9:30 AM, Monday, November 4, 2024
Groups must be formed by: Wednesday, November 6, 2024
Proposals due: 9:30 AM, Monday, November 11, 2024
Progress reports due: 4:00 PM, Tuesday, November 26, 2024
Complete paper drafts due: 4:00 PM, Monday, December 2, 2024
Presentations: In class, Monday, December 9, 2024
Final submission: 4:00 PM, Monday, December 9, 2024

One of the requirements for this course is to complete a final project that will determine 15% of your grade. You may choose your own topic related to parallel processing to study in more detail than we have as a class. Nearly all projects will involve programming, but the amount and complexity of the coding effort may vary from topic to topic. You will report on your project through a paper and presentation at a minisymposium to be held at the end of the semester.

You are expected to work in groups of size two or three. Individual projects or groups of size four may be approved on a case-by-case basis. Groups must be formed and all repositories created (regardless of group size) by Wednesday, November 6, 2024.

Matching Groups to Projects

Through 9:30 AM, Monday, November 4, 2024, we will work toward matching group interests to make sure we end up with a good collection of projects by contributing to a shared document. Please start thinking about project ideas right away and put those ideas in the document. This document can also help those looking to form groups to find others with similar interests.

Here are some ideas to consider when choosing your topic:

These are just ideas, and you should not restrict yourself to this list. Hopefully everyone can find an appropriate topic that they find interesting. You might also find it useful to browse recent journals and conferences proceedings to get a feel for some current research projects in parallel processing. The Supercomputing conference is a top conference in the field, for example.

I should be able to create a dedicated multi-core Linux virtual machine on Siena's cloud server for any group that would like to use such an environment for development. This would also allow you to pursue a project that requires administrative access. If you think you may be interested in this, just let me know and I can work on getting you set up.

Repository Creation

Rather than creating repositories through the GitHub Classroom mechanism we usually use, each group can create a repository for their project, housed in one group member's GitHub account, with other group members granted write access and your instructor granted read access (if the repository is private). Alternately, you can request a repository to be created in our course's GitHub organization, and it will be shared with all group members.

Submit your repository's URL through the "Final Project Group Formation and Project Selection" assignment in Canvas, no later than Wednesday, November 6, 2024.

Document Formats and Sharing

The parts of the project that involve submission of a document (proposal, progress report, draft, and final paper described below) may be submitted by providing any of the following in the appropriate Canvas assignments:

  1. a link to a shared Google document (could be a standard Google document or a .docx Word file shared there, if you prefer)
  2. a link to an Overleaf LaTeX document
  3. a link to a PDF document housed in your group's repository

The Proposal

By 9:30 AM, Monday, November 11, 2024, submit a link to a one page a proposal in the "Final Project Proposal" Canvas assignment. Your proposal should briefly describe the project you plan to complete and how you plan to go about it. Describe the major milestones for your project, a rough schedule for achieving these milestones, and which milestones you believe are most important for your project to be considered a success. If you will need access to any special hardware or software, include that in your proposal. Your proposal should make it clear that you have an interesting, worthwhile, and relevant topic and that it is feasible in the time available.

The Progress Report

By 4:00 PM, Tuesday, November 26, 2024, submit a link to a progress report in the "Final Project Progress Report" Canvas assignment. This should consist of a detailed outline (or better yet, an early draft) of your paper including sources, and a description of the design and current implementation status of your software, as well as a more specific timetable for completion of the project.

The Paper

The writeup should be organized as research paper. You should begin with a title, author list, and abstract. The main body of the paper should be organized into sections including:

  1. An introduction in which you describe the general topic and the particular aspects you will be examining, including a list of the upcoming sections and what each will cover.
  2. Sections comprising your main text, where you describe what you have done, how you have done it, and what you have learned. There should be a section introducing the language, a section summarizing how the language addresses a list of language features studied (garbage collection, names, supported data types, operators, inheritance, calling conventions, control structures, selection constructs, etc.), a section highlighting features used and how they compare to other languages, and a section describing the software developed.
  3. A conclusion, which should include ideas for future investigation into your topic which were beyond the scope of your paper.
  4. A complete list of citations. Citations of web pages are acceptable in some circumstances, but books, articles in conference proceedings or journals, or technical reports are preferred.

Proper English and a good technical writing style are important. Writing well is very difficult - it is an iterative process and cannot be done all at once. Be precise and be concise. Check your spelling and grammar carefully. Most papers will be around 15 single-sided pages, using 1.5 spacing, one inch margins, and a 12-point Times Roman font (or as close as you can come). Please do not adjust margins and font sizes to force a certain length. You are encouraged but not required to use LaTeX to typeset your paper. My LaTeX example in a GitHub repository is already set up with an appropriate format that you can upload to the Overleaf site. Length is not important - content and quality are. Papers shorter than 10 pages or longer than 20 pages are acceptable, if the length is appropriate for the content.

Submit a link to your draft by 4:00 PM, Monday, December 2, 2024, as complete as possible, to the "Final Project Draft" assignment in Canvas. The more complete this draft, the better feedback you will receive to be able to improve it and the more you can focus on programming over the last week or two. You may also submit additional drafts for feedback, but keep in mind that it may take a day or two to get to them.

Submit your final version by submitting a link to the "Final Project Paper" assignment in Canvas by 4:00 PM, Monday, December 9, 2024.

The Project

You should submit your source code and instructions on how to build and run it. The software should be described in the paper, and must be well-documented in a form appropriate for the programming language(s) used. Please make arrangements to demonstrate your program(s). Source code should be committed and pushed to your repository and demonstrations completed by 4:00 PM, Monday, December 9, 2024.

The Presentation

Each group will present a summary of their work to the class. Include background information on your project, the motivation for your project, a description of what you did, and a summary of what you learned. Software demonstrations may also be appropriate. Prepare slides or web pages. Rehearse your presentation, paying special attention to timing. Presentations of about 20 minutes each will take place during a class minisymposium to be held in class on Monday, December 9, 2024. All group members must participate in the presentation. Attendance is required for the entirety of all presentation sessions, not just when your group is speaking. Please also submit a link to or a file containing your presentation materials through the "Final Project Presentation" Canvas assignment by 4:00 PM, Monday, December 9, 2024.

Grading

This final project accounts for 15% of the course grade. The grade will be based on all aspects of the project, including the proposal (1% for group formation/project selection in the shared document, 5% for completeness of the proposal itself), the progress report (7%), the design, documentation, style, and correctness of the software developed (20-40%), the content, writing style, and completeness of the draft (15%) and final version (20-40%) of the paper, and quality of the presentation (12%). The breakdown between software development and the final paper will depend on the amount of programming required for each project. No credit is given for attendance at the minisymposium, but penalties will be applied for missing all or part of it.

Academic Honesty Guidelines

Collaboration within a group is unrestricted. Since each group is working on a different project, you are free to discuss your projects with each other. If you wish to use or refer to any software libraries or outside source code beyond the standard language (C, C++, Java) libraries, check with me first. All sources must be cited properly. If in doubt about anything related to Academic Honesty, ask now and avoid problems later!

Final Thoughts

You have several weeks, so the expectation is for several weeks of work. You will not be able to do a good job if you put it off. It doesn't need to be a Ph.D. thesis, but must be much more substantial than your average 1-2 week programming project.