CS 336: Syllabus

Syllabus for Spring 2016

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.

Grading

The course grade will be determined as follows:

Projects 75%
Class Participation 10%
Final Exam 15%

Preliminary Schedule of Topics

DatesTopic
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 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.

Resources

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).

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 (we actually recommend you do that for the base Dialog class). 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. I am sure I don't need to talk about dishonesty in a class like this, but I feel compelled to point out that, in addition to the ethical implications of dishonesty, you undermine your ability to learn when you cheat. 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/.