Usefulness Is Not Trustworthiness

When discussing ways to ensure that a system remains predictable in the face of bugs, attacks, and failures, the students inevitably reach a point where they have to trust that something or set of things behaves as advertised. If a system is well-designed, then this set of trusted components will be small, and interactions between trusted and untrusted components will be constrained by a set of narrow, well understood interfaces. Mobile phones have placed communication, sensing, and computation at the center of nearly all human activity. A great deal of the software written for this new platform is extraordinarily fun and useful.