CS 410/510 MCP

Multicore Computing Practicum
Fall 2008 (30 September -- 3 December)
TR 1200-1350
Clay Building Room 101
410 Sec 25 CRN 14695, 510 Sec 26 CRN 14696

Welcome. This Wiki is dedicated to our practicum course in multicore computing in the Linux environment.

If you are a student, please begin by registering on this Wiki, using the passcode given to you in class. A Wiki is a collaborative web site: once you're registered, you can (and should) help maintain these pages, and use the site as a work area.

The course schedule is on a separate page for convenience. The course email list (for registered users only) is at mailto:cs510mcp-discuss@svcs.cs.pdx.edu .

Contact Info

Course Description

CS 410 / 510 MCP is a practical learning and project experience course in multicore and shared-memory multiprocessor (SMP) computing. It is intended as a follow-on to Prof. Karavanic's CS 410 / 510 Multicore Computing course, taught Summer 2008, although that course is not a prerequisite for this one. Students will explore modern concurrent programming languages and paradigms that ease MC/SMP programming, and will develop their concurrent programming skills in the context of realistic hands-on projects.


  • Reasonable fluency in the C programming language.
  • CS 350 Algorithms and Complexity, or a reasonable understanding of the principles of algorithm design and analysis.
  • CS 410/510 Multicore Computing, or some basic understanding of shared memory, threading, locks and barriers.
  • A genuine desire to do the hard work of learning concurrent programming tools and practices.


Upon completion of this course, a student should be able to:

  • Architect MC/SMP programs to solve real-world problems in an efficient and manageable fashion.
  • Articulate and practice the tradeoffs inherent in developing concurrent algorithms.
  • Implement concurrent algorithms on MC/SMP machines using appropriate technologies as part of a programming team.
  • Measure and analyze the performance of concurrent programs.
  • Recognize situations in which concurrent programming is an inappropriate or unreasonable methodology.


The bulk of the reading will be online, and will be assigned on a week-by-week basis. Thanks to Prof. Karavanic for recommending the following supplementary readings:

  • Chapman, Jost, van der Pas, "Using OpenMP: Portable Shared Memory Parallel Programming" 2007, The MIT Press. ISBN 0262533022
  • POSIX Threads tutorial
  • OpenMP tutorial
  • Papers found by classmates


Grading will be on a couple of homework projects, to be announced; a final examination (project design quiz); and on the course project, which will represent the bulk of the final grade. Each course project team must prepare a presentation and a written final report.

  • Homework1 - an experiment in simple parallel programming
  • Project - a larger course project

Academic Honesty

Students will be responsible for following the PSU Student Conduct Code, and in particular, the policy concerning academic honesty. (Thanks to Melanie Mitchell for this sentence.)

If I catch you plagiarizing any material, I will do what I ethically and legally can to end your academic career. Plagiarism is using anyone else's works, writings, or ideas without explicitly giving them credit. If you get code, ideas, or text from a fellow student, this is fine—put their name on it so that we both know what happened.

In this course, you will be expected to do a lot in a short time. This is not an excuse to do things that are unethical, immoral, or illegal.

Multicore boxes we can use

  • bailin.cs.pdx.edu

  • gottbrath.cs.pdx.edu

GIT repository address

  • git://svcs.cs.pdx.edu/git/cs510mcp-code.git