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
- 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. 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:
- discuss the weekly assigned paper(s) before
the in-class discussion.
- write Reaction Notes
to the assigned papers (submit by 9am of class discussion day and
bring with you to class).
Grading
- approx 35%: Class Participation, Paper discussion, Reaction Notes
Each week we will discuss papers in a seminar style format.
This course has some lecture content with in-class activities too, but much of
the course content is generated by the class as a whole. You need to be present
to contribute.
Doing a close reading of the assigned papers and writing responses and questions
prior to each class is essential to preparing for a lively and informed discussion.
In this style of class, you are responsible for contributing to its content; what
you get out of this class is dependent on what you put into paper discussions,
presentations and other class participation.
- approx 25%: Labs
I will assign short labs in the first part of the semester. You will do lab work
with different assigned partners for each lab.
- 40%: Course Project
You will design a project related to parallel and distributed computing that you
will carry out over the second half of the semester. Projects must be done in
pairs or small groups; no solo projects are allowed.
Class Schedule
this is a very tentative schedule, it will be updated as we go