CIS 534 (Spring 2010): Multicore Programming and Architecture

Instructor:Prof. Milo Martin
Lecture:Monday/Wednesday 1:30 to 2:50pm

Course Schedule


Office Hours

Lecture Notes

Papers & Discussion Questions



See the course schedule

Course Syllabus

Course Description

This course is a pragmatic examination of multicore programming and the hardware architecture of modern multicore processors. Unlike the sequential single-core processors of the past, utilizing a multicore processor requires programmers to identify parallelism and write explicitly parallel code. Topics covered include: the relevant architectural trends and aspects of multicores, approaches for writing multicore software by extracting data parallelism (vectors and SIMD), thread-level parallelism, and task-based parallelism, efficient synchronization, and program profiling and performance tuning. The course focuses primarily on mainstream shared-memory multicores with some coverage of graphics processing units (GPUs). Cluster-based supercomputing is not a focus of this course. Several programming assignments and a course project will provide students first-hand experience with programming, experimentally analyzing, and tuning multicore software. Students are expected to have a solid understanding of computer architecture and strong programming skills (including experience with C/C++).


  • None


Your course grade will be determined by homework assignments, paper discussion questions, the course project, class participation, and perhaps an exam.


The goal of the course is to provide hands-on experience creating, analyzing, and tuning parallel programs. Thus, there will be various parallel programming assignments. The assignments will include writing code, measuring the performance of the codes, and trying out ways to further improve the performance.

Homework is due at the beginning of the class period for which it is assigned. As for late homework, you have a few "grace" days (24-hour days, not class periods) to use to hand in late homeworks. Once you have exceeded these grace days, late work will not be accepted unless you make <b>prior</b> arrangement with me.

Paper Discussion Questions

We will read several papers from the research literature during this course. Before we discuss the paper in class, you will meet in groups of three students to discuss the paper and write a concise response to a few high-level questions about the paper. To avoid the same groups for each paper, you may be in a group with a student at most once.

Course Project

An important part of the course will be the course project consisting of developing a substantial parallel program or exploring a parallelism-related research idea. The course project will be performed in small groups (ideally three students). The project deliverables consist of a proposal, in-class presentation, and conference-format final report. More details about the project will be available as the semester progresses.


Threre will be a midterm exam, but there will be no final exam for the course.

Academic Misconduct

Academic misconduct such as cheating will not be tolerated. The work you submit in this class is expected to be your own. If you submit work that has in part or in whole been copied from some published or unpublished source (including current or former students), or that has been prepared by someone other than you, or that in any way misrepresents somebody else's work as your own, you will face severe discipline by the university. (Adapted from text appearing at the Office of Student Conduct page.)

Any detected cases of cheating will be pursued. Penalties can include: receiving a zero on the assignment (the minimum penalty), failing the course, having a note placed in your permanent academic record, suspension, and ultimately expulsion.

See Penn's Code of Academic Integrity for more information.