Cyber-physical systems, such as automobiles, cars, and medical devices, comprise both a physical part and a software part, whereby the physical part of the system sends information about itself to the software part, and the software sends information, usually in the form of commands, to the physical part. Physical systems have "a life of their own," and they can often harm operators and/or cost a fortune to repair, the development of programs that control these systems cannot rely on "trial and error," and they must consider in-depth the role of the human operator. This course introduces the principles, tools, models, and processes essential to cyber-physical system development, such as model-based development methods, basics of feedback for task scheduling, modern verification, and validation techniques, and their integration in today's industrial development processes.