Theresa Breiner: Voices of Penn Engineering Master’s Alumni

Theresa Breiner: Voices of Penn Engineering Master’s Alumni

This is part of our series of articles, written by Penn Engineering alumni, about their experiences at Penn and how it shaped their lives. Our next article is written by Theresa Breiner, who graduated with a bachelor’s degree in Linguistics from Penn Arts & Sciences and a master’s degree in Computer and Information Technology (MCIT) from Penn Engineering in 2016. The MCIT program is designed for students with no prior experience in the field. Theresa currently works in software engineering at Google, combining her background in Linguistics and Computer Science in her current work.

Theresa Breiner visited London with the Google team, on their way to a language processing conference in Stockholm last summer.

My parents claim that they knew I would be interested in languages from a very young age, and growing up in the Philadelphia public school system, I was lucky to always have engaging teachers who pushed us to be creative. When I was in the second grade, we had to choose our own project about Ancient Egypt. I decided to write a short diary from the point of view of a young girl living there — in hieroglyphics. It was by no means historically accurate, but I wrote a draft in English and then transliterated each letter into the corresponding hieroglyph. I was interested in other codes and writing systems as well, such as Morse code and Braille. My favorite classes were always math and foreign languages, and when I started undergrad at Penn I thought I might major in Mathematics or French. But I wound up discovering the field of Linguistics instead.

Linguistics is, in a sense, an intersection between math and language. While there are a variety of sub-disciplines, it’s all about patterns, data analysis and how a system of rules can combine into infinite possibilities. I really enjoyed my classes, but wasn’t quite sure where they would lead me. Then, I took a class my senior year on how babies learn language. That’s when I started thinking about how programming skills would be useful in doing research with large data sets and trying to model difficult patterns. I decided to take Intro to Java (CIS 110) in my final semester of college.

I really enjoyed the problem-solving element and learning this new type of language where I tried to make the computer understand me. I realized I wanted to learn more before trying to apply the skills to linguistics. There weren’t many formal programs that taught foundational computer science to students without an undergrad degree in CS, but luckily, I discovered the MCIT program at my very own alma mater, in my own hometown.

Penn’s Master of Computer and Information Technology is a pretty unusual program, where students with a variety of engineering and non-engineering degrees get a jam-packed year of learning the basics of programming, algorithms, data structures, computer architecture and systems. They go off to internships during the summer, and come back for the second year where they take master-level courses in Computer Science. In other words, they join students with four or more years of CS schooling after only one intense year of programming experience.

The best part of the program was the professors involved in the first year of classes. They all had done research or worked in industry as software engineers, but their primary focus and passion was pedagogy and how best to teach computer science to students with diverse backgrounds. With their help, the first-year students were able to collaborate and learn fast. While it might not have been a very deep dive into CS, it was broad enough that we were able to touch on all major concepts in the field.

Some students in the program wanted to tie in their various educational backgrounds and tried to find internships that would let them do so. I was one of them — I wound up getting an internship at the MIT Lincoln Laboratory doing some research in field within natural language processing known as named entity recognition, which perfectly fit my goal to combine CS and Linguistics.

It was a huge learning curve starting a CS internship after such a short time learning CS. But thanks to the collaborative and project-based classes, and my experience as a Teaching Assistant during my second semester, I was prepared to try to understand and contribute to code that I didn’t write, and felt comfortable asking for help from other interns and my manager.

When I got back to school, I decided to continue with linguistics-related coursework. I took electives in Computational Linguistics, Applied Machine Learning, and Artificial Intelligence (CIS 530, 519, and 521, respectively). Another course I was really looking forward to, Machine Translation, wasn’t offered during my second year of studies. Fortunately, I was able to work with my advisor and the course professor to put together an independent study project so I could finish my degree with that credit.

Theresa Breiner visited London with the Google team, on their way to a language processing conference in Stockholm last summer.

The two-year program went by super fast. When it came time to interview for full-time jobs it was invaluable to have the support of the MCIT professors. They organized advising sessions, resume reviews, panels with alumni and interview prep exercises. I applied to many places, did some interviews, and eventually received an offer I never imagined I would get, from my dream job: Google. I entered into their Engineering Residency rotational program for new grads and worked on two different teams over a 10-month period before converting to a full-time role as a software engineer on the Speech & Keyboard team, working on internationalization efforts. My job is to help add more languages to Google’s technology, specifically Gboard, Google’s keyboard app for mobile devices.

It’s amazing to be both working as a software engineer and interacting with cool languages every day, most of which I had never even heard of prior to this position. There are almost 6,000 languages spoken in the world, and a large percentage of them still lack mobile keyboard support. Their speakers have to use English or another second language to do something as simple as message their friends.

In order to support a new language, we need to know not only what characters should appear on the keyboard layout, but also what words and sentences look like in the language so that we can support autocorrect and gesture typing, as well as next word prediction. This requires a lot of sentence data in the language to train the language model, and as we get into the less widely spoken languages, it’s not so easy to find good data. Every day I see the work that goes into training models on large amounts of real-world data, and work on creative ways to leverage existing data sets and technologies so we can support these languages. I’m really happy to be part of our mission of making the world’s information accessible to all people.

I think that careers in CS are more and more about applying CS knowledge to other disciplines and I’m so grateful for the combination of experiences that got me to this point. My childhood spent developing an interest in languages and codes set me on the path, but the interdisciplinary and personalized experience I had at Penn played a huge part in allowing me to pivot my career and wind up where I am today.