The course explores design of control systems that achieve complex specifications. This is an emerging area in control theory that contrasts with traditional control design focused on stabilization and tracking. We introduce linear temporal logic (LTL) and show how LTL specifications capture a rich class of transient and steady-state behaviours of control systems. The LTL control problem is reduced to a hybrid control problem using ideas from computer science to obtain a design that includes high-level discrete algorithms and low-level continuous time controllers. The course covers the most important techniques and tools that come to play in this methodology, including triangulation, behaviour of affine systems on polytopes, the Reach Control Problem (RCP), and flow functions. We explore in depth control synthesis methods for the RCP based on affine, continuous state, and piecewise affine feedbacks. The techniques studied in the course come together to solve the problem of motion planning for a group of quadrocopters.