CS 336: Syllabus

Syllabus for Spring 2014

Course Outline

This course is an introduction to the principles and applications of parallel and distributed computing. Parallel and distributed processing are used in many contexts to increase the efficiency of both large and small computations. In the spring of 2014, you will have the opportunity to write parallel or distributed programs in three contexts -- (1) multi-threaded programming with POSIX threads, (2) general purpose computing on a graphics processing unit, and (3) MPI proamming on a cluster.

Learning Goals

  1. Students learn to ``think in parallel''. They have a clear mental model of how multiple threads of execution work together to solve one problem.
  2. Students understand and can implement multi-threaded applications in three environments: (1) multi-threaded computing on a shared memory multi-processor, (2) general purpose computing on a graphics processing unit, and (3) and message-passing on a distributed-memory, multi-processor.
  3. Students can use documentation to teach themselves the details of each new programming environment.
  4. Students write project reports that include precisely and concisely described results and in-depth analyses of program output and performance.


The course grade will be determined as follows:

Projects 75%
Class Participation 10%
Final Exam 15%

Preliminary Schedule of Topics

Feb 6 - 20C Programming
Feb 25 - Mar 13POSIX Threads
Mar 18 - Apr 17General Purpose GPU Programming
Apr 22 - May 8MPI Programming

Programming Projects

There will be one programming project each week (due Thurs night at midnight). You are encouraged to collaborate with classmates, but are individually responsible for the material (remember to cite your colleagues in your write-up). The programming projects will consist of a required component (correct completion of which will earn you a B or B+) and optional extensions. Extensions increase your grade, with more or more complicated extensions earning you a greater increase.


We will be using exclusively on-line resources for this course. The course website will serve as a portal through which you can find necessary readings and documentation. Please check here often, as it will be updated frequently.

Class Participation

You are expected to attend every class. Discussion is a vital part of the learning experience and we cannot have good discussion without you!

Late Assignments

It is important to complete your work by the deadline. In this course, we will pushing our infrastructure to its limits. This means there will be problems. Start early! Unless there is a catastrophic failure that lasts for multiple days, late projects will be penalized (10% per day past the deadline).

Academic Honesty

Honesty is at the heart of the academic enterprise. I do not expect to encounter any dishonesty among mature computer science students, but if the unexpected happens, I will not hesitate to follow the procedures in the Colby College catalogue. If you have any questions, please ask me!

Office Hours

Please visit me in my office! During office hours, I will of course be available. Outside of office ours, I will often be in my office with the door open. Please come in! If you want to be sure I will be there, just ask me in person or send me an email. I will do my best to be there.