Home
>>    




Project ideas submitted to date

CS 300A (PDC), Fall 2018

This page lists project ideas submitted to date.

  • Please consider rating these ideas according to your personal level of interest by "midnight" 11/29/18


Your St. Olaf username:

rating id idea
42850-1 CUDA Exploration
Doing something using CUDA(?)
42850-2 Erlang/Rust Exploration
Exploring either Erlang or Rust languages & areas of use
42850-3 Parallel Monte Carlo Simulations
Exploring modeling algorithms (possibly some that employ monte carlo techniques, or possibly markov chains/simulated annealing)
42856-1 Parallel k-Means Clustering
Implement a parallel version of the k-Means Clustering and apply it to a dataset.
42856-2 Image/Audio GPU Compression
Implement a compression algorithm that runs on the GPU.
42856-3 Parallel Linear Solvers
Implement a parallel algorithm that can solve linear systems.
42861-1 Graphic Simulations with CUDA
Use the GPU accelerated library CUDA to parallelize a process or algorithm pertaining to images. This could be simulation of some phenomenon or image editing.
42861-2 Raspberry Pi Cluster
Use two or more Raspberry Pi's to run a program and test its performance against a single Raspberry Pi.
42865-1 Video Processing
A short video will be divided up into frames. In each frame, the red, green and blue pixels will be tallied. If there is a 'significant' change in the distribution of rgb pixels in the screen, then we conclude that it is a transition between two shots in the video. Distribution could be done by dividing up the frame into rectangles based on the number of nodes or threads.
42865-2 RSA Decryption
Use a trial and error method to decrypt messages by using a public key to guess the private key, probably using much smaller primes than actually used. This could practically demonstrate the strength of RSA encryption.
42865-3 Virtual Robot
A server which will issue commands to a robot. Will use 6 nodes as 2 legs, 2 arms, 1 body and 1 head. Will communicate with all body parts simultaneously and make them perform actions as per user request. An action on a node may be just running a program or command on that node. Will keep the states of all parts in check.
42868-1 Rust
Learn about Rust in the context of the ways it can do parallel and distributed computing.
42868-2 CUDA
Learn about how CUDA works.
42876-1 Exploring CUDA
Using CUDA in the GPU machine or the link machine to do a project like image compression, or audio/video compression in using a parallel algorithm.
42876-2 Parallel Linear Solver
Solving linear problems using parallel computation, possibly using a newer parallel programming language like Go or framework like OpenCL. It could be something like solving DFS, BFS or travelling salesman problem.
42876-3 Statistical Predicton using Parallel
Using parallel programming to use statistical modeling and prediction such as K-means clustering with a large amount of train and test data.
42877-1 Simulation of a Virus Spreading
Create a simulation using parallelism to have different cells either infected or act as neutrophils/t-cells. Cells could be made up of arrays in different computers. Neutrophils have the task of stopping the virus from spreading.
42877-2 Encryption
Using openMP, create an encryption algorithm and have multiple machines communicate back and forth. where they have to communicate with each other to encrypt and decrypt any message sent.
42922-1 Simplified RSA Breaking
Use RSA to encrypt things (but with lower primes than any reasonable person would use in 2018) and use parallelism to brute-force into it as efficiently as possible.
42922-2 Simplified OpenCV
Image processing with CUDA, possibly on the GPU machine for increased speed. Make simple filters that take advantage of parallelism in GPU's.
42922-3 Bigger Primes
Extend the Sieve of Eratosthenes program to solve even bigger primes, and see if there's a way to do things even more efficiently (like how one lab asked us to not bother with multiples of 2 except 2 itself)
42924-1 Applications Parallel Computing using Raspberry Pis
Parallelize a program that has applications to the real world or to other fields using raspberry pis. Options are: parallelized game system like Go or Chess, computer vision problems like object tracking, or problems like image similarity search
42924-2 Parallelized Smith Waterman Algorithm
Last semester during the Algorithms course, I worked with a group of people to create our own implementation of the Smith-Waterman Algorithm for DNA sequence alignment. I would be interested in taking that code and parallelizing it so that it could run on multiple threads, potentially also modifying the code so it conducts sequence database search.
42927-1 Parallel Disability
Determine the most convenient but still secure passwords for one handed indivudiuals
42928-1 machine learning/neural networks
parallelizing machine learning or neural networks to increase computational speeds
42929-1 Concurrent LED
We would produce a library capable of simultaneously running multiple LED animations without corrupting the Raspberry Pi.
42929-2 Basic Text Editor
A basic text editor capable of functions such as finding and removing text elements, made more efficient through parallel computing.
42930-1 neural networks
Write a machine learning program that uses MPI and/or OpenMP to compute data faster. It will use nuaral networks to make decisions on input such as pictures or text.
42931-1 Parallel Disability Assistance
Determine the most convenient but still secure passwords for one handed individuals, using Hadoop WMR!
42931-2 Inaccurate Drug Targeting in Drug Design
Exploring real applications of parallel computation in drug design - comparing properties of ligand binding affinity and protein structures. Effectively determining which proteins that are targeted will also affect other proteins.
42932-1 Parallel Disability Assistance
Determine the most convenient but still secure passwords for one handed individuals, using Hadoop WMR!
42932-2 Inaccurate Drug Targeting in Drug Design
Exploring real applications of parallel computation in drug design - comparing properties of ligand binding affinity and protein structures. Effectively determining which proteins that are targeted will also affect other proteins.
42933-1 Rust
Briefly explore the syntax of Rust and its semantics, diving deeper into the PDC-related topics such as Rust's safety features and guarantees. Create a working example of something that works.
42933-2 Raft
An exploration of the Raft consensus protocol, which is widely-used in clustering schemes like Docker Swarm and Etcd's sharing. Discuss the highlights: Leader Election + Log Replication, Membership Changes, Log Compaction, and possibly implement in C/C++ with basic Unix IPC.
42935-1 LEDCoroutines
Create a Kotlin library based off of the AnimatedLEDStrip library (created in C++ during Software Design in Spring 2018, ported to Kotlin at the beginning of the 2018-19 school year) allowing multiple animations to be run simultaneously without corrupting the Raspberry Pi image and without other negative effects. This would be done using the Kotlin Coroutines library, a Raspberry Pi 3 Model B and a strip of WS2812b Neopixel LEDs.
42936-1 LED Expansion
A process that runs multiple LED animations on separate sections of an LED strip, simultaneously.
42936-2 LED's Plural
Running Multiple LED Strips from the same program concurrently.