Computer Science 220-01
Introduction to Parallel Computing

MWF 2:15-3:20, LS 307

Fall 2017

Professor: Peter Pacheco
Office: Harney 406
Phone: 422-6630
Email: user: peter, domain:
Office Hours: MW 4:45-5:45, F 12-1, and by appointment

TA: Mitch McPartland
Email: user: mbmcpartland, domain:
Office Hour: T 1:15-2:15

Class Website:
Class Mailing List: You can post to the class mailing list by sending email to user: cs220-01 in domain: Note that this will only work for mail sent 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.

Prerequisite: A B or better in CS 110, or a C or better in 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%
Program 1 3%
Program 2 7%
Programs 3, 4, and 5 8% each 24%
Midterms 2 @ 15% each 30%
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. Averages within 2% of the cutoffs will have a plus or minus. For example, if the cutoff between B's and A's is exactly 90%, then 88-89 will be a B+ and 90-91 will be an A-.

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. If you must be late to class, make every effort not to disrupt the discussion.

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 you can discuss homework and programs with your classmates. Any other collaboration is unacceptable. In particular, copying another person's work is unacceptable. This applies to both pseudo-code and code. Students who violate these rules will receive an F in the course. Repeat violators may be subject to more severe penalties.

Computer Access: Most students use their own computers to access the department systems. You can connect using ssh from Linux computers or Macs and PuTTY from Windows computers. When there isn't a class in session you may also use any of the computers in Harney 148, 413, and LS 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/22-8/25 Preliminaries. Overview of Parallel Computing.
8/28-9/1 Basic C. Functions in C.
Homework 1 due Wed, 8/30.
9/5-9/8 Pointers and arrays in C.
Homework 2 due Wed, 9/6.
9/11-9/15 The preprocessor, strings and structs in C.
Program 1 due Wed, 9/13.
Homework 3 due Friday, 9/15.
9/18-9/22 Dynamic memory allocation and linked lists in C.
Homework 4 due Wed, 9/20.
9/25-9/29 Basic MPI and the cluster.
Homework 5 due Wed, 9/27.
10/2-10/6 Basic I/O in distributed memory programs.
Program 2 due Wed, 10/4.
Midterm 1, Friday, 10/6.
10/9-10/13 Collective communication in MPI. Bitwise operations in C.
Homework 6 due Wed, 10/11.
10/18-10/20 More collective communications.
Homework 7 due Friday, 10/20.
10/23-10/27 Two-dimensional arrays in C. Data distributions.
Program 3 due Wed, 10/25.
Homework 8 due Friday, 10/27.
10/30-11/3 Sorting on distributed memory systems. Basic Pthreads.
Homework 9 due Wed, 11/1.
11/6-11/10 Critical sections, mutexes and semaphores.
Homework 10 due Wed, 11/8.
11/13-11/17 Cache Coherence.
Program 4 due Monday, 11/13.
Midterm 2, Friday, 11/17.
11/20-11/22 Barriers and condition variables.
Homework 11 due Wed, 11/22.
11/27-12/1 Monitors and thread safety. CUDA.
Homework 12 due Wed, 11/29.
12/4-12/6 More CUDA.
Program 5 due Monday, 12/4.

File translated from TEX by TTH, version 4.06.
On 22 Aug 2017, 19:53.