If you’re working as a computer scientist, no matter whether it’s in computational biology, finance, logistics or even the secret service chances are that you will come across very tough problems that can only solved by a computer. Or so you might think because here’s the bad news. There are literally thousands of problems out there for which you might think that it’s simple for a computer to solve them, but actually it’s very hard, if downright impossible. This course introduces you to theoretical computer science. The area of computer science that deals with very hard problems. And I think that even if you plan to become a very practical computer scientist, it’s vital that you know about those theoretical concepts, plus we will also encounter some really fascinating and mind boggling results from theoretical computer science, such as deceptively simple problems that no computer will ever be able to solve. So I’m happy to invite you to take this journey into the science of challenging problems.