Computing is an art. Computing is also, for most people, magic; this course will enable you to see what lies beyond the apparent magic, and to discover the science behind computing. Information Technology is everywhere. Every aspect of human activity depends on it. All IT processes, whether they drive mobile phones, the Internet, transportation systems, enterprise systems, publishing, social networks or any other application, rely on software. In this course we lift the hood and explain how to write this software. If you do not just want to be a consumer of IT services but understand how they work, and contribute to them yourself, this course is for you. The core skill is programming; not just the ability to piece together a few â€ślines of codeâ€ť, but writing quality programs, which will do their job right, and meet the evolving needs of their users. Anyone can write a program; this course teaches to write good programs. The course starts from the basics of computing and takes you through a tour of modern object-oriented programming, including classes, objects, control structures, inheritance, polymorphism, and genericity. Throughout the course, you will have the opportunity to learn the principles of programming as well as the techniques for designing correct and reliable programs by using the Eiffel programming language and notation. You will be trying out example problems, provide your solution, and see it immediately compiled and tested from within your browser. Beyond programming, you will also get a glimpse at theoretical computer science, the set of mathematical techniques that underlie computation and makes today's IT-based world possible. You should expect to devote five hours weekly to the course. Remember that you can only learn programming in depth by writing programs, so the more you practice the better.