The course project can be done individually or in teams of two. For the course project you have two topic choices:

  1. Concurrency Paper: Write a paper providing an overview of concurrency in a language not covered during the lectures. Your paper should include a description of the different concurrency mechanisms with examples and you should also make an effort to describe how the concurrency mechanisms differ from those discussed in class.
  2. Concurrent Program: Create a concurrent program that demonstrated your understanding of the concurrency concepts discussed in class. For example, create a program with OpenMP and a separate version with POSIX threads and compare the performance. You will need to submit a short performance report with your concurrent program.

All project topics must be approved by the instructor. You should submit the title and a short abstract of your topic as a direct message in Slack by Monday, March 11, 2019.


Project submissions are due on Monday, April 15, 2019. Please submit your source code and/or paper through Blackboard.

Final Presentations

All projects include a final presentation that will take place 11:00am to 2:00pm on Friday, April 12, 2019  (location: Science Building, room UA3140). If you have an exam conflict or are unavailable to attend please contact your instructor to make alternative arrangements. Presentations should be 5 minutes in length and will be followed by 1-2 questions.

Approved Projects

  • Concurrent Go – Norman Lo
  • Parsing GTFS Files Concurrently – Brandon Campbell
  • Concurrent and Parallel Programming in Haskell – Andre Dallaire
  • A Simulated Planetary Landing – Aaron Williams
  • Stock Market Prediction – Bevan Donbosco, Mohammed Alhaq
  • Parallel Shortest Path Finding – Brian Domingo, Christien Soosaipillai
  • Parallelization of 0/1 Knapsack Problem – Colin Orian, Ibrahim Mushtaq
  • Parallel TensorFlow – Colin Shaw
  • Searching with OpenMPI in C++ – Daniel Bullock, Gavin Gosling
  • Parallel Jaccard Similarity with OpenMP and POSIX Threads – Eyaz Rehman
  • Parallel Matrix Multiplication – Josh Lemmon
  • Parallel K-Nearest Neighbours Algorithm – Kevin Desousa, Matt Chan
  • Exploring the Nvidia Cuda Platform – Leonard Zbona
  • Concurrent Raytracing Renderer – Marc Tremblay
  • Multithreaded Programming in Cilk Plus – Mitchell Childerhose, Shayne Taylor
  • Parallel Genetic Algorithm – Miral Panchal, Muhammad Faizan Ali
  • Parallel Sequence Alignment – Musabbir Baki, Kabilan Manogaran
  • Automated Parallelization of Sequential C++ – P.J. Walton
  • Parallelization in Database Systems – Stacey Koornneef, Ryan Jay
  • OpenACC – Taabish Jeshani, Jonathan Perry
  • Concurrent Python – Tehseen Chaudhry, Samatar Mumin
  • Concurrent File Compression – Thomas Blain
  • Concurrency in Java – Devon McGrath
  • Parallel Programming in Julia – Spencer Bryson, Lachlan Johnston