CIS 6910: Testing and Verification of Concurrent Programs, Fall 2008


Instructor: Zijiang James Yang (zijiang.yang@wmich.edu)

Class: Mon 1800-2030, D-205

Office hours: Wed 1300-1400, or by appointments


Introduction

Today, it is almost impossible to buy a computer with a single processor. The availability of inexpensive multiprocessor hardware presents tremendous opportunities as well as serious challenges for software developers. In order for software applications to benefit from the continued exponential throughput advances in multi-core processors, the applications must be well-written concurrent software programs. Unfortunately, writing concurrent software programs that can unleash the full potential of present and future hardware systems is very difficult. Most people realize that parallel computers are easy to build - it is the software that takes work. One of the most challenge issues in concurrent programming is how to verify the correctness of a concurrent program. This course is about finding and preventing errors not only in concurrent programs, but also in other concurrent systems such as hardware devices, embedded systems.   

Prerequisites

The course requires basic knowledge of algorithms, data structures, automata theory, computational complexity, and propositional logic. Knowledge of multithreaded programming, operating systems, communication protocols, and hardware is useful.

Software


Reading

The course has no required text books.  Research papers will be posted.

Handouts

Presentations

The 2nd round of presentations consists of many interesting 20-min talks. You must select interesting paper(s), otherwise you may not have the privilege  to give a talk. Please email me a link to your paper(s). I will grant the topic on first-come-first-serve basis, but you have to get in queue again if I deline your topic. So choose wisely.

Projects