CSI2110 Parallel Programming Practice

Computer science is currently undergoing a radical change from sequential to parallel computing. This change is forced by fundamental laws of physics that limit further performance gains from traditional uni-processor architectures. In the future, increasing the performance of computer systems will only be possible by using multicore parallelism. Computing platforms of the future will have hundreds or even thousands of processor cores available for parallel processing. Unfortunately very few engineers know how to program multicore systems yet. The ability to harness the raw computing power provided by massively parallel systems will be a key qualification for tomorrow’s software engineers. Already today leading manufacturers such as IBM and Intel are offering parallel processors on a chip. These architectures are quickly adopted in all major computing areas, e.g., with PCs, gaming consoles, mobile devices and high-performance computers.

This course will serve as an introductory course to parallel programming (“Parallel Programming Practice”). In the lectures we will discuss parallel programming concepts. Our step-by-step approach starts with sequential programs and gradually introduces parallel programming techniques as we move along.

A series of individual programming assignments will highlight the concepts from the lectures. They will allow students to experiment and become fluent with parallel programming on multicore architectures using C and a stream-based parallel programming language. The software-development process of deriving software design, implementation and tests from a given requirement specification will be trained.

The term project gives students the opportunity to design and implement a software project of their own choice. Students will work on Intel multicores and the Sony Playstation3 development platform for this course.

At the end of the course, students will have a knowledge of

  • the fundamental design philosophies that multicore architectures address,
  • software engineering design principles for parallel programs, and
  • the parallel programming models and emerging best practices.

Course information

Complete information about the course can be found on the course web site: http://elc1.cs.yonsei.ac.kr/courses/CSI2110-01/