CS510 Advanced Topics in Concurrency

Portland State University, Winter 2018

View the Project on GitHub anthezium/CS510-Advanced-Topics-in-Concurrency

CS510 Course Project

Throughout the term, you will be developing true concurrent code, ranging from synchronization primitives to concurrent operations on data structures.

Because many of the mechanisms we will be using are platform-dependent, it is important that everyone is using the same environment. To that end, we ask that students work remotely on the CS department's general-purpose Linux platform, babbage.cs.pdx.edu. Babbage is a 30-core x86-64 virtual server running Ubuntu Linux with a variety of useful software pre-installed. It is hosted on a 20-core physical server with Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz CPUs with hyperthreading enabled, providing a total of 40 hyperthreaded cores. Gnat also hosts tanto, babbage, and wakizashi, so we need to be mindful citizens of a shared computing environment and always leave some cores unused for the OS and other users.

To connect to Babbage, you will need an SSH client (I suggest using the terminal or iTerm2 for macOS, mosh for Linux/Cygwin and PuTTY for Windows), and an MCECS resource account, which is separate from your ODIN account and is maintained by the CAT. If you do not have an MCECS account, please visit the CS Tutors in FAB 88.

All code will be written in the C programming language, possibly with a small portion in GNU Assembler. We assume you have some knowledge of C; if you need to brush up, we recommend The C Programming Language by Kernighan and Ritchie. A copy of this book is available from the CS Tutors for checkout while you are in the CS lounge (FAB 88).

This project also assumes some knowledge of working on the Unix/Linux command-line, especially the use of the GNU Compiler Collection (gcc), GNU Make (make), and the GNU Project Debugger (gdb). If you need a refresher, consider attending the workshops offered by the CS Tutors near the beginning of the term. If you need additional assistance, contact the TA (Ted) or the course mailing list.

Assignments

The project is divided into the following assignments, roughly increasing in complexity. Assignments are due a week after relevant subject matter is introduced in class. To complete each project, it is highly recommended that you start on them as early as possible!

Grading

The main goal of this project is to give you hands-on experience with the implementation and performance characteristics of some of the ideas and mechanisms we will be encountering throughout the course.

With that in mind, we will use the project primarily as an educational tool, rather than an assessment tool. Your project assignments will not be graded, hence they will not contribute directly to your overall grade. However, the midterm and final exams will contain questions that relate to the project assignments, in addition to those that test understanding of the concepts covered in the lectures and course reading material. Hence, it is important that you complete the project assignments and learn from them. They should not be considered optional!