Computer Science 220-01
Introduction to Parallel Computing

Fall 2013

MWF 2:15-3:30, CSI G12

Professor: Peter Pacheco
Office: Harney 540
Phone: 422-6630
Email: user: peter, domain:
Office Hours: M 3:30-4:30, W 10:30-11:30, F 1:00-2:00, and by appointment

TA: Joseph Tanigawa
Email: user: jtanigawa, domain:
Office Hours: R 1-2 in HR 530, 535, or 536

Class Website:
Class Mailing List: You can post to the class mailing list by sending email to user cs220 in the domain Note that this will only work from your account.

Required: Brian Kernighan and Dennis Ritchie, The C Programming Language, 2nd edition, Prentice-Hall, 1988.
Optional: Peter Pacheco An Introduction to Parallel Programming, Morgan-Kaufmann, 2011.

Prerequisites: CS 110 and permission of instructor, or CS 112.

Coursework and Grades: I will base your final grade on 10 homework assignments, 5 programming assignments, 2 midterms, and a final exam, weighted as follows.
Homework 10 @ 1% each 10%
Programs 1 and 2 5% each 10%
Programs 3, 4, and 5 6% each 18%
Midterms 2 @ 18% each 36%
Final Exam 26%
Total 100%
I will assign grades on a straight scale. Roughly, 90-100% is an A, 80-89% is a B, 65-79% is a C, 55-64% is a D, and 0-54% is an F.

Attendance and Lateness: Attendance is not required. However, you are responsible for all of the material covered in class, regardless of whether it is covered in the texts. Being late to class is unacceptable. You may have one unexcused late arrival. Subsequent late arrivals may affect your grade.

Academic Honesty: As a Jesuit institution committed to cura personalis - the care and education of the whole person - USF has an obligation to foster the values of honesty and integrity. The University requires all the members of the academic community to follow its standards of honesty and integrity. All students are expected to know and follow the University's Honor Code. You can find the full text of the code online at
From a practical standpoint it is fine for you to discuss homework and programs with your classmates. Any other collaboration is unacceptable. In particular, copying another person's work is unacceptable. Students who violate these rules will receive an F in the course. Repeat violators may be subject to more severe penalties.

Computer Access: You may use any of the Computer Science Department computers in Harney 235, 530, 536, and CSI G12.

Learning Outcomes: In this course students will learn
  1. To program in C,
  2. The basics of parallel architectures,
  3. To write parallel programs using several widely used parallel API's,
  4. Basic parallel debugging, and
  5. Basic evaluation of parallel program performance.
Tentative Course Outline:

Week Material
8/20-8/23 Preliminaries. Overview of Parallel Computing.
8/26-8/30 Basic C. Functions in C.
Homework 1 due Friday, 8/30.
9/3-9/6 Pointers and arrays in C.
Homework 2 due Friday, 9/6.
9/9-9/13 The preprocessor, strings and structs in C.
Program 1 due Monday, 9/9.
Homework 3 due Friday, 9/13.
9/16-9/20 Dynamic memory allocation and linked lists in C.
Homework 4 due Friday, 9/20.
9/23-9/27 Basic MPI and the cluster.
Homework 5 due Friday, 9/27.
9/30-10/4 Basic I/O in distributed memory programs.
Program 2 due Monday, 9/30.
Midterm 1, Friday, 10/4.
10/7-10/11 Collective communication in MPI. Bitwise operations in C.
Homework 6 due Friday, 10/11.
10/16-10/18 More collective communications.
Homework 7 due Friday, 10/18.
10/21-10/25 Two-dimensional arrays in C. Data distributions.
Program 3 due Wednesday, 10/23.
Homework 8 due Friday, 10/25.
10/28-11/1 Sorting on distributed memory systems. Basic Pthreads.
Homework 9 due Friday, 11/1.
11/4-11/8 Critical sections, mutexes and semaphores.
Homework 10 due Friday, 11/8.
11/11-11/15 Cache Coherence.
Program 4 due Monday, 11/11.
Midterm 2, Friday, 11/15.
11/18-11/22 Tree search and TSP.
Homework 11 due Friday, 11/22.
11/25-11/27 Barriers, condition variables and thread safety.
12/2-12/4 CUDA.
Program 5 due Monday, 12/2.
Homework 12 due Wednesday, 12/4.

File translated from TEX by TTH, version 4.03.
On 21 Aug 2013, 07:25.