Parallel Programming (EN 600.320/420 01)

Course Description

This course prepares the programmer to tackle the massive data sets and huge problem size of modern scientific and enterprise computing. Students taking this course will abandon the comfort of serial algorithmic thinking and learn to harness the power of cutting-edge software and hardware technologies. The issue of parallelism spans many architectural levels. Even “single server” systems must parallelize computation in order to exploit the inherent parallelism of recent multi-core processors. The course will examine different forms of parallelism in four sections. These are: (1) massive data-parallel computations with Hadoop!; (2) programming compute clusters with MPI; (3) shared memory parallelism in Java and OpenMP; and, (4) GPU parallel programming with NVIDIA’s Cuda. Each section will be approximately 3 weeks and each section will involve a programming project. The course is designed suitable for second-year undergraduate CS majors and undergraduate and graduate students from other science and engineering disciplines that have prior programming experience. [Systems]

Prerequisite: EN 600.120, 600.226, and 600.333 (variances allowed)

Students may receive credit for 600.320 or 600.420, but not both.

Students are responsible for all material and announcements on both the course Web page and Piazza. We will be using BlackBoard only to turn in assignments. The assignments will be described on this website.

Academic Conduct

The guidelines of Hopkins’ academic ethics policy and student conduct policy apply to all activities associated with this course. Additionally, students are subject to the Computer Science Academic Integrity Code. Students are encouraged to collaborate on all coursework, but are required to turn in work that is solely their own. This means that preparation of assignments must be performed individually. Any questions regarding academic conduct should be directed to the course instructor.

Information Notes Comments


MW 4:30 pm - 5:45 pm, Hackerman B17


Randal Burns, randal(at),

  • Office: Malone 227
  • Office Hours: By appointment

Course Assistants

  • Tom Tantillo, tantillo(at)
  • Alex Baden, alex.baden(at)
  • Disa Mhembere
  • Kunal Lillaney
  • Alex Eusman, aeus(at)

TA Office Hours:

  • Tom Tantillo, Wednesdays 6:00-7:00pm, Malone 239
  • Kunal Lillaney and Disa Mhembere, Tuesdays 5:00-6:00pm, Malone 239


Will typically be due on Thursdays at 11:59:00 pm (aka midnight). You will have a total of 5 late days to be used over the entire semester that you may exercise at any given point. For example, if you turn in a project by Sunday night prior to 11:59:59, your project would be three days late. Lateness beyond these bounds will receive an automatic deduction of 25% of the project for the first instance and 50% of the project for the second instance and so forth. Total late days used will be tracked on Blackboard.

Note: If you submit an assignment before the deadline, then decide to submit again after the deadline (thereby using one or more of your late days), please let us know. We may begin grading an assignment before all late assignments are submitted, and by letting us know you plan to submit again, you save us from grading your assignment twice.


There is no specific formula for grading. Prof. Burns looks at several indexes over the class performance, including homework only, tests only, homework and tests mixed (30/70,50/50/70/30) and then factors in class participation and evidence of learning trajectory to make a final decision that is subjective, but informed by statistics. You should assume that projects are 2/3 of your grade and tests 1/3 of your grade.

Requests for Regrades

A student should only request a regrade of an assignment or a change in grade if a technical error was made in grading. In this case, the student must clearly document the technical error associated with a specific problem and submit a written request for a regrade. Once an assignment grade is released, you will have two weeks to submit a regrade request.

Required Texts

Mattson, T. G., B. A. Sanders, and D. L. Massingill. Patterns for Parallel Programming. Addison-Wesley, 2004. This text is available online to Hopkins students

Herlihy, M. and N. Shavit. The Art of Multiprocessor Programming. Morgan-Kaufmann, 2008. This text is available online to Hopkins students

Difference between 320 and 420

The courses will have the same workload, assignments, and tests. They will be graded as two separate courses, i.e. all 320 students as one group and all 420 students as a group. Students in 420 will pursue a special topic mini-project during the last two weeks of class.

Midterm Exam: April 03, 2017

Final Exam: TBA