Recently, contract-based design has been proposed as an orthogonal approach that complements system design methodologies proposed so far to cope with the complexity of system design. Contract-based design provides a rigorous scaffolding for verification, analysis, abstraction/refinement, and even synthesis. Several results have been obtained in this domain but a unified treatment of the topic that can help put contract-based design in perspective has been missing. Contracts for System Design provides such a treatment where contracts are precisely defined and characterized so that they can be used in design methodologies with no ambiguity. It identifies the essence of complex system design using contracts through a mathematical meta-theory, where all the properties of the methodology are derived from a very abstract and generic notion of contract. This meta-theory provides deep and illuminating links with existing contract and interface theories, as well as guidelines for designing new theories. It encompasses contracts for both software and systems, with emphasis on the latter. Contracts for System Design illustrates the use of contracts with two examples: requirement engineering for a parking garage management, and the development of contracts for timing and scheduling in the context of the AUTOSAR methodology in use in the automotive sector.