This class teaches you about basic concepts in theoretical computer science -- such as NP-completeness -- and what they imply for solving tough algorithmic problems.
At the end of this course, you will have a solid understanding of theoretical computer science. This will not only allow you to recognize some of the most challenging algorithmic problems out there, but also give you powerful tools to deal with them in practice.
An introduction to tough problems and their analysis
What we mean when a problem is “hard” and the concept of NP-completeness
Tools to let you recognize and prove that a problem is hard
Smart techniques to solve problems that should – theoretically – be impossible to solve
Gaining speed by accepting approximate solutions
Why randomness can be of help – sometimes. An introduction to complexity classes.
Problems that no computer can ever solve. In theory.
This class is self paced. You can begin whenever you like and then follow your own pace. It’s a good idea to set goals for yourself to make sure you stick with the course.
This class will always be available!
Take a look at the “Class Summary,” “What Should I Know,” and “What Will I Learn” sections above. If you want to know more, just enroll in the course and start exploring.
Yes! The point is for you to learn what YOU need (or want) to learn. If you already know something, feel free to skip ahead. If you ever find that you’re confused, you can always go back and watch something that you skipped.
It’s completely free! If you’re feeling generous, we would love to have you contribute your thoughts, questions, and answers to the course discussion forum.
Collaboration is a great way to learn. You should do it! The key is to use collaboration as a way to enhance learning, not as a way of sharing answers without understanding them.
Udacity classes are a little different from traditional courses. We intersperse our video segments with interactive questions. There are many reasons for including these questions: to get you thinking, to check your understanding, for fun, etc... But really, they are there to help you learn. They are NOT there to evaluate your intelligence, so try not to let them stress you out.
Learn actively! You will retain more of what you learn if you take notes, draw diagrams, make notecards, and actively try to make sense of the material.
Sebastian studied Bioinformatics at Universität Tübingen and holds a Ph.D. from Universität Jena in Germany, where his research focused on finding efficient algorithms for computationally hard problems on biological networks. After several years of strategic consulting for pharma companies and financial services, he's currently working with Seven Bridges Genomics, a big data bioinformatics startup. He is also well-known for his TED Talks, especially the one on the statistics of TED Talks..
Sean Bennett is a Course Architect at Udacity and is passionate about using the web to improve the quality of education available worldwide. Sean's background is in web programming, and he likes to dabble in functional web programming. When he's not working to improve education, Sean likes running, hiking, and preparing for the inevitable zombie apocalypse.
Sarah Norell holds a PhD in Mathematics from the University of London, UK. She has lectured at the London School of Economics, University of Umeå and Mid-Sweden University, and tutored all ages. Her breadth of experience at different levels has brought insight into some of the underlying problems students have with mathematics and it is this insight she brings to the courses here at Udacity.