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

Image and video processing: From Mars to Hollywood with a stop at the hospital (Coursera) Coursera
Duke University

Image and video processing: From Mars to Hollywood with a stop at the hospital (Coursera)

In this course, you will learn the science behind how digital images and video are made, altered, stored, and used. We will look at the vast world of digital imaging, from how computers and digital cameras form images to how digital special effects are used in Hollywood movies to how the Mars Rover was able to send photographs across millions of miles of space.

Nov 2nd 2026
5-12 Weeks
Analytic Combinatorics (Coursera) Coursera
Princeton University

Analytic Combinatorics (Coursera)

Analytic Combinatorics teaches a calculus that enables precise quantitative predictions of large combinatorial structures. This course introduces the symbolic method to derive functional relations among ordinary, exponential, and multivariate generating functions, and methods in complex analysis for deriving accurate asymptotics from the GF equations. All the features of this course are available for free. It does not offer a certificate upon completion.

Nov 2nd 2026
5-12 Weeks
Data Structures & Algorithms in Swift (Udacity) Udacity
Udacity

Data Structures & Algorithms in Swift (Udacity)

Confidently take on the tech interview. Technical interviews follow a pattern. If you know the pattern, you’ll be a step ahead of the competition. This course will introduce you to common data structures and algorithms in Swift. You'll review frequently-asked technical interview questions and learn how to structure your responses. You will answer practice problems and quizzes to test your abilities. Then you'll practice mock interviews to get specific recommendations for improvement. Be ready for anything the technical interviewer throws at you.

Self Paced
Self-Paced
Scalable Microservices with Kubernetes (Udacity) Udacity
Udacity,Google

Scalable Microservices with Kubernetes (Udacity)

Master infrastructure management. This course is designed to teach you about managing application containers, using Kubernetes. We've built this course in partnership with experts such as Kelsey Hightower and Carter Morgan from Google and Netflix’s former Cloud Architect, Adrian Cockcroft (current Technology Fellow at Battery Ventures), who provide critical learning throughout the course.

Self Paced
Self-Paced
Learn Swift Programming Syntax (Udacity) Udacity
Udacity

Learn Swift Programming Syntax (Udacity)

From Optionals to Closure Expressions. Swift is a language created by Apple specifically for iOS and OS X development. It’s fast, concise, and comes with tools which make it easier than ever to visualize one's code. This course focuses on the syntax of the Swift programming language. By the end of the course, students should be able to apply Swift essentials to building iOS apps and employ Swift's more unique elements, like optional types and switch statements, with confidence.

Self Paced
Self-Paced
JavaScript Design Patterns (Udacity) Udacity
Udacity

JavaScript Design Patterns (Udacity)

Organizing Code in a Disorganized World. This course covers methods for organizing your code, both conceptually and literally. You’ll learn the importance of separating concerns when writing JavaScript, gaining hands-on experience along the way. Separating concerns can be done with or without an organizational library or framework. We’ll learn how to separate concerns without one, and then we’ll explore an organizational library together. You’ll also learn strategies for exploring other libraries and frameworks on your own.

Self Paced
Self-Paced
Object Oriented Programming in Java (Udacity) Udacity
Udacity

Object Oriented Programming in Java (Udacity)

Build Interactive Java Programs. This course will introduce you to some of the most powerful programming concepts in Java, including: objects, inheritance and collections. You will learn how to use these object-oriented programming concepts in code examples, discover how these concepts are used in applications that require user input, and understand the benefits of mastering these concepts in Java.

Self Paced
Self-Paced
Intro to JavaScript (Udacity) Udacity
Udacity

Intro to JavaScript (Udacity)

Learn the fundamentals of JavaScript, the most popular programming language in web development. JavaScript is the most popular programming language for both front-end and back-end web development. Applications for JavaScript span from interactive websites to the Internet of Things, making it a great choice for beginners and experienced developers looking to learn a new programming language.

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

Swift for Developers (Udacity)

Your Next Programming Language. This course offers a quick practical introduction to Swift basics, including types, variables, constants, and functions. It combines syntax exercises with hands-on iOS development in Xcode. By the end of the course students will build their first iOS app, an app that creates and displays song lyrics customized to user input.

Self Paced
Self-Paced