Current Course EN 600.[3|4]20 Parallel Programming
Description: 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.” 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 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 Intermediate Programming or equivalent.
Website: Parallel Programming
Schedule: Fall 2009, MW 4:30-5:45 PM, Shaffer 303
Mailing list: TBA
Class Schedule and Assignments: Schedule
All Courses (some pages may be stale)
- Computer Science 600.120: Intermediate Programming, Spring 2004, Spring 2005.
- Computer Science 600.409: Digital Preservation, Spring 2004, Spring 2005.
- Computer Science 600.416: Transaction Processing (TP) Systems, Fall 2003, Fall 2005, Spring 2007, Spring 2009.
- Computer Science 600.419: Storage Systems, Fall 2002, Fall 2004, Spring 2006, Fall 2007.
- Computer Science 600.420: Parallel Programming, Fall 2008.
- Computer Science 600.619: Advanced Storage and Transaction Processing Systems, Spring 2003, Fall 2006.



Teaching