Home | People | Curriculum | Projects | Resources | Media

CMSC 356: Concurrency and Co-Design in Operating Systems

Instructor: David Wonnacott

Semester: Spring 2015

Schedule: t.b.a.

Required Texts/Resources:

Additional Recommended Texts:


Collaboration: You are encouraged to discuss the lecture material, labs, and written work with other students, subject to the following restriction: on individual lab assignments, the only "product" of your discussion should be your memory of it - you may not write up solutions together, or exchange written work or computer files. On Team assignments, you may exchange other materials only within your team; on Mini-homework assignments, you are encouraged to work together as much as you like.

Collaboration is not allowed on exams.

Prerequisites: CMSC 240; Concurrent enrollment in this and two or more other CMSC lab courses requires permission of the instructor.

Related Courses: CMSC 355: Operating Systems is usually taught by Dianna Xu (at Bryn Mawr) with an emphasis on the more traditional operating system course elements (such as O.S. organization, resource allocation policies and algorithms, and security). CMSC 356 briefly touches on these issues (to provide context), but focuses primarily on general issues of shared-memory concurrency and on the role of hardware/software co-design in the creation of the "device driver" components of an operating system (the latter is usually treated briefly in O.S. courses).

The instructors for CMSC 356 have communicated with Dianna Xu to ensure minimal content overlap, so that students can take both courses for credit.

Description: A practical introduction to the principles of shared-memory concurrent programming and of hardware/software co-design, which together underlie modern operating systems. This course includes a substantial laboratory component using Java and HERA. Topics covered in this course include:

Lab Schedule:

// Much of the course will focus on principles of concurrent programming; interspersed with this will be elements of hardware/software co-design for simple I/O. If time permits, additional lectures may focus on other aspects of operating system design and implementation or concurrent programming. Page numbers below refer to previous years' textbooks; current readings are being added as we go, on this document.


) & (

// Advanced topics such as:



Lab Assignments:


Haverford College Page maintained by David Wonnacott.
Computer Science Department, Haverford College.