# 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.

• One overlapping field is process scheduling, where you compare algorithms, another is distributed systems. – Виталий Олегович Dec 18 '14 at 16:45
• do you mean you want to work on OS or software engineering or the software engineering in OSes? yes there is traditionally some split. "big data" is an emerging/ leading area of software engr that can get theoretical. – vzn Dec 20 '14 at 2:43

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.

here are some areas touching on OS design that can be very advanced, involve ongoing research, and lead into deep CS theory, some of it applied in the software engineering of the real systems.

• scheduling algorithms, optimization