Description // Assignments and grades // Textbook and readings // Class meetings // Staff // Office hours // Hot News // Current assignment // FAQ Different// Acknowledgments
This course considers the problem of multiprocessor programming from two simultanious directions.
One direction considers the foundations of multiprocessor coordination, following a textbook.
The other direction explores system design issues in multicore applications, databases and operating systems, through case studies from recent research papers.
In the foundation we first consider the basics: what do our programs and machines need to provide in order to ensure that concurrent programs do what we expect.
We use an idealized model of computation in which multiple concurrent threads manipulate a set of shared objects. This model is essentially the model presented by standard Java⢠or C++ threads packages.
This part is intended to build up the reader's intuition and confidence in understanding and reasoning about concurrency.
We approach this goal using examples, counter-examples, models, and exercises. These elements are laid out in a structured and progressive manner, from reasoning about simple machine instructions to
demonstrating the impossibility of certain computations.
The second part of the foundation component is concerned with performance.
Reasoning about the performance of concurrent programs and data structures is very different in flavor from reasoning about their sequential counterparts.
Sequential programming is based on a well-established and well-understood set of abstractions.
There is little or no need to understand the specifics of the underlying architecture.
In multiprocessor programming, by contrast, there are no such well-established abstractions.
It is impossible to reason effectively about the performance of a concurrent data structure without understanding the fundamentals of the underlying architecture.
The performance part will revisit many of the issues first raised in the basics section, but in a more realistic model that exposes those aspects of the underlying architecture that most influence performance.
We will go through a sequence of fundamental data structures, the concurrent analogs of the data structures found in any undergraduate data structures course,
and a few coordination structures that are unique to the world of multithreaded computation.
These data structures are introduced in an incremental way, each one extending the techniques developed for its predecessors.
Each of these data structures is useful in and of itself as a reference. Moreover, by the end, the student will have built up a solid understanding of the fundamentals of concurrent data structure design,
and should be well-prepared to design and implement his or her own concurrent data structures.
The case studies will consider the "bigger picture" questions in multicore system design. Examples questions include,
how should the traditional structures of operating systems and databases be adapted
to take advantage of multicore hardware?
How are the popular paraller cluster computation frameworks such as MPI or MapReduce, affected by multicore nodes?
How running on a multicore affects the traditional database
optimization techniques?
At the end of the course students should have a basic understanding of both the foundations and the practices of multiprocesor and multicore programming.
The prerequisites include COSI 31a.
Here is a tentative schedule. Course mailing list:
Use LATTE to send a message to the whole class.
Liuba Shrira : Flexible, send me e-mail to schedule.
Ross Shaull : Wed 3:30pm – 5:30pm or by appointment.
Last updated 1/13/08
Description
Prereq.: CS31a and knowledge of Java or C.
The computer industry is undergoing a paradigm shift. Chip manufacturers are shifting development resources away from
single-processor chips to a new generation of multi-processor chips known as multicores.
This fundamental change in our core computing architecture will require a fundamental change in how we program. The art
of multiprocessor programming, currently mastered by few, is more complex than programming uniprocessor machines, and
requires an understanding of new computational principles, algorithms, and programming tools.
Current computation on uniprocessor and multiprocessor architectures have many aspects in common. The key issue that
distinguishes multiprocessor programming from concurrent uniprocessor programming is the need to
understand how concurrent computations on separate processors coordinate with one another.
This coordination impacts how we structure operating systems, design databases and develop applications.
Schedule
Assignments and Grades
Grades in CS220 will be based on reading questions, class presentations,
problem sets, quizzes and
your participation in class. There will not be a final examination.
You will be assigned to present papers
from current literature and submit written reports pertaining
to the assigned papers.
Since an important part of CS220 is discussion of current literature,
your class participation will influence your grade significantly -- so
significantly that we hesitate to try to assign weights to the individual
components such as summaries and projects. Everything is important; We
will assign your final grade based on the personal assessment of what you
got out of the course, integrating all the methods of evaluation we can
think of.
Collaboration is neither permitted on the reports nor on the problem sets.
You are responsible for protecting your homework
directories so that others cannot view them or copy them.
Failure to do so constitutes a violation
of academic integrity.
To protect a unix directory called "homework", "chmod og-rwx homework".
Textbook and readings
Here are things you need to have in order to accomplish the
reading assignments in CS220
Class meetings
Class
Tue 1:40pm - 4:30pm ;
Volen Rm 105
Staff
Lecturer
Liuba Shrira
Volen-260
x62704
liuba@cs.brandeis.edu
Teaching Assistant
Ross Shaull
Volen-139
x62728
rshaull@cs.brandeis.edu
Office hours
Students with Disabilities:
If you are a student with a documented disability on record at Brandeis University and wish to
have a reasonable accommodation made for you in this class, please see me immediately.
Brandeis University,
Computer Science Department