Course Project

Due Monday, April 28, 11:59 pm Central Time

There is no grace period for this assignment. The deadline is firm and no late submissions can be accepted (or are even possible).

In this course, we express all date/times in Central Time.


The programming assignment project should demonstrate the ability to write a quality, full-fledged C++ program from scratch. It will be a medium-sized (1,000 lines of code or more) programming project, for which you will design and implement a solution to a parallel scientific problem of you choosing. The project should demonstrate an ability to use important features of C++, especially standard C++ data structures and algorithms, and parallel programming techniques and facilities.

Each project will prototype key features, proposed by the student and approved by your TA or instructor. The core of the system architecture must be implemented in C++ utilizing the facilities and programming constructs described in the lectures. Project implementations may utilize tools and technologies readily available on the internet. All source code obtained from an external source must be properly marked and the source must be cited. The use of un-cited code is plagiarism.

After the submission deadline we will organize presentations of your projects during the last two lectures at the end of this semester. This will be a great opportunity for you to show off the results of your work. Please see the section about the presentation for details.

Possible Projects

You are expected to come up with your own project. Please feel free to chose something that relates to your your own research (if applicable) or somethings otherwise interesting to you. Talk to the TA or your instructor before you start working on something big, however.

Do not be afraid of choosing something too complicated. Our project is mostly about how to design and develop parallel software with the additional goal to produce a prototypical implementation. It will not held against you if you do not complete all of the features initially envisioned. You will receive good grades as long as you prove that your design enables a correct and robust implementation of the initial features.

Many medium sized and advanced project ideas can be found online. Often you can even download the source code for those. Please do not fall into the trap of downloading one of those source code distributions with the goal of using it as the result of your project work. Remember, if you can find it on the web, so can we. However, these projects can give you a good idea of what features you may want to implement. Thus, please feel free to take some of your projects requirements and user stories from the web. The actual implementation however should be yours.

Getting started

In this course, we will manage assignments and the project in repositories hosted on Github. The moment you accept an assignment on Github Classroom, you will get access to your own repository that is a clone of the original repository containing the starter code. Your clone of this repository is private by default. This means that nobody except yourself and the course staff is able to see it.

You are responsible to keep the visibility of the repository and its content private. If you change your repository’s visibility to public or make the content of your repository available to others in any way, then you make yourself vulnerable to allegations of plagiarism - with all related consequences.

Please be also aware that by accepting an homework assignment you agree on sharing your name and your LSU email address in the context of this course with Github. Please be aware that the work you turn in for this course, along with the respective student identifiers will be submitted to Github for review, for providing feedback, for performance analysis, and for grading purposes.

Here’s what to do next:

  • Open a browser and navigate to this url.
  • If asked, select your name from the list
  • Click the “Accept this assignment” button.

You should see a new page which says “You are ready to go!” The page will provide the link to your project repo, e.g., https://github.com/hkaiserteaching/csc4700-spring2025-project-your-name. Click on that link.

You will now see the homepage for your project repo.

At this point, you’ve created a clone of the starter repository on Github.

Next, if you are working on your local machine, you’ll want to create a clone of the project starter repository on your local machine as well. For that step you need to have all prerequisites for this course installed on your local computer (CMake, Git, Visual Studio Code).

If you click on the blue “Open in Visual Studio Code” now, you should see VSCode open a window on your local machine with the repository cloned. Use this only if you are working based on a local installation of the prerequisites.

If you prefer working fully online using codespaces, follow the instructions here to create a new Github Codespaces instance and attach a fully online version of VSCode to it.

Open the Repository in the Docker Container

The starter repository has been set up in a way that allows to seamlessly run the project in an docker environment. For this:

Starter code

The project opened in VSCode should now be built and run. We have added a minimal starter code to the repository that you can change in any way you like. This is just to get you started with setting up the build system, etc.

And that’s it! You’re done!


Table of contents