Intro to Theoretical Computer Science (Udacity)

Offered by Udacity,
Intro to Theoretical Computer Science (Udacity)

Dealing with Challenging Problems. This class teaches you about basic concepts in theoretical computer science -- such as NP-completeness -- and what they imply for solving tough algorithmic problems.

Class Deals by MOOC List - Click here and see Udacity's Active Discounts, Deals, and Promo Codes.

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.

What You Will Learn

Lesson 1
Challenging Problems

  • An introduction to tough problems and their analysis.

Lesson 2
Understanding Hardness

  • What we mean when a problem is "hard" and the concept of NP-completeness.

Lesson 3
Showing Hardness

  • Tools to let you recognize and prove that a problem is hard.

Lesson 4
Intelligent Force

  • Smart techniques to solve problems that should – theoretically – be impossible to solve.

Lesson 5
Sloppy Solutions

  • Gaining speed by accepting approximate solutions.

Lesson 6
Poking Around

  • Why randomness can be of help – sometimes. An introduction to complexity classes.

Lesson 7
Ultimate Limits

  • Problems that no computer can ever solve. In theory.

Prerequisites and Requirements
You should have a basic understanding of algorithms (such as Intro to Algorithms) and programming (such as Introduction to Python Programming). No prior knowledge about theoretical computer science required!

Go to Class
MOOC List is learner-supported. When you buy through links on our site, we may earn an affiliate commission.

Related Courses

Website Performance Optimization (Udacity) Udacity
Udacity,Google

Website Performance Optimization (Udacity)

The Critical Rendering Path. You will learn how to optimize any website for speed by diving into the details of how mobile and desktop browsers render pages. In this short course, you’ll learn about the Critical Rendering Path, or the set of steps browsers must take to convert HTML, CSS and JavaScript into living, breathing websites. From there, you’ll start exploring and experimenting with tools to measure performance and simple strategies to deliver the first pixels to the screen as early as possible.

Self Paced
Self-Paced
Computability, Complexity & Algorithms (Udacity) Udacity
Georgia Institute of Technology,Udacity

Computability, Complexity & Algorithms (Udacity)

The Power and Limitation of Algorithms. In this course, we will ask the big questions, "What is a computer? What are the limits of computation? Are there problems that no computer will ever solve? Are there problems that can’t be solved quickly? What kinds of problems can we solve efficiently and how do we go about developing these algorithms?" Understanding the power and limitations of algorithms helps us develop the tools to make real-world computers smarter, faster and safer.

Self Paced
Self-Paced
Creative Programming for Digital Media & Mobile Apps (Coursera) Coursera
University of London,Goldsmiths, University of London

Creative Programming for Digital Media & Mobile Apps (Coursera)

This course is for anyone who would like to apply their technical skills to creative work ranging from video games to art installations to interactive music, and also for artists who would like to use programming in their artistic practice. This course will teach you how to develop and apply programming skills to creative work. This is an important skill within the development of creative mobile applications, digital music and video games. It will teach the technical skills needed to write software that make use of images, audio and graphics, and will concentrate on the application of these skills to creative projects. Additional resources will be provided for students with no programming background.

Aug 17th 2026
5-12 Weeks
Algorithms, Part II (Coursera) Coursera
Princeton University

Algorithms, Part II (Coursera)

This course covers the essential information that every serious programmer needs to know about algorithms and data structures, with emphasis on applications and scientific performance analysis of Java implementations. Part I covers elementary data structures, sorting, and searching algorithms. Part II focuses on graph- and string-processing algorithms.

Aug 17th 2026
5-12 Weeks
Computing for Data Analysis (edX) EdX
Georgia Institute of Technology,GTx

Computing for Data Analysis (edX)

A hands-on introduction to basic programming principles and practice relevant to modern data analysis, data mining, and machine learning. The modern data analysis pipeline involves collection, preprocessing, storage, analysis, and interactive visualization of data. In the course, you’ll see how computing and mathematics come together.

Aug 24th 2026
13-24 Weeks
Xcode Debugging (Udacity) Udacity
Udacity

Xcode Debugging (Udacity)

Print Statements, Breakpoints, and LLDB. "If debugging is the process of removing bugs, then programming must be the process of putting them in." Edsger W. Dijkstra Debugging is yin to programming's yang; you can't have one without the other. However, finding bugs in programs can be an incredibly frustrating and demotivating process for developers. This course will teach you a variety of techniques to help make debugging your code easier.

Self Paced
Self-Paced
C++ For Programmers (Udacity) Udacity
Udacity

C++ For Programmers (Udacity)

Learn features and constructs for C++. C++ for Programmers is designed for students who are familiar with a programming language and wish to learn C++. This course focuses on 'how' as opposed to 'what'. For example, in the lesson on functions, we do not teach what a function is, but rather how to create a function in C++. The lessons are taught by several different instructors who have used C++ in their professional careers, so students get to experience different perspectives.

Self Paced
Self-Paced
Swift for Beginners (Udacity) Udacity
Udacity

Swift for Beginners (Udacity)

Your First Programming Language. In this course, you’ll begin learning Swift, Apple's programming language for building iOS applications. You'll start with fundamentals and work your way towards understanding all the core principles necessary to get started creating your first app. At the end of the course, you'll complete a problem set of exercises designed to challenge your understanding of Swift and give you the opportunity to apply what you've learned.

Self Paced
Self-Paced
Intro to HTML and CSS (Udacity) Udacity
Udacity

Intro to HTML and CSS (Udacity)

In this course, you'll learn the fundamentals web development, along with best practices and professional problem-solving techniques using Developer Tools. Throughout this course, you'll learn about the underlying structure of the web - HTML. You'll learn how to use this tree-like structure to create websites. You'll also learn how to apply styling to a website through CSS. You'll learn about CSS syntax, selectors, and units. Along the way, you'll also learn about code editors and a browser's Developer Tools.

Self Paced
Self-Paced