CS 87: Parallel and Distributed Computing — Spring 2020
Announcements
Class Info
Professor: Tia Newhall, Office hours: Tuesdays 3-4:30, and Fridays 2-3:30 Office: Sci 249
Class: Tuesdays 1:15-2:30, Science Center 145, Thursdays 1:15-2:30 Science Center 240
Lab Section A |
Monday 1:15 - 2:45 |
SCI 246 |
Lab Section B |
Monday 3:00 - 4:30 |
SCI 246 |
-
Piazza: Q&A Forum
-
GitHub: CS87 Swarthmore GitHub Org
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 required. Designated: NSE, W (Writing Course), CS Group 2 Course
Course Goals
-
Analyze and critically discuss research papers both in writing and in class
-
Formulate and evaluate a hypothesis by proposing, implementing and testing a project
-
Relate one’s project to prior research via a review of related literature
-
Write a coherent, complete paper describing and evaluating a project
-
Orally present a clear and accessible summary of a research work
-
Understand the fundamental questions in parallel and distributed computing and analyze different solutions to these questions
-
Understand different parallel and distributed programming paradigms and algorithms, and gain practice in implementing and testing solutions using these.
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. In addition, we will also read and discuss one or two research papers most weeks. Research paper assignments will be posted to the class schedule and also be listed off the paper reading schedule (available week 2). The paper assigments will be updated over the course of the semester, so check this page weekly.
You will be assigned to a reading group for the semester. Your reading group will meet weekly to:
-
discuss the weekly assigned paper(s) before the in-class discussion.
-
write Reaction Notes to the assigned papers (submit before 9am on Monday discussion day, and bring with you to class class discussion).
There may be some background readings from Dive into Systems textbook. The user name and password for our class' access to the textbook are posted to the piazza page.
Class Schedule
This is a very tentative schedule. It will be updated as we go.
WEEK | DAY | ANNOUNCEMENTS | TOPIC | ASSIGNMENT |
---|---|---|---|---|
1 | Jan 20 | Topics
Weekly Reading: | Paper 1: parallel system Lab 1: pthreads scalability | |
2 | Jan 27 | Drop/add ends (Jan 31) | Topics
For Tuesday Read: |
|
3 | Feb 03 | Topics
Weekly Reading: |
| |
4 | Feb 10 | Topics
Weekly Reading: |
| |
5 | Feb 17 | Topics
Weekly Reading: |
| |
6 | Feb 24 | Topics
Weekly Reading: |
| |
7 | Mar 02 | Topics
|
| |
Mar 09 | Spring Break | |||
8 | Mar 16 | Topics
|
| |
9 | Mar 23 | CR/NC/W Deadline (Mar 27) | Topics
|
|
10 | Mar 30 | Topics
|
| |
11 | Apr 06 | Project Proposal due by 11:59pm (EST) (Apr 07) | Topics
|
|
12 | Apr 13 | Project Work Week git push due due by 11:59pm (EST) (Apr 18) | Topics |
|
13 | Apr 20 | Project Mid-Way Report due by 5 pm (EST) (Apr 24) | Topics
|
|
14 | Apr 27 | Project Final Report due by noon (EST) (May 08) | Topics
|
|
May 13 | Final Project Presentations May 13 (10am-5pm) Project Code due (May 14) |