CS Senior Spotlight: Natalie Hill
Hill will join MongoDB in New York City as a software engineer this fall
During her four years at Northwestern, you might have found Natalie Hill working on low-level systems, investigating research problems in filesystems and databases.

Perhaps you dropped into her peer mentor office hours. Hill served as a peer mentor for eight quarters, supporting COMP_SCI 211: Fundamentals of Computer Programming II, COMP_SCI 213: Intro to Computer Systems, COMP_SCI 214: Data Structures and Algorithms, and COMP_SCI 343: Operating Systems.
“I’ve found it incredibly fulfilling getting to contribute to other students’ experience of these classes that I loved so much, as well as getting the chance to work more closely with some truly fantastic professors,” Hill said.
You might have also seen Hill cultivating one of her many interests outside of computer science. Every fall, co-captain Hill competed against other local collegiate teams with the Northwestern Women's Rugby Football Club. And during rehearsals every Monday and Wednesday, Hill played violin with Northwestern’s Philharmonia, the largest orchestra on campus.
Hill graduates this month with a bachelor’s degree in computer science and a minor in machine learning and data science. We caught up with her and asked about her experience at Northwestern Engineering.
Why did you decide to pursue the CS major at McCormick?
I’ve always loved math and problem solving, and when I started learning to code in my senior year of high school, I realized that it was the perfect way to apply those things. I was really drawn to the cross-disciplinary nature of McCormick’s engineering and CS curriculum, especially with the emphasis placed on design and the freedom to take classes outside of the engineering school. I’ve always had interests in a lot of different areas, so I was excited by the idea of being able to get a full engineering education without being boxed into just one area of study.
How did the McCormick curriculum help build a balanced, whole-brain ecosystem around your studies in CS
Engineering Analysis was my first real introduction to the fast pace of learning and difficulty of problem solving required in college courses, and while it was definitely challenging, it forced me to develop a strong foundation that has been invaluable in every class I’ve taken.
DTC provided a whole different set of skills, from collaborating with other students from a variety of engineering disciplines, to improving my technical writing and learning, to communicate with non-technical clients, to iteratively designing and developing a prototype over multiple months. The interpersonal and communication skills I learned in the course have been immensely helpful in all the project courses and internships I’ve done.
How did interdisciplinary collaboration and teamwork shape your experience in the program?
The experience of figuring out how to align multiple perspectives into one solution has been helpful in so many group settings I’ve worked in during my degree. One of the most important things I learned in the past few years is the value of seeking out other points of view on an issue and remembering that if I’m ever stuck on a problem, there’s always another way to think about it.
What project or assignment are you most proud of from your time in the program?
This past year I had the chance to do an independent study project with Professor Branden Ghena. Working with Jason Lu, a fellow CS student, we built a Unix-based filesystem from scratch in C to run in Nautilus, the operating system used in COMP_SCI 343: Operating Systems. The goal was to create a programming assignment to be used in that course, and we ended up not only building the filesystem but also writing the assignment specifications and instructions. Having the opportunity to solve both technical and pedagogical problems, make design decisions, and write thorough documentation all taught me so much that I’m not sure I ever would have learned in a regular classroom setting. This was the most fun I’ve ever had working on a project, and it cemented my interest in operating systems and low-level system programming.
How has your approach to problem-solving evolved during your studies?
The most important thing I’ve learned is how to be comfortable not knowing what I’m doing a lot of the time. It’s easy to focus on all the things I don’t understand when faced with a new problem and get stuck before even really getting started. I’ve learned to just dive in anyways and do what I can with what I know, and to believe that after enough time chipping away at the problem I’ll come to a solution.
What role do creativity and design play in your approach to coding or building systems?
Like most programmers, I spend a lot of time debugging my own code trying to find the cause of an error or bug. Over time, I’ve come to see it as a strangely creative activity, because in some ways it’s a test of how open you can make your mind to all the possibilities for what might be going wrong. It requires testing the boundaries of what you can assume to be true and what code you should be suspicious of, and I find that thinking outside the box of my own assumptions is often the path to solving the problem.
What's next? What are your short- and long-term plans/goals in terms of graduate studies and/or career path?
I’m super excited to be moving to New York City in the fall to start work at MongoDB as a software engineer! I’m also interested in pursuing a master’s degree at some point in the future, but I’m hoping to get a few years of industry experience first so I can further explore my interests in a different setting before going back to school.
What advice would you give to current or incoming CS students?
My advice would be to go out and try new things and figure out what you’re interested in. I’ve found that nothing makes projects more enjoyable than being truly invested in what you’re working on, and it’s so worth taking time to find out what that is while you have the chance to take classes and do research in the huge range of different areas within CS.