CS 87 Parallel & Distributed Computing

Spring 2018

Schedule | Course Description | Course Structure/Goals | Readings | Grading | Resources


presentation schedule

Class Information

Professor: Tia Newhall
(see webpage for office hours and contact info)

Tuesday: 1:15 Sci Cntr 128
Thursday: 1:15 Sci Cntr 256
Lab A: M: 1:15-2:45 Sci Cntr 246
Lab B: M: 3:00-4:30 Sci Cntr 246
Office hours: W: 2-4, and by appointment

Course Description

This course covers a broad range of topics related to parallel and distributed computing, including parallel and distributed architectures and systems, parallel and distributed programming paradigms, parallel algorithms, and scientific and other applications of parallel and distributed computing. In lecture/discussion sections, students examine both classic results as well as recent research in the field. The lab portion of the course includes programming projects using different programming paradigms, and students will have the opportunity to examine one course topic in depth through an open-ended project of their own choosing. Course topics may include: multi-core, SMP, MMP, client-server, clusters, clouds, grids, peer-to-peer systems, GPU computing, scheduling, scalability, resource discovery and allocation, fault tolerance, security, parallel I/0, sockets, threads, message passing, MPI, RPC, distributed shared memory, data parallel languages, MapReduce, parallel debugging, and applications of parallel and distributed computing.

Class will be run as a combination of lecture and seminar-style discussion. During the discussion based classes, students will read research papers prior to the class meeting that we will discuss in class. The first half of the course will focus on different parallel and distributed programming paradigms. During the second half, students will propose and carry out a semester-long research project related to parallel and/or distributed computing.

Prereqs: CS31 and CS35 required; prior upper-level CS course experience(s) recommended.
Designated: NSE, W (Writing Course), CS Group 2 Course

Course Goals

Course Structure

CS87 is a seminar-style course. Its structure is designed as a bridge from lecture-based learning to inquiry-based cooperative learning that is the norm in post-Swarthmore experiences, be it graduate studies or work in industry. Although there will be some lecture, all of the work you do in this course will be cooperative, working in partners or small groups to solve problems, to prepare for class discussion, to produce written and lab solutions, and to deliver presentations. As a result, you are directly responsible for a large part of the success or failure of this class.

Required Readings

There is no required textbook for this courses. Instead, there will be required readings from on-line resources posted to the class schedule. We will also read and discuss one or two research papers most weeks. These will also be posted to the class schedule and listed off the paper reading schedule (to be posted week 2) page as well.

You will be assigned to reading groups for the semester. Your reading group will meet weekly to:

  1. discuss the weekly assigned paper(s) before the in-class discussion.
  2. write Reaction Notes to the assigned papers (submit by 9am of class discussion day and bring with you to class).


Class Schedule

this is a very tentative schedule, it will be updated as we go


Jan 22



  • Introduction to Parallel and Distributed Computing
    Read: Sections 1-4

Paper 1: parallel system

Lab 1: pthreads scalability


Jan 29

Drop/add ends (Feb 02)


  • Parallel and Distributed Systems and Algorithms

info: Reading Groups
info: about Reaction Notes

Paper 2: distributed systems

Thurs: tools for running experiments


Feb 05



Paper 3: parallel languages

Lab 2: client server


Feb 12



  • Parallel Algorithms and Languges
  • Read/Skim for Tues: Sections 5

Paper 4: CUDA and GPGPU computing

Mini-Lab 3: openMP


Feb 19

Tues class will be held in Sci Cntr 256 (Feb 20)


  • Parallel Algorithms and Languages, CUDA and GPGPU
  • Read/Skim: Sections 6

Paper 5: Distributed Shared Memory

Lab 4: cuda


Feb 26

Office hours changed to 2-3:30 (Feb 28)


  • Clusters, Distributed Shared Memory

Paper 6: Peer-to-Peer

XSEDE: Create an XSEDE and then a Comet Account

Lab 5: mpi


Mar 05



  • Peer-to-Peer Systems

Paper 7: gpgpu, P2P

Course Project: about

Lab 6: proposal


Mar 12

Spring Break


Mar 19



  • Parallel Algorithms

Paper 8: MapReduce

New: Reading Groups


Mar 26

CR/NC/W Deadline (Mar 30)


  • Parallel Sorting Algorithms
  • MapReduce

Paper 9: Google File System

Mini Lab 7: XSEDE practice


Apr 02



  • Distributed Hashtables

Paper 10: DHTs

Project: Project Parts


Apr 09

Project Work Week README_PWW due (before 11:59pm) (Apr 14)

  • Project Work Week

Paper 10: DHTs

Assn: Project Work Week

Assn: Project Midway Assn.


Apr 16

Midway Project Report due (5pm) (Apr 20)


  • DHT

Paper 11: Failure


Apr 23



  • Distributed Filesystems
  • Distributed Consensus
  • Failure

Paper 12: Security

Assn: Project Final Parts

Assn: Abstract Draft


Apr 30

Abstract Draft due (May 01)

  • Distributed Filesystems
  • Security

Project: All Parts
Presentation: Schedule


May 11

Final Reports Due (May 11 before noon)

May 13

Final Presentations (May 13 2pm-10pm)

May 14

Final Code (May 14)

May 16

Final Demo (by May 16)

Academic Accommodations

If you believe that you need accommodations for a disability, please contact the Office of Student Disability Services (Parrish 113W) or email (studentdisabilityservices@swarthmore.edu) to arrange an appointment to discuss your needs. As appropriate, the Office will issue students with documented disabilities a formal Accommodations Letter. Since accommodations require early planning and are not retroactive, please contact the Office of Student Disability Services as soon as possible. For details about the accommodations process, visit the Student Disability Service Website at: Student Disability Service Website.

You are also welcome to contact me privately to discuss your academic needs. However, all disability-related accommodations must be arranged through the Office of Student Disability Services.

Class Resources

Distributed Systems, Parallel systems, and Cluster links

Reading, Writing, Presentation Advice

Unix and programming resources