cucapra / undergrad-research

file issues here if you're interested in doing research with us!
https://capra.cs.cornell.edu/ugresearch.html
0 stars 0 forks source link

Ananya Goenka #141

Closed ananyagoenka closed 2 months ago

ananyagoenka commented 3 months ago

Personal Details

Name: Ananya Goenka (aag237)

Undergrad or MEng? Undergrad

Year in Cornell: Rising Senior

Relevant classes: CS 2110, CS 2800, CS 4820, CS 3110, CS 4110, CS 3410 (Incoming TA for Fall 2024), CS 4410, MATH 2940 In Fall 2024: CS 4814, CS 5414, CS 4420

Expertise (languages/frameworks/etc.): Python, Typescript, JavaScript, Java, HTML/CSS, OCaml, C, Ruby, Unix/Linux, Git, SQL, MongoDB, RISC-V

Research

When do you want to do research?

I would like to begin in Fall 2024, (would love to see if there's any way I can begin being involved in summer) and continue through Spring 2025. I also plan on pursuing a MS, so if possible I would love to continue through that as well.

What is exciting to you about research?

Research excites me because it offers a unique opportunity to dive deep into topics I'm passionate about and contribute something truly original to the field. My interest in research grew out of a desire to go beyond just implementing pre-defined solutions, which has been my primary role in most classes and internships.

What really draws me to research is the freedom it provides. I'm eager to explore a wide range of areas within a topic, identify unanswered questions, and then figure out how to solve them. That word "figure out" is key – it encompasses defining the problem, scoping it, developing a methodology, and then implementing the solution. It's a holistic process that challenges you to think critically at every step.

In my software internships, I've often worked on problems with well-established solutions. But research is different. While you can certainly build upon others' work, it's ultimately up to you as the researcher to synthesize various elements into a cohesive, novel solution. This aspect of originality is what I find most thrilling.

Fundamentally, I'm looking for a chance to design systems and processes from the ground up, to iterate when things don't work out, and to produce work that others can build upon. Coming from a software background, I see research as not too dissimilar from open-source development. You're contributing new content to a field that others have shaped, and in turn, those same experts will examine and build upon your work. It's an incredible opportunity to learn from and collaborate with people who are deeply knowledgeable about the field.

What kind of research do you want to do?

My primary research interest lies in the domains of programming languages and compiler design. I'm particularly drawn to these areas because they form the fundamental bridge between human-readable code and machine-executable instructions, offering immense potential for optimization and innovation. In the realm of programming languages, I'm keen to explore topics such as:

As for compiler research, I'm excited about:

While these are my main areas of interest, I am definitely looking to explore and open to any opportunities!

Background

Was there a paper that particularly excited you?

When I first read the "Fire and forget hardware design" paper, I was struck by how the authors challenged conventional wisdom in processor design.What really got me excited was the paper's creative problem-solving approach. As someone who's always been fascinated by the intersection of software and hardware, I found myself imagining how this concept could be applied to other areas of computer architecture. The paper also sparked my interest in predictive techniques in hardware design. I started exploring more about prediction mechanisms in processors, which led me down a rabbit hole of related research. This kind of intellectual journey is exactly what I love about engaging with cutting-edge research. Moreover, the paper's focus on simplifying hardware design while improving performance really speaks to my interest in making complex systems more efficient and accessible. It reminded me of why I got into computer science in the first place – the thrill of finding elegant solutions to complex problems. Reading this paper reinvigorated my enthusiasm for research in computer architecture and compiler design. It made me eager to contribute to similar groundbreaking work, pushing the boundaries of what's possible in processor design and optimization

Which of the current research projects would you be interested in working on and why? I'm really drawn to both the Calyx and Dahlia projects at CAPRA. As someone passionate about bridging the gap between software and hardware, Calyx's approach to hardware accelerator compilation fascinates me. I'm excited by the challenge of working with a language that handles both structural and control aspects of hardware design. Dahlia also caught my eye because it tackles a problem I've often thought about – how to make hardware design more predictable and accessible to software developers. The idea of using advanced type systems to catch design issues early resonates with my interest in programming languages. Both projects seem to be pushing the boundaries of what's possible in hardware-software co-design, which is exactly the kind of cutting-edge work I'm eager to be part of. I'm particularly intrigued by how these tools could make hardware design more approachable for a wider range of developers. Given my background in both software and hardware, I believe I could contribute meaningfully to either project while also expanding my own skills in compiler design and language theory. As before, I'm open to exploring opportunities on other research projects too!

Anything else you want to tell us about yourself? I'm in the early stages of developing a small, domain-specific language (DSL) aimed at simplifying the process of describing simple hardware components. The idea came to me after struggling to explain basic digital logic concepts to some of my classmates last semester. I thought, "What if there was a way to describe hardware that felt more intuitive to software developers?" So, I decided to use my free time in summer to start building this DSL that allows users to describe hardware behavior using a syntax inspired by popular programming languages. It's still very much in its infancy, but I plan to begin by implementing a basic compiler that can translate my DSL into synthesizable Verilog code for very simple circuits like adders and multiplexers.

Attach a CV/Resumé: AnanyaGoenkaResume.pdf

rachitnigam commented 3 months ago

Thanks for reaching out @ananyagoenka! I'm the project lead for Dahlia and Calyx. Could you send an email to rnigam@cs.cornell.edu and we'll schedule some time to chat?

ananyagoenka commented 2 months ago

Closing issue as completed