Sophia Kolak

Fourth Year Undergraduate in the Computer Science Department at Columbia University.

cv: pdf

I'm currently working at Columbia's ARiSE Lab under the direction of Baishakhi Ray on detecting performance bugs in Python algorithms using natural language models of source code. I also work as a teaching assistant for Computer Science Theory (COMS 3261), and serve as President of the Columbia Association for Women in Mathematics. Last but not least, I am highly involved in Columbia Space Initiative, where I co-led our computer science mission and helped design and build a EVA tool that we tested and presented at NASA's NBL as part of a nationwide engineering challenge.


It Takes a Village to Build a Robot: An Empirical Study of The ROS Ecosystem, Sophia Kolak, Afsoon Afzal, Claire Le Goues, Michael Hilton, and Christopher Steven Timperley, in International Conference on Software Maintenance and Evolution, ICSME ’20, 2020, vol. pdfpdf datadata

Reusing 100% of The Brain: Neuro-reuse for Self-* Planning, Sophia Kolak, Cody Kinneer, David Garlan, Claire Le Goues, *under review* for the IEEE/ACM 43rd annual international conference on software engineering ICSE 2021 pdfpdf

Detecting Performance Patterns with Deep Learning, Sophia Kolak in Proceedings of the ACM SIGPLAN International Conference on Systems, Programming, Languages, and Applications: Software for Humanity, (SPLASH Companion '20) pdfpdf

SHIRLEE: A Sharp-edge Handheld Identifier and Remover in Low-gravity Extravehicular Environments, Dada, Ganeshan, Groll, Kolak, Ravi, Stein, Wang in Proceedings of American Institute of Aeronautics and Astronautics AIAA SciTech Forum 2021 pdfpdf


My current research interests are primarily in software engineering and artificial intelligence/machine learning. I am interested in machine learning for programming, and in studying how real-world systems that reason with machine learning can better respond to unforeseen events.

This past Summer (2020), I participated in Carnegie Mellon's REU in software engineering, where I was advised by Claire Le Goues and worked alongside Cody Kinneer on improving plan reuse for autonomous systems with transfer learning. My project specifically focused on how self-adaptive, self-healing, self-managing, or self-* systems that plan with neural networks could use information from past plans to generate new ones. We proposed a method for transferring information between plans using evolutionary computation, which I implemented on our exemplar self-* system and empirically evaluated. The results indicated that neuro-reuse converged to a higher utility plan in the majority of trials, and was more robust against drastic changes to the system's operating environment (as opposed to re-planning from scratch). We described our methodology and results in the paper currently under review for ICSME `21.

I also participated in the Software Engineering REU program at Carnegie Mellon University in Summer 2019. I was advised by Claire Le Goues and Michael Hilton, and worked alongside Chris Timperley and Afsoon Afzal, studying the Robot Operating System (ROS). This experience led to the ICSME publication "It Takes a Village to Build a Robot", where we mapped package relationships in the ROS ecosystem and discovered a small group of influential packages at the core of the collaboration structure. I also gave a talk on this research at ROScon in October, and was mentioned in the Open Robotics highlights. Video and slides can be found here. After my presentation at ROScon, I was invited to participate in a software quality panel for the 2020 version of the conference (ROSworld).

During my sophomore year, I worked in the Axel Lab under PI and Nobel Laureate Richard Axel. The lab's goal is to understand how the brain is able to construct an internal representation of reality. In the experiment I worked on, we recorded place and time cell spiking activity during a navigation task to examine how mice represent, recognize and employ sparse olfactory landmarks to form a cognitive spatial map. I used machine learning techniques to identify place and time cells in this high dimensionality neuron spiking data, and to correlate their activity with behavior.

Another ongoing project is my work with Columbia Space Initiative. I am the mission co-lead for Columbia's CS team, recently accepted to compete in the NASA SUITS challenge . Our team is designing an augmented reality user interface for the Microsoft HoloLens, a proxy for the AR-enabled glass that will be present in next generation space suit helmets. The UI is meant to help astronauts complete tasks with less intervention from Mission Control, in preparation for deep space exploration. Our faculty advisor and mentor is professor Steven Feiner, PI of the Columbia Computer Graphics and User Interfaces Lab. Here is a link to our accepted proposal: an initial design plan.


I have always loved teaching, especially in math and CS. Fall 2019 and Spring 2020 I was a TA for CS Theory (COMS 3261), and this semester (Fall 2020) I will be TAing the class again. This course is an introduction to models of computation, computability, and complexity. It is highly mathematical and primarily proof-based (the follow up to Discrete Math). Over the course of the semester, we were responsible for coming up with HW problems, designing exams, grading (lots of grading), running recitations, holding weekly office hours, and managing the Piazza page. To supplement class material, I hosted a midterm review and a proof writing workshop (slides for both are available here!) (proof slides) (midterm review slides)

Prior to becoming a TA, I worked at Coding4Youth where I taught game design in Java, and at Gooroo where I tutored NYC students in math.


Last Spring, I took an amazing course in Quantum Computing. For my final project, I proposed and implemented a quantum algorithm for parsing simple context-free grammars. Here is the final paper I wrote for the class.

Here are some memorable proofs from my time as a TA for CS theory and student in Machine Learning/Algos.