Skip to content
AI, Cyber & Computing

Computer science student takes engineering skills to Neuralink

A guy in a grey hoodie holds up a fake skull with a brain. Behind him is a "Neuralink" sign.
Mateo McKee is helping develop the software used in the manufacturing and verification of Neuralink’s brain implants.
Share this story

A computer science class project that took UT San Antonio senior Mateo McKee months to build nearly unraveled because of a one-character mistake.

McKee, a computer science major in the College of AI, Cyber and Computing, built a C compiler that translates programming code into instructions a computer processor can execute. But a single error caused the program to overwrite memory and crash.

Portrait of Mateo McKee
Mateo McKee

“My worst bug was in the assembly code generation stage, where one wrong number overwrote memory and crashed the program somewhere completely different from the actual cause,” McKee said. “It took days to track down and one character to fix.”

That attention to detail helped McKee land an internship at Neuralink, where he is developing software used in the manufacturing and verification of the company’s brain implants.

“A compiler is software where a single silent mistake corrupts everything downstream, so correctness is its entire job,” he said. “Manufacturing and verification software for a medical implant is the same kind of problem, but with much higher stakes. That’s the mindset I’m bringing to Neuralink.”

Neuralink develops brain-computer interface technology designed to translate neural signals into commands that allow people with certain neurological conditions to control external devices. Its implant technology is being evaluated in human clinical trials involving people with paralysis, including individuals who may qualify because of conditions such as amyotrophic lateral sclerosis (ALS).

“I’ll be working on systems that help make sure each device is built and tested correctly before it’s ever implanted in anybody,” he said.

Computer programming exploration

McKee developed his project in CS 4713: Compiler Construction, an upper-division computer science course taught by Ziad Najem, PhD, who introduces students to the process of translating programming languages into instructions computers can execute.

“CS students interact with compilers from almost day one, yet many treat the compiler as a black box, perhaps even a magic box. I have never liked that,” Najem said. “The better programmers understand what a compiler does and its role in the computing ecosystem, the better programmers they can become.”

For the course’s capstone project, students designed and implemented a compiler or another substantial language-processing system using concepts learned throughout the semester.

Najem said McKee chose to build a C compiler from scratch. Rather than relying on existing tools or AI to automate parts of the process, McKee built those components himself. That decision made the project significantly more difficult and gave him a deeper understanding of key parts of the compilation process.

McKee said he challenged himself to write the entire program in C. He was motivated by a quote from physicist Richard Feynman: “What I cannot create, I do not understand.”

“The goal I set for myself was to understand every stage of what happens after you hit ‘compile,’” McKee said. “The open-ended structure of the course is what made that possible: it left room for passionate students to build and learn.”

Najem said students develop skills in language design, code generation, testing and debugging while learning to approach complex programming challenges in different ways.

“A student designed a language for describing music as waves and translated those descriptions into playable audio,” Najem explained. “Mateo went deeply into traditional compiler construction and implemented machinery that would normally be provided by an existing tool.

“Students moved beyond following a recipe,” he said. “They understood the underlying ideas well enough to make their own engineering decisions and build something that worked.”

Making a connection

When McKee published his compiler project on LinkedIn and GitHub, a Neuralink director came across his work and reached out about an internship opportunity.

McKee spent a week preparing for four interviews, including a 30-minute technical presentation to a panel of Neuralink engineers about the compiler’s architecture, his design decisions and the challenges he faced.

Previous software engineering internships at Uber and Apple also helped McKee develop his technical skills.

Engineering with high stakes

McKee is applying the lessons he learned from building and debugging his compiler to his work at Neuralink, where accuracy carries particularly high stakes.

McKee hopes to deepen his understanding of how engineers develop and verify software in settings where accuracy is critical, while gaining experience that could lead to a permanent position.

“Neuralink will be my final internship before graduating, and it’s the first where the user of my code could be a real patient,” he said. “That’s not something I’m going to take lightly.”