Title image Spring 2018

Syllabus for Spring 2018

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 2018, 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 Project 15%

Preliminary Schedule of Topics

Feb 7 - Mar 2C Programming
Mar 5 - Mar 23POSIX Threads
Apr 2 - Apr 20General Purpose GPU Programming
Apr 23 - May 11MPI Programming

Programming Projects

There will be one programming project each week (due Friday 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!


All programming projects will be due at the end of the day on Friday (i.e. midnight). All programming projects must be submitted on time to be considered for full credit, except that every student is allowed one free 4-day extension to one project. Let Stephanie know when you are taking your extension. Late projects more then 24 hours late will be accepted, but won't be given any points for extensions. Projects for which you use your 4-day extension must be turned in by midnight on Tuesday for full credit.

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.

Academic Honesty

It is vitally important that you turn in work that is your own. As I said above, you may not copy code from another student. However, there are cases in which you may copy code from the web (e.g. hello-world code in MPI). In these cases, cite the place you got it from in your comments. Getting solutions for small parts of your programming problem is perfectly reasonable. Your overall design, however, should be yours. We tell you not to copy from friends in the course because they are designing the same (or very similar) software. So, just be honest about where you find code. For one-line solutions (such as the sort you might find on Stack Overflow), use your discretion as to whether or not it is necessary to cite them. Honesty, integrity, and personal responsibility are cornerstones of a Colby education and provide the foundation for scholarly inquiry, intellectual discourse, and an open and welcoming campus community. These values are articulated in the Colby Affirmation and are central to this course. Students are expected to demonstrate academic honesty in all aspects of this course.

Academic dishonesty includes, but is not limited to: plagiarism (including quoting sources without quotation marks around the borrowed words and a citation); presenting another's work as one's own; buying or attempting to buy papers or projects for a course; fabricating information or citations; knowingly assisting others in acts of academic dishonesty; violating clearly stated rules for taking an exam or completing homework; misrepresentations to faculty within the context of a course; and submitting the same work, including an essay that you wrote, in more than one course without the permission of instructors.

Academic dishonesty is a serious offense against the college. Sanctions for academic dishonesty are assigned by an academic review board and may include failure on the assignment, failure in the course, or suspension or expulsion from the College. For more on recognizing and avoiding plagiarism, see the library guide: avoiding plagiarism.

Sexual Misconduct/Title IX Statement

Colby College prohibits and will not tolerate sexual misconduct or gender-based discrimination of any kind. Colby is legally obligated to investigate sexual misconduct (including, but not limited to sexual assault and sexual harassment).

If you wish to speak confidentially about an incident of sexual misconduct, please contact Colby Counseling Services (207-859-4490) or the Director of the Gender and Sexual Diversity Program, Emily Schusterbauer (207-859-4093).

Students should be aware that faculty members are considered responsible employees; as such, if you disclose an incident of sexual misconduct to a faculty member, they have an obligation to report it to Colby's Title IX Coordinator. "Disclosure" may include communication in-person, via email/phone/text, or through class assignments.

To learn more about sexual misconduct or report an incident, visit http://www.colby.edu/sexualviolence/.