Semester.ly

Johns Hopkins University | EN.600.320

Parallel Programming

3.0

credits

Average Course Rating

(3.53)

This course prepares the programmer to tackle the massive data sets and huge problem size of modern scientific and enterprise computing. Google and IBM have commented that undergraduate CS majors are unable to "break the single server mindset" (http://www.google.com/intl/en/ press/pressrel/20071008_ibm_univ.html). 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) thread-level parallelism in Java; and, (4) GPGPU parallel programming with NVIDIA's Cuda. Each section will be approximately 3 weeks and each section will involve a programming project. The course is also suitable for undergraduate and graduate students from other science and engineering disciplines that have prior programming experience. [Systems] Students may receive credit for EN.600.320 or EN.600.420, but not both. Prereq: 600.120 and 600.226; 600.333

Spring 2013

(3.28)

Spring 2014

(3.47)

Spring 2015

(3.85)

Spring 2013

Professor: Randal Burns

(3.28)

The best aspects of this course included the instructor’s informative and entertaining lectures, the concepts that were explained effectively, and the light workload. Some students felt the instructor didn’t provide feedback in a timely manner. One suggestion included incorporating group work. Another suggestion included providing students with practice material before exams. Prospective students

Spring 2014

Professor: Randal Burns

(3.47)

The best aspects of this class included the exposure to several programming languages, the interesting and engaging assignments, and the practical and immediate nature of the information. Many students commented specifical y on gaining hands-on experience in parallel programming. The worst aspects of the course were disorganized lectures and schedule, the ambiguous assignments, and the constantly shifting deadlines. Suggestions for improving the course included having a better structure and schedule of lectures and assignments, and have more lab based classes as opposed to lectures. Prospective students should have a solid knowledge of common programming languages and expect to work on various platforms. The workload is typical for a CS class.

Spring 2015

Professor: Randal Burns

(3.85)

The best aspects of the course included the highly applicable and unique course content, as wel as the passionate and flexible instructor. Many students claimed that there was a lack of organization to the course, especial y surrounding task requirements and submission protocol for assignments. Students 87were discouraged from seeking help after many reported frequently receiving rude responses from TA’s. Suggestions for improvement included having more hands-on and in-depth engagement with the tools and skills encountered in class, and tying them back into programming applications more effectively. Prospective students should have exposure to C/C++, Java, and Python.