Date of Award

Fall 2016

Project Type


Program or Major

Computer Science

Degree Name

Master of Science

First Advisor

Philip J Hatcher

Second Advisor

Michel H Charpentier

Third Advisor

R. Daniel Bergeron


Parallel programming is no longer restricted to supercomputers and academia. From the decline of Moore’s law with respect to CPU clock speed, hardware designers have introduced multi-core CPU architectures in commodity hardware. Consequently software engineers can not expect to reap the performance benefits of such target hardware without exploiting parallelism. Unfortunately, writing multi-threaded software comes at a cost. The costs are two-fold: the amount of time invested to parallelize software is greater than that of writing single-threaded programs, and the safety of multi-threaded software is difficult to ensure. Multi-threaded software allows threads to operate in the same memory-address space. When more than one thread has access to the same memory address, an unexpected interleaving of memory accesses can lead to subtle concurrency bugs. Intentional Concurrent Programming is a model that requires programmers to explicitly state their intents with respect to threads sharing objects in memory. Concurrency bugs will be detected and reported as violations of the stated intents. The current implementation of this model, known as V3, is thread-based, meaning that users deal directly with individual threads. The goal for this thesis is to generalize the model to be task-based. This abstraction not only allows the user to view the program as a collection of tasks to be executed by a pool of threads, but also removes the need to deal directly with individual threads. The hypothesis is that intents can be added to a task-based system, and common task-based applications can be expressed with the resulting system.