A Ph.D. student receives a reasonably handsome monthly stipend apart from hostel, lab, and office facilities. Additionally, we typically provide the student additional top-up stipend through fellowships and/or project grants. During summers, the student is encouraged to intern in research labs or other universities both in India and abroad, in order to improve his/her exposure and also identify collaboration opportunities in line of his/her research. We also provide travel funds to our Ph.D. students to attend top-tier research conferences around the world. Overall, our Ph.D. students are our highly valued colleagues; I feel proud and privileged to work with the students working with me.
Here are some useful links, in case you are interested in exploring the Ph.D. program at CSE, IITD further. Also, feel free to send me an email if you have any queries in this regard.
There is a common misconception that systems research does not involve CS theory. On the contrary, much of our work is based on sound theoretical foundations, and much of our analysis of ideas and approaches involves deep understanding of logic and programming language theory, and fundamental concepts in theory of computation. The primary difference between theoretical research and systems research is that in the latter, we usually build working systems to validate our ideas, and also test them in practice.
In my humble opinion, systems research is deeper and more
fundamental than theoretical CS research in this decade, given that
most fundamental work in theory has already been done in the past 50 years.
On the other hand, several important fundamental problems in systems
remain unsolved even today (read more on the open research problems
in computer systems below).
Computer systems research has been central to the explosive growth of computing devices, starting from computers based on vacuum tubes, to semiconductor-based computers.
We have witnessed a dramatic change in the characteristics of the underlying hardware technology over the past 15 years (2000-now), when contrasted with the hardware trends in the four decades before that (1960-2000). Given that semiconductor chips cannot be clocked any faster, mainstream hardware has become more parallel (multi-core), heterogeneous (FPGA, GPUs), and non-uniform (NUMA machines). We also see the rise of cloud computing, wherein shared computing resources are available to all.
Our programming models, operating systems, and software stacks need to evolve dramatically to be able to cope with this change in underlying hardware. Traditional programming models and operating systems were written for a simpler hardware model (single-core, uniform memory accesses, personal computers, etc.) and are simply not well-suited to this new environment. I believe that our software stacks would look very different after 10 years (from what they are today). And much of this change is likely to be driven by fundamental research in computer systems.
Here is a list of some of the problems that need to be solved to achieve efficient computability in the future. This list is definitely not complete, and is just a sampling of some problems that I have seen over the years, working in the area of computer systems. Our group is addressing some of these problems in unique ways:
(Our work on superoptimization is an attempt at solving the
problem of developing an efficient and powerful compiler).
(Our work on HoH is an attempt at a clean-slate design of the OS
abstractions and its implementation to better utilize modern
(Our work on binary translation, network virtualization and record/replay belong to this line of research).
A PhD is your first window into the magnificent world of research. Hopefully, you will get inspired, and will continue to follow your passions towards further exploration and advancement of the state-of-the-art. You may do this through a faculty position at a prestigious university/institute around the world, or a research position at a research lab or a CS company.
A person with a PhD in systems is usually considered very valuable both
for academia and for industry. Most academic CS departments around the
world face a shortage of good faculty in the areas of computer systems,
and usually extend a red-carpet welcome for good systems researchers.
Also, most CS companies (e.g., search companies, OS companies, hardware
companies, compiler companies, application-software companies) are
always looking for bright people who have deep understanding of
computer systems fundamentals, for leadership roles. Finally, it is
not uncommon for Ph.D. students to do startup companies based on
their research after finishing their thesis.
This is indeed your personal choice. But be aware that the choice
of country/university/etc., is much less important than the choice
of advisor/group/problems. At the end of the day, what really counts is your
research work during your PhD tenure, and whether it inspired you or not.
Firstly, you should have done a hands-on operating systems course. If your undergraduate OS course did not have enough practical component, I would advise you to look at the lecture videos available here. The course webpage can be found here. Further, you may want to spend some time with our group as a Research Associate (RA) before deciding --- you can find more details here.
If you are proficient in C/C++ and enjoy programming, I would highly recommend that you consider joining us as an RA, and get exposed to OS research (and other ongoing research projects in our department) in the process.