In this paper, we model a research-and-development
project as consisting of several modules, with each
module containing one or more activities. We examine how
to schedule the activities of such a project in order to maximize the expected profit when the activities have a probability of failure and when an activity’s failure can cause its module and thereby the overall project to fail. A module succeeds when at least one of its constituent activities is successfully executed. All activities are scheduled on a scarce resource that is modeled as a single machine. We describe various policy classes, establish the relations among them, develop exact algorithms to optimize over two different classes (one dynamic program and one branch-and-bound algorithm), and examine the computational performance of the algorithms on two randomly generated instance sets.