Homomorphic encryption? The first-generation solutions were inefficient, but it might be only a matter of time before we have usable homomorphic encryption standards.

Linear-time SDD solvers? Algorithms like this and this are implementable and we may be one more idea away from algorithms that can be put in production.

Sublinear time algorithms like sparse FFT?

All right! But apart from differential privacy, quantum computing, streaming algorithms, error-correcting codes, homomorphic encryption, linear-time equation solvers and sub-linear time algorithms, what has the theory of computing ever done for us in the past twenty years?

There are tons of example from Crypto: additive and multiplicative homomorphic encryption are already used in practice, secret sharing, secure multi-party computation, deterministic encryption, order preserving encryption, etc. Microsoft Research has “AlwaysEncrypted” database system which is now shipped in Microsoft Azure. Also see the CryptDB project.

I think what is missing is the intuition part. Let me give an idea. on the input of n bit there are 2^n possible input combination (a power set). In general ‘a problem’ can map any subset to 1 and complementary to 0. The question is can we divide the space of input into polynomial number (p, p^p= 2^n) of pieces (congruence classes, which may be complicated) such that it would be possible to check the solutions on each class in const time. To be more concrete. In Integer factorization in the sieve method the space is broken onto the set of eliptic curves, where first the existence of solution on the eliptic curve is checked, and then the solution is searched for. Given Shor’s algorithm it appears that it is possible to have polynomial # of set of congruences for factorization. So the question what general (congruence) partition is possible and what specific congruences are useful for particular set of problems. I think just reformulating the problem in this terms will lead to the progress in understanding of computation.