Very often software systems have a high degree of complexity, often consisting of millions of lines of code produced by large teams of engineers or programmers. We critically depend on their timely and cost-effective completion, and on their reliable and efficient operation. To meet all these targets, a disciplined and well-founded approach to the design, creation and operation of software (or software-based systems) under real-world constraints (economical, ethical, technical, legal) is needed.The Software Engineering programme at UC provides a unique blend of foundational courses in Computer Science and Engineering, and practical work through a series of projects.