Grad Spotlight: April Shi
Shi is graduating with a combined bachelor’s and master’s degree in computer science

While at Northwestern, April Shi studied agentic AI and generalist robots, exploring methods to safely integrate the technology into our day-to-day lives. In collaboration with Charles Cui (PhD ’25, MS ’23) and Professor Matthew Kay, Shi researched AI-powered education aides for teachers. In her coursework, she built an evolutionary music melody breeder, an interactive software application that uses genetic algorithms to generate musical themes, and trained a Vision-Language Agent to play drone volleyball.
In The Garage at Northwestern, Shi worked with various startups as a member of the entrepreneurial community’s Residency Program. Shi also served as a peer mentor for five quarters, supporting students in COMP_SCI 211: Fundamentals of Computer Programming II, COMP_SCI 212: Mathematical Foundations of CS Part 1: Discrete Mathematics for Computer Science, COMP_SCI 336: Design & Analysis of Algorithms, COMP_SCI 348: Intro to Artificial Intelligence, and COMP_SCI 449: Deep Learning.
Out and about on campus, Shi led walking tours for Northwestern’s Office of Undergraduate Admissions; rolled up her sleeves with the Prairie Cats, the University’s ecological restoration club; and captained the Women's Club Volleyball team. She also played violin with Northwestern’s Philharmonia, the largest orchestra on campus, and spent Monday nights solving crosswords with the Northwestern Crossword Team.
Shi, who graduates this month with a combined bachelor’s and master’s degree in computer science, discussed her experience at the McCormick School of Engineering, impactful interdisciplinary experiences, and her advice for current students.
Why did you decide to pursue computer science at McCormick?
My instinct to automate showed in second grade, when I was taught to perform multiplication in second grade by drawing and counting dots (3x4 would be visualized as 3 rows of 4 dots). I eventually refused to draw another dot and instead taught my classmates skip counting and repeated addition.
In high school, when I discovered programming as a tool for automation, I was fascinated by the breadth of possibilities with computer science. Choosing CS at McCormick was intuitive because I was never just fascinated by computer science in isolation. I find CS to be completely inseparable from its real-world impact in every other domain.
How did the McCormick curriculum help build a balanced, whole-brain ecosystem around your studies in computer science?
McCormick's Design Thinking and Communication curriculum exposed me to how a skillset in computer science fits with other engineering programs, with my first groupmates spanning mechanical engineering, biomedical engineering, and materials science. Interdisciplinary collaboration has been a major contributor to my research interests, inspiring me to continue taking project-based courses at the intersection of computer science and other domains, like COMP_ENG 346/COMP_SCI 346: Microcontroller System Design or COMP_SCI 301/ MECH_ENG 301: Introduction to Robotics Laboratory.
What does “human-centered design” mean to you as a developer, and how has it impacted your approach to coding or building systems?
When most people first hear “human-centered design,” they think primarily of the generic user experience, considering factors like intuitive interfaces and ease of navigation. Through my coursework at Northwestern, I've engaged with design more expansively. I think 'human-centered' must account for every person who touches it. For the end user, it must be accessible, safe, and fair regardless of their background. Additionally, an often-overlooked stakeholder is the developer’s teammates, colleagues, and anybody else who interacts with the codebase. Through my practice across courses, research, and internships, I've learned to ensure that the codebase is legible and extensible, and protected for both today and the future. I now write code that doesn't collapse under a dependency update and strong enough documentation that the code is understood and modifiable.
What skills or knowledge did you learn in the undergraduate program that you think will stay with you for a lifetime?
The curriculum did a great job of slowly removing the scaffolding, with early courses holding my hand through more structured programming assignments, and my later coursework giving me the responsibility to define and solve problems. With this independence came the necessity of asking good questions, digging into how things work, and the scenarios that break them. Especially in CS, where the field changes so rapidly and an industry standard can quickly become obsolete, the investigatory mindset is something that I expect to utilize for the rest of my career.
What's next?
I'm excited to start my career at Stripe in San Francisco as a software engineer!
What advice would you give to current or incoming computer science students?
Start with breadth, then pick an avenue for depth. Starting out, it's most useful to get a taste for everything, and don't constrain your learning to what you think is most applicable in industry. Take note of what piques your interest the most, and find opportunities to go deeper, whether that's through research opportunities (it's a lot easier to get involved than it may look, trust me) or more advanced coursework. And it's never too late to try new things. I randomly decided to take quantum computing this year and enjoyed it enough to continue with the curriculum and write a paper. Remember that learning is not just for content but for the skill of acquiring knowledge!
Editor's Note: This is the first in a series of Q&As with graduating Northwestern Engineering students. Stay tuned for more reflections leading up to the June 15 Undergraduate Convocation.