As processor speeds approach physical limits, we will no longer be able to count on faster and faster processors being released on a regular basis. Performance increases will need to come from larger, parallel computer systems. Parallelism complicates everything from computer hardware design to operating systems and compilers to application programming, yet it will become pervasive in the not-too-distant future. This course examines methods, techniques, and languages for parallel programming, libraries and extensions to sequential languages to support parallel programming, parallel computing environments, performance analysis, efficiency and complexity of parallel algorithms, and applications of parallel computation. Readings will be taken from recent technical literature and a textbook. This course is taught in the tutorial format. Students meet weekly with the instructor in pairs to discuss the week’s readings and to present solutions to problem sets. Students complete several programming projects, using parallel computers both in the department and at national supercomputing centers. There is a midterm and a final exam.
Format: Tutorial. Evaluation will be based on the weekly assignments that will include both programming and written components (40%), exams (25%), and tutorial participation (10%). The final project (25%) will include a research paper a minisymposium where each group will present their project to the class.
Prerequisites: Computer Science 237, corequisite: Computer Science 256.
Course webpage: See instructor.
Taught by: Teresco
Scheduled offerings:
None.
Past offerings:
Spring 06