This course focuses on practical aspects of
programming with multi-core processors. A few “hello-world”
examples are followed by a brief introduction to multi-core processor based
computer architecture. This course covers principles of parallel programming,
including algorithmic techniques and programming mechanisms such as threads and
message passing. You also learn how to apply principles to the real world. Upon
successful completion, you should be able to write high performance parallel
programs that take advantage of multiple cores in modern processors.

Course topics include: multi-core processors,
parallel programming models and algorithms, and performance measurements. This
course is delivered with lectures combined with programming assignments. A
programming assignment is handed out at the end of each lecture and is
collected at the next lecture. Programming assignment can be done in any modern
programming languages, such as Java or C or C++. Java is preferred.

There are 4 assignments and a capstone project as
the final. Each weighs 20%. Each assignment is due one week it is assigned and
has to be sent to the instructor via email. Starting from second week, students
may be asked to present and discuss their homework assignment from previous
week in class. The final capstone project due date will be announced in class.