Joining my group
28 Apr 2025Recently, I posted on X and LinkedIn that I am always looking for excellent people to join my group. I received a lot of enquiries, some of which led to internship hires (yay!). But mostly, I seemed to offer similar advice. I thought I’d write a post that summarise my responses.
At IIT Madras, my research group develops programming language abstractions to solve systems problems. The group is composed of research associates (fixed-term project staff), PhD, MS and MTech students, undergraduate research students (who are typically BTech students from IIT Madars) and interns. I made the following post a few weeks ago, for which I received a lots of enquiries, and I have been busy writing similar responses to many of them, which I summarise below.
PSA: I'm always looking for excellent folks to join my research group at IIT Madras to work on building "functional" systems. This includes internships, MS and PhD studentships, research staff positions, and post-baccalaureate fellowships.
— KC Sivaramakrishnan (@kc_srk) April 15, 2025
Reach out to me if you are keen!
Internship positions
Internship enquiries are the most frequent ones that I receive. Here’s how you can make it work. Please do go through my web page to look at what areas I work on. Write to me about what interests you and what your goals are.
My group works on systems. To make the internship work well, we require that you have demonstrable systems building experience. Do build projects that go beyond your coursework. Make sure that the projects are developed publicly on GitHub or other similar platforms so that one can take a look at what you’ve built. Even better is contributions to other open-source projects.
The group solves systems problems with functional programming. If you have prior experience with functional programming, such as building small projects with OCaml, Haskell, Scala, Scheme or other languages, it is easier for me to assess your interest. That said, if you are great at any programming language, having built non-trivial projects in any language, then you have the right skills for internships in my group. Generally, I expect the interns to have done course work on OS, compilers and computer architecture. Significant projects in any of those areas is a huge plus.
I should clarify that my recommendation letters for graduate programs will reflect my honest assessment of the internship. I will decline writing a recommendation letter if I think I may not be able to provide a strong one.
I do not work on projects that are primarily AI/ML or Web Development. If you write to me looking for projects in those areas, it is very likely that you won’t hear from me. Please don’t bulk email faculty CCing or BCCing everyone in the department. It is likely that no one will read such an email.
PhD/MS/MTech positions
For academic positions, please have a look at https://research.iitm.ac.in/. There are alternative ways to enter MS and PhD positions by being a reserach associate and completing some coursework at IITM. For more information, see here.
Contributing to the OCaml community
A significant chunk of the enquiries were from folks who hold full-time positions looking to be involved in the research group. Unfortunately, making part-time positions work is a challenge for both sides. I would encourage contributions to the wider OCaml community.
There are several great ways to get involved with the community. Here’s what I usually recommend.
- Learn the basics.
- Go through the OCaml part of my CS3100 course. The course has a YouTube playlist and programming assignments. Complete the programming assignments.
- Read the Real World OCaml book.
- There are lots of other resources at OCaml.org, the official website of the OCaml community and the ecosystem.
- Join the community.
- Look for “good first issues” in the OCaml projects and work on them
- Check out the core platform tools under the OCaml github org. See OCaml compiler, dune build system, opam package manager, ocaml.org, etc.
- Across the wider ecosystem – SemGrep, OpenGrep, Rocq, etc.
- Work on self-directed projects. Here is my list of ideas.
OCaml community also participates in Outreachy internships. Outreachy internships are paid internships for underrepresented groups. It is a great way to contribute to the community while being mentored by folks from the OCaml community. Here’s a nice intro (in Tamil) to the impact that Outreachy program had on an Outreachy intern. Look out for announcements about Outreachy internships in the OCaml discuss forum.
Research Associate positions
This is for folks who want to contribute to the core research programme but do not see themselves joining academic programs. The expectation here is that you are an experiened systems engineer, who should see themselves easily qualifying for the internship positions in the group.
One useful way to look at this position is similar to a research software development engineer who helps build out the systems used for research or translate research to practice. In the past, research associates have helped upstream multicore OCaml. The easiest way to get into this role would be to do an internship, see whether you like this area, do well in the internship and then choose to apply to research associate position.
Another variant is a post-bacc or a pre-doc position aimed at highly motivated recent graduates, who are looking to build research experience. The expectation here is that we get papers into top venues in PL and Systems. For such students, I recommend going through my CS6225 Programs and Proofs course, watch the video lectures and complete the assignments. The course is not an easy one, but will train you to conduct research in the PL area.
Research associate positions are fixed-term positions. In order to make this work, the tenure should be at least 18 months to make it work.
Summary
While I may not be hiring actively all the time, do reach out to me if you are interested in any of hte above. Please follow me on LinkedIn, X or Bluesky, where I am likely to announce any open positions.