So you want to join my research team
Glad to hear that!
The information below is intended for MSc and PhD students of computer science/engineering in the Hebrew University (or to people about to enroll into one of these programs), pursuing a thesis under my supervision.
In the following paragraphs, I will walk you through the prerequisites, my expectations from you, what you can expect from me, and how to proceed. Please read the entire text carefully and carry out the instructions at the bottom.
At this point, if you haven't already, I highly recommend that you watch Prof. Guy Katz's excellent video tutorial on
finding an MSc thesis advisor (in the MSc program Moodle site). Go on, do that. I'll wait right here.
Prerequisites:
- Near full-time commitment to research
- Relevant hands-on experience (e.g. past militray service in relevant units, past employment in cyber-security companies, past research in systems/networks, etc.), OR: a lab under my supervision, in which you will gain some hands-on experience.
On relevant hands-on experience
The research projects I engage in require some hands-on work with systems and networks. Here are some recent examples of tasks my students had to carry out during their research:
- Compile a modified kernel of a half-baked (pre-beta) version of an operating system kernel
- Capture and generate network packets (TCP/UDP, IPv4/IPv6) in real-time (C/C++ code)
- Add logs/measurements to a kernel to study its behavior
- Build a small proof of concept website that uses some HTML5 APIs, and combine it with packet capturing
- General Linux system programming (and also Windows and other operating systems) and operation, including in cloud VMs
- Studying browser, OS kernel and OS utilities source code to understand how they work
- Reverse engineering of small pieces of kernel code, in x64 and ARMv8 architectures
- Measuring Internet behavior (noise, packet drops, filtering) from various locations
- Preparing a security patch for the Linux kernel
Of course, no research project requires all these tasks, and of course, each research project may have its own set of interesting hands-on requirements, but if you (the prospective student) don't have any experience with at least a few such tasks (
or similar ones), then you're probably not ready for the kind of research I conduct.
But despair not. I designed a lab course in which you can gain a lot of relevant hands-on experience. Please consult me if you're interested!.
My expectations from you
In general, I expect the student to be committed to the research project. This is difficult to achieve if the student is also employed in a non-negligible capacity, and more so if the student also has to take courses in parallel (on top of the employment). I expect the student to be a self learner and to fulfill tasks (that we agree upon) quite independently. I expect the student to manage his/her own time. I expect the student to ask questions when he/she gets stuck (but only after he/she made a reasonable effort to solve the problem independently). I expect the student to exhibit perseverance -- in our research we sometimes face annoying/difficult obstacles (kernels don't compile out of the box, networks interfere with our measurements, etc.), but we do not give up. I expect students to communicate with me on a regular basis. I expect students to be responsive (i.e. respond to emails in a timely fashion).
My students are seated in the security research lab room, A316.
In terms of research project deliverables, the way I see it, there are 3 "products" from the research:
- A thesis
- A paper, accepted to a (ideally, top-tier) conference
- A presentation, presented by the student at the above conference
It is important to stress that all three are needed, from my perspective. And while you may consider the thesis as the main product, if you want to pursue an academic career (or for an MSc student -- even a PhD) then an MSc thesis based on a top-tier conference paper is a good start. And presenting your research in a conference is a great way to become known academically and to jump-start your network of academic connections.
To be explicit: I expect the student to write all the above (in English), with my help of course. And delivering all three is mandatory for the completion of the degree. Typically, the thesis is derived from a paper version that got accepted to a conference.
What you can expect from me
I am genrally responsive to emails and other means of communication. You can ask me questions and I will usually relpy kindly and quickly. We work together on research directions (in most cases, I come up with the initial research direction/idea, but it can evolve; and you can
always suggest new ideas). if you're stuck, I will do my very best to help. I will guide you in all things academia, and I will help you define and pursue your academic career.
What to do next?
If you read through all the above, and you'd like to proceed, then please send me:
- CV
- Academic status (how far are you into your degree, what's still left), employment status (are you employed? where?, in what capacity?)
- A sample of a scientific (academic) text you wrote (all by yourself) in English. This can be a project or a term paper you submitted, etc.
- Any additional info that you find relevant
Once you do, I will respond quickly. If I think you are potentially a good fit, I will set up an interview (Zoom or face-to-face), and if this phase is successful, we will probably proceed with a lab. This lets both of us work together and get an idea of whether we do that well. It is also a good opportunity for you to see if the topics I research are of interest to you, and for me to see how well you function as a researcher. At the end of the lab you will submit a lab report and get academic credit points.
If we're both satisfied at the end of the lab, I will register you as my student, and we can continue the research together.
General information
My students are seated in my lab, room A-316. We use
my lab account under HUJI CSE's github to host our projects. We use my Overleaf account for papers, theses, etc. Most research projects involve writing low-level C/C++ code, combined with some scripting (typically Python). Most code is developed for Linux (we mostly use Ubuntu). We mostly use Azure for cloud services, though this may change in the future.