Introduction to Parallel Computing (CMSC416)
Foundations of Parallel Computing (CMSC616)



  • CMSC416 Section 0101: Tu Th 3:30--4:45 PM in IRB 0318
  • CMSC416 Section 0201: Tu Th 11:00--12:15 PM in IRB 1116.
  • CMSC616 Section 0101: Tu Th 11:00--12:15 PM in IRB 1116.
TA office hours (IRB 2nd Floor):
  • M
  • Tu
  • W
  • Th
  • F


Name Role Office
Abhinav Bhatele Instructor IRB 5218
Alan Sussman Instructor IRB 5142

Contact e-mail:

Description (from catalog)

Introduction to parallel computing for computer science majors. Topics include programming for shared memory and distributed memory parallel architectures, and fundamental issues in design, development and analysis of parallel programs.

Additional description

The objective of this course is to study the theory and practice of high performance and parallel computing. The overall goal is to expose you to programming tools and techniques for parallel environments. This course will focus on current practices in high performance computing technologies, including systems, architectures, programming models, languages and software tools.


CMSC416: Minimum grade of C- in CMSC330 and CMSC351; or permission of instructor.
CMSC616: CMSC411 and CMSC412; or permission of instructor.

Course Topics (Subject to change)

  • Introduction to parallel computing (1 week)
  • Parallel architectures and networks (1 week)
  • Distributed-memory programming (2 weeks)
  • Shared-memory programming (1 week)
  • GPU programming (1 week)
  • Parallel algorithm design (2 weeks)
  • Performance analysis (1 week)
  • Performance issues (1 week)
  • Parallel simulation codes (2 weeks)
Primary Text

Optional Reading: Textbooks by Victor Eijkhout of TACC


Your grade will be determined as follows:

Number % total
Programming assignments5 to 640
Quizzes3 to 410
Midterm exam120
Final exam130
Programming Assignments
  • The programming assignments, in C/C++/Fortran, will use MPI, OpenMP, Charm++, and CUDA to become familiar with parallel/distributed programming on a Linux cluster. Accounts on the university zaratan cluster will be forthcoming.
  • The assignments should be submitted by 11:59 PM Eastern Time on the day they are due. You can submit assignments late only by one day for a 20% penalty and we will not accept them beyond this automatic extension.
  • All submissions of assignments will be via gradescope. Posted deadlines for program submission are sharp; standard Unix time of submission is used.
  • We use autograders for each programming assignment to run some basic checks on your uploaded code. You should make sure that your uploads pass all the tests. You will be awarded between 0-3 points for correctly passing these tests, however, even though these points will be reflected in gradescope, they will not be a part of your grade.
  • The instructor reserves the right to fail, regardless of overall numeric score, students who do not submit on-time a good faith attempt to complete all programming assignments.
Academic Integrity

The CS Department takes academic integrity seriously. Information on how the CS Department views and handle academic integrity matters can be found at Academic Integrity.

Note that academic dishonesty includes not only cheating, fabrication, and plagiarism, but also includes helping other students commit acts of academic dishonesty by allowing them to obtain copies of your work. In short, all submitted work must be your own. Cases of academic dishonesty will be pursued to the fullest extent possible as stipulated by the Office of Student Conduct.

It is very important for you to be aware of the consequences of cheating, fabrication, facilitation, and plagiarism. For more information on the Code of Academic Integrity or the Student Honor Council, please visit

Exams/Programming Assignments

On any graded exams, quizzes or programming assignments, you are NOT allowed to collaborate or exchange code. We compare each student's code with every other student's code to check for similarities. Every semester, we catch an embarrassingly high number of students that engage in cheating and we have to take them to the Honor Council.

Use of Generative AI/LLMs

You can use LLMs such as ChatGPT as you would use Google for research. However, you cannot generate your solutions only using ChatGPT. You must demonstrate independent thought and effort. If you use ChatGPT for anything class related, you must mention that in your answer/report. Please note that LLMs provide unreliable information, regardless of how convincingly they do so. If you are going to use an LLM as a research tool in your submission, you must ensure that the information is correct and addresses the actual question asked.

Uploading code to Github

You may post your assignment(s) code to private Github (or similar service) repos only. As a student, you can make a private repo for free. Just remember that your free premium subscription has an expiry date, and your code becomes public once it expires. The Honor Council can retroactively give an XF (even to students who have already graduated) if your code is then used by another student to cheat. So just be careful.

Posting graded code to a public repo will give you a free ticket to the Honor Council.

GroupMe/ Other Group Chats

We encourage students to talk about course material and help each other out in group chats. However, this does NOT include graded assignments. Talking about release tests is NOT okay.

There have been a couple instances in the past where students have posted pictures/source files of their code, or earlier sections have given away exam questions to later sections. Not only did this lower the curve for the earlier section because the later one will do better, the WHOLE group chat had to pay a visit to the Honor Council. It was an extremely ugly business. Remember that in a group of 100+, someone or the other will blow the whistle. If you happen to be an innocent person in an innocent groupchat and someone starts cheating out of the blue, leave it immediately (and better yet, say you are leaving and say you will report it).

Study Guides

Creating collaborative study guides on Google docs is OK. Encouraged, even. Just do this before the exam, and don't bring the study guide to the exam. Don't add exam questions to the study guide after the early section's midterm.

PRACTICE Exams/ Worksheets/ Lecture examples/ Ungraded Lab examples Totally cool. Highly encouraged to co-create and share (with same caveats as study guides).

Prof. Bhatele is the information owner for all Linux cluster accounts in this class, and all files in those accounts may be inspected by him at any time.

The following are examples of academic integrity violations:

  • Hardcoding of results in an assignment. Hardcoding refers to attempting to make a program appear as if it works correctly (e.g., printing expected results for a test).
  • Using any code available on the internet/web or any other source. For example, using code directly from GitHub or ChatGPT.
  • Hiring any online service to complete an assignment for you.
  • Sharing your code or your tests with any student.
  • Using online forums in order to ask for help regarding assignments.

We will be using Piazza for class discussion. Rather than emailing questions to the teaching staff, I encourage you to post your questions on Piazza. The class sign up link is on ELMS.

Excused Absence and Academic Accommodations

See the section titled "Attendance, Absences, or Missed Assignments" available at Course Related Policies.

Any student who needs to be excused for an absence from a single lecture, due to a medically necessitated absence shall make a reasonable attempt to inform the instructor of his/her illness prior to the class. Upon returning to the class, present the instructor with a self-signed note attesting to the date of their illness. Each note must contain an acknowledgment by the student that the information provided is true and correct. Providing false information to University officials is prohibited under Part 9(i) of the Code of Student Conduct (V-1.00(B) University of Maryland Code of Student Conduct) and may result in disciplinary action.

Self-documentation may not be used for Major Scheduled Grading Events (midterm exams, and final exams) and it may only be used for one class meeting during the semester. Any student who needs to be excused for a prolonged absence (two or more consecutive class meetings), or for a Major Scheduled Grading Event, must provide written documentation of the illness from the Health Center or from an outside health care provider. This documentation must verify dates of treatment and indicate the timeframe that the student was unable to meet academic responsibilities. In addition, it must contain the name and phone number of the medical service provider to be used if verification is needed. No diagnostic information will ever be requested.

Disability Support Accommodations

See the section titled "Accessibility" available at Course Related Policies.



All course materials are copyright UMCP, Department of Computer Science © 2023. All rights reserved. Students are permitted to use course materials for their own personal use only. Course materials may not be distributed publicly or provided to others (excepting other students in the course), in any way or format.