Parallel Programming (EN 600.320/420/620)

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 and many-core accelerators. The course will examine different forms of parallelism in four sections. These are: (1) massive data-parallel computations with Hadoop! and Spark; (2) programming compute clusters with MPI; (3) shared memory parallelism with threads and OpenMP; and, (4) GPU parallel programming with machine learning toolkits. 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 one of 600.320, 600.420, or 600.620.

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, Shaffer 3


Randal Burns, randal(at),

  • Office: Malone 227
  • Office Hours: By appointment

Course Assistants

  • Xiang Xiang (head TA)
  • Alex Eusman
  • Rohit Ravoori
  • Tristan Orton-Urbina
  • Mengying Pan
  • Kunal Lillaney
  • floki

TA/CA Office Hours:

  • Xiang Xiang: Thursdays 4:30-5:30 pm @ Malone 222
  • Alex Eusman: Tuesdays 1:30-3:00 pm @ Ugrad Lab
  • Rohit Ravoori: Mondays 6-7:30 pm @ Malone 107
  • Tristan Orton-Urbina: Wednesdays 1:30-3:00pm @ Ugrad Lab
  • Mengying Pan: Thursdays 4:30-5:30 pm @ Malone 222
  • Floki and Kunal: Tuesday 5.30-6:00 pm @ Malone 338 (except 3/6/18 when it is Malone 203)


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. Once you have exceeded 5 total late days assingments will not be graded.

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: Wednesday 28 March 2018 (during class period)

Final Exam: Monday 14 May 2018, 9am-12am