Course Syllabus

COMP3705/4705 - Parallel & Distributed Computing

Spring 2016

Course Description

Time is nature's way of keeping everything from happening at once.
-- Woody Allen
 
This course will cover widely used parallel and distributed computing methods, including threaded applications, GPU parallel programming, and datacenter-scale distributed methods such as MapReduce and distributed graph algorithms. We'll study the types of algorithms which work well with these techniques, and have the opportunity to implement some of these algorithms. We'll also look at the types of hardware architectures which have been developed along with these computing methods.

Class Meets: Wednesday and Friday, 2:00-3:50pm, Aspen North 026 (basement classroom), Mar. 23 through May 28.

Instructor: Mike Goss (mikegoss@cs.du.edu)

Office Hours:

    • Tuesday: 10:45-11:45am and 1:45-2:45pm (starting week 2)
    • Wednesday and Friday: 4:00-5:00pm (starting week 1)
    • Other times: send me email to set up a time. I can meet with you in person or by phone, Google Hangout, Skype, or FaceTime.
    • Times are subject to change during the quarter. Notification of any changes will be made through announcements on Canvas.

Instructor Office Location: Aspen Hall North, 102A

 GTA: Tom Hamill (Tom.Hamill@du.edu)

 Office Hours:
  • Monday 3:30-5:00, Thursday 4:30-6:00
GTA Office Location: Aspen Hall North, 300C

Contacting the Instructor:

If you have questions outside of class and office hours:

  • For questions which may of general interest, please post them on Canvas under the "Discussions" link. I'll post answers in the discussion, so that everyone in the class can benefit. You can click on a discussion name and then click on "Subscribe" to get email notifications when new postings are made (your Canvas Notification settings control how often you get notifications). 
  • For personal questions regarding grades, absences, etc., please email me directly or see me during office hours.

I will generally reply to questions within 24 hours during the week, and by Monday for questions posted on the weekend.

Notifications and Email Communication:

Your email address in Canvas is the email address that will be used for all course communications. Please check to make sure that this is an email account that you check regularly.

Also check your Canvas settings for email notifications. Click "Account" in the left side panel, then choose "Notifications" in the resulting pop-out panel. Your "Announcement" setting should always be "ASAP". It is recommended that "Course Content" and "Files" notifications be set to "ASAP", other settings to "ASAP" or "Daily".


Textbook

Norm Matloff, Programming on Parallel Machines: GPU, Multicore, Clusters and More. Open source textbook available free at http://heather.cs.ucdavis.edu/~matloff/158/PLN/ParProcBook.pdf.

The textbook will be supplemented with other readings assigned during the course. 


 Prerequisites

Students should have successfully completed these courses, or equivalent (see course descriptions for details):
    • COMP2370: Introduction to Algorithms and Data Structures
    • COMP2355: Introduction to Systems Programming
    • COMP2691: Introduction to Computer Organization
    Labs and programming projects will depend on knowledge of C++ and threads from COMP2355, and general knowledge of computer architecture from COMP2961. In addition, some programming later in the course may require Java programming knowledge from earlier classes.

    Concurrent Courses 3705/4705

    COMP 3705 and COMP 4705 are offered concurrently. Assignments will differ for undergraduate and graduate students. Graduate students should enroll in COMP 4705 to ensure they can use this class to satisfy "Advanced Programming" requirements. Graduate students must complete the advanced version of assignments, regardless of which course number they enrolled in.


    Course Format

    Reading in the textbook and/or on the web will be assigned for each class meeting.

    There will be a lab assignment most weeks during the course. The lab will be described in class on Wednesday, and we'll spend about half of the Friday class the same week working on the lab assignment. Lab assignments will be due on Sunday at 11:59pm. The lab assignments may require some time spent outside of class to complete. Labs must be done individually.

    In addition to the labs, there will be 3 or 4 programming projects. These will be larger projects than the labs. You may work with another student at the same level (undergraduate or graduate) on the programming projects. A sign-up for working in pairs will be provided before the first project is assigned.

    Students are expected to bring their laptop computers to each class in order to do the lab programming assignments, and to follow programming examples.


    Attendance

    Attendance at class is very important in this course. Class discussions will often cover material not in the book or readings. Part of one class each week will usually be spent working on a lab, which will count towards your grade in the class. Should you need to miss a class, please check with a classmate for notes and also check the class web site for any announcements or assignments. If you cannot attend an exam for any reason, or are unable to complete an assignment, contact me as soon as possible in advance.

    Exams

    There will be two exams during the course, both held in the normal classroom at the normal class time:

    Midterm Exam: Friday April 22

    Final Exam: Saturday, May 28. Note that this is on a Saturday, not a normal class day.

    The final exam will have a strong emphasis on the material covered after the midterm exam. Exams will be closed-book, with one exception: you will be allowed to bring a single 8½ by 11 inch sheet of notes to the exams, containing any information that you wish to prepare in advance (you may use both sides of the paper). You may work together with other students in preparing your note sheet before the exam. No electronic devices (phones, calculators, tablets, smart watches, computers, etc.) or other resources may be used during the exams.


    Due Dates, Rescheduling, and Late Policy

    Exams

    If you are unable to take an exam at the scheduled time, you must notify me as soon as possible. Rescheduling of exams and assignments will be possible only in exceptional circumstances, for well-documented reasons.

    Labs

    Late lab assignments submissions will only be possible in exceptional circumstances, for well-documented reasons. Lab assignments must be submitted by the deadline.

    Programming Projects

    For programming projects, the due date and time will be noted in the assignment description. Late submissions no later than 48 hours after the deadline will be accepted with a 20% penalty. You must apply for this 48 hour extension before the deadline (instructions will be included in the assignment). Exceptions may be made to this policy on a case-by-case basis. Please notify me as soon as possible, preferably in advance, if you believe you have a valid reason for an exception to this policy.

    Assignments which are turned in on time will be graded as soon as possible. Late assignments will have a lower priority in grading than on–time assignments, and may take somewhat longer to grade.


    Grading

    Grades will be based on the following items, weighted as shown:

    • Labs: 20%
    • Programming Projects: 40%
    • Midterm Exam: 20%
    • Final Exam: 20%

    Academic Conduct

    Exams must be entirely your own work.
     
    For labs, you must write your own program code, but you may consult with other students (and the instructor and GTA). You may not copy code verbatim, and if you receive help from another student you must include a comment in your code giving credit to the student who helped you (this will not negatively impact your grade or that of the person who helped you). You may use web sites or other outside sources, but you may not copy code verbatim, and you must include a reference to the source.

    For programming projects, you may consult with the instructor or the GTA. You may work individually or together with one other student from the course (you must sign up on Canvas to work together). You may consult with other students, but should credit them. For programming projects, you may not copy code from other students you are not officially working together with, or other outside sources. Any other work drawn from outside sources, whether quoted directly or paraphrased, must contain citations to the original work.
     
    Violations of conduct policies may have serious consequences, including receiving 0 for an assignment or exam, receiving a failing grade in the course, and reporting of violations to the Office of Student Conduct. Please familiarize yourself with the University Honor Code at www.du.edu/honorcode. When in doubt about any academic conduct policy, please consult your instructor or academic advisor for guidance.


    Disability Services Program

    If you have a disability/medical issue protected under the Americans with Disabilities Act (ADA) and Section 504 of the Rehabilitation Act and need to request accommodations, please visit the Disability Services Program website at www.du.edu/disability/dsp. You may also call (303) 871-2372, or visit DSP on the 4th floor of Ruffatto Hall at 1999 E. Evans Ave.


    Religious Accommodation Policy

    Accommodations will be provided to students for religious obligations and observances according to University policy. You are expected to notify the instructor by the end of the first week of class of any absences or other conflicts with the course schedule. For the full policy, please see http://www.du.edu/studentlife/religiouslife/about-us/policy.html.

    Course Summary:

    Date Details Due