Overlap between theory and systems fields in CS I have finally had some serious graduate-level exposure to CS Theory and loved it. I really enjoyed complexity theory (time and space complexity, the different classes, reductions to prove NP-Completeness), and algorithm analysis. I am still very interested in Operating Systems, software engineering, and network/information security.

My question is: What would some starting places to look into if I want to find direct overlaps between CS Theory (algorithm design and analysis, complexity theory, information theory, etc) and, OS, or software engineering? I guess I am looking for areas that might have project possibilities that will test and expand my knowledge in both theory and either OS or SE.

For Security the best one I could think of is theory of cryptography, but I am kind of at a loss when it comes to the other two.
I can see a lot of overlap in the field of Cloud Computing or Distributed Computing
- being that it relies heavily on process scheduling and parallel processing on the operating systems side and optimization algorithms to both traverse data across multiple nodes (servers) and optimize hardware resources on the network grid. Graph theory and NP issues come up often when trying to reconcile issues concerning "Big Data" within the distributed computing space. 

The software engineering CS component arises when developing designs for new operating system based applications like system monitors that help stabilize and secure distributed computing systems.  

From this example, one can see much of the overlapping of said disciplines that go into Cloud Computing.