CS Senior Spotlight: Bennett Lindberg

After graduation, Lindberg will join Motorola Solutions as a software engineer in the Secure Products Group

In the Northwestern CS Research Track program — designed for third-year students to learn the fundamentals of academic research — Bennett Lindberg leaned into the excitement of the unknown, tackling unsolved research problems.

Bennett Lindberg
Bennett Lindberg

Working over two quarters, Lindberg and his Research Track teammate Andrew Li bridged the trade-off between easier-to-use dynamically typed code and type safe and more maintainable statically typed languages. They developed a proof of concept to automate the generation of types using symbolic evaluation and SMT solvers.

Lindberg also helped fellow students as a peer mentor, supporting multiple CS courses. In addition to holding office hours, Lindberg helped design course structure, authored new homework assignments, and managed an auto-grading system.

“I genuinely love helping students,” Lindberg said. “It is very rewarding to help concepts ‘click’ for students, and I get back just as much benefit because explaining topics solidifies my own understanding.”

Lindberg, who graduates this month with a bachelor’s degree in computer science, discussed his experience at the McCormick School of Engineering, impactful collaborative experiences, and his advice for current students.

Why did you decide to pursue the CS major at McCormick?

I’ve always loved building and designing things, but growing up, I felt limited by the availability of materials. Computer science and software development offered a solution: a nearly infinite sandbox for creation and innovation, much of it immediately accessible at one’s fingertips. After getting a taste in high school for the seemingly limitless creative opportunity available in computer programming, I knew I wanted to dive deeper into the field.

How did the McCormick curriculum help build a balanced, whole-brain ecosystem around your studies in CS?

The Design Thinking and Communication (DTC) sequence expanded my understanding of engineering and design beyond the software sphere. Although I didn’t work on anything directly software-related in my DTC coursework, the courses introduced me to the parallels between software engineering and other McCormick engineering disciplines. DTC’s approach to iterative development is quite similar to Agile software development practices, and design thinking is paramount in the construction of industry software projects. I didn’t realize it at the time, but my experiences in DTC were representative exercises of what I’d be doing in my future software-related internships and research.

How did interdisciplinary collaboration and teamwork shape your experience in the program?

Many of my proudest achievements at Northwestern were completed in collaboration with some very talented peers. My research, teaching, and coursework have taught me that collaboration fast-tracks progress by combining the strengths of each participant. I’ve seen first-hand at Northwestern how diverse perspectives help challenge opinions and course correct toward the best path forward, producing higher-quality results. In my research work, the challenges posed by my collaborators have made me a stronger researcher by forcing me to grapple with false assumptions and think critically before taking action.

What project or assignment are you most proud of from your time in the program?

I am most proud of my work helping Professor Sruti Bhagavatula design and write several homework assignments for COMP_SCI 308: Foundations of Security. I took the course when it first ran in fall 2023, and I enjoyed learning how to both break insecure systems and build robust, secure systems from the ground up. Professor Bhagavatula invited me to serve as peer mentor for the class’s second run the following spring, during which I assisted with adding three new written homework assignments. This project was like flipping the script from my previous experiences; I had spent so much time solving homework problems without considering the difficulty of authoring them. Writing high-quality problems challenged not just my understanding of the content but also my ability to foresee students’ reasoning when solving the problems.

How has your approach to problem-solving evolved during your studies?

Slow and steady wins the race. More than anything else, research has taught me to slow down and think through my decisions before implementing any particular approach. I’ve learned the hard way that jumping right in without considering the downsides of your methodology is a fast-track to undoing all your work. I’ve learned to consider several options (especially the inconvenient ones), seek advice from more knowledgeable peers when available, and develop minimum viable products before going all-in.

What role do creativity and design play in your approach to coding or building systems?

I try to carefully think through the design of my projects before I start developing them. Design decisions can make or break project development far down the line, so I do my best to predict the eventual infrastructure needs of my work. Making design decisions is tricky, though, because too-lenient choices can lead to a sprawling codebase while overly restrictive decisions can stifle future development. I often remind myself that it’s alright to have chosen incorrectly and that turning around to select the proper design choice often pays off in the long run.

How did you stay motivated during difficult times in your academic career?

Staying goal-oriented is incredibly important, not just to have something to aspire to but also to know when you’ve gone off course. Goals help you know what’s important and what’s not. When my situation has become overly difficult, I use my goals to determine which of my engagements aren’t helping me achieve my aspirations. You don’t need to — and often shouldn’t — do everything. Believing in the importance of my objectives provides a sense of intrinsic motivation to persevere.

What skills or knowledge did you learn in the undergraduate program that you think will stay with you for a lifetime?

I’ve learned to change the framework instead of fighting it. Many of the roadblocks I’ve encountered in my projects have occurred when I’ve tried to squeeze new ideas into systems that weren’t designed for them. Many of the breakthroughs I’ve made in my work have occurred when I changed my direction of approach or definition of the problem. Ultimately, trying to operate within a system that simply isn’t set up for your task is going to cause headaches. Knowing when to think outside the box, change one’s methodology, and break existing abstractions is critical to innovation.

What's next? What are your short- and long-term plans/goals in terms of graduate studies and/or career path?

After graduation, I am joining Motorola Solutions as a software engineer in the security-focused Secure Products Group. My long-term plans are open at the moment, but I am interested in both architecting large industry software projects and continuing my research in programming languages.

What advice would you give to current or incoming CS students?

If you’re interested in computer science research, you should try it. Don’t be afraid to talk to professors whose work you find interesting. I got started in programming languages (PL) research by taking COMP_SCI 321: Programming Languages, engaging thoughtfully during lectures, and talking to my professor after class. Don’t let yourself believe you are too young or inexperienced to get started in a new field. In my time at Northwestern, genuine interest and engagement with the subject matter has taken me further than anything else.

McCormick News Article