What attracted you to Occidental?
At first, it was the short commute! However, looking back at my teaching experience at Occidental as an adjunct instructor, I greatly value the supportive and diverse environment that a college like Occidental provides, which was the deciding factor for me to accept this tenure track position.
What are your early impressions of classroom life?
Oxy students are not interested in the traditional one-way the professor teaches and students learn type of environment. They respond better in a reflective, fun and engaging environment, where they can learn from the professor and also can teach and learn from each other. Students are interested in how to use what they learned in classrooms to solve real world problems, which makes learning much more effective and interesting. Especially in computer science, the end goal is not to just produce code that solves hypothetical problems, but to use technology to make the world a better place.
What do you see as the value of a liberal arts education?
Liberal arts education creates a collaborative and equal learning environment for every student. It promotes reflective thinking and improves their communicative and transcultural skills through emphasizing the connections between the students’ own knowledge, experience, cultural background, learning abilities, the subject matter discussed in class, and application of such knowledge in real world and other disciplines.
Students are stimulated to think beyond their comfort zones and feel involved in their own learning process. As computer science in a liberal arts college, this learning experience encourages students to make connections between computer science and other disciplines and how to use technical skills to solve problems, which is much needed in the real world.
Can you talk about your research? Will you be working with Oxy students on future research projects?
I am interested in many aspects of software development. A traditional view may consider software development solely producing codes. However, the development cycle involves planning among different stakeholders, analyzing the customer base, designing the user experience, testing and maintaining software and more.
One of the areas that I am interested in is software understandability. Software understandability plays a pivotal role in software maintenance and evolution. A deeper understanding of code is the stepping stone for most software related activities, such as bug fixing. Being able to measure the understandability of a piece of code might help in estimating the effort required for a maintenance activity, in comparing the quality of alternative implementations, or even in predicting bugs. Unfortunately, existing research points out that there is no correlation between understandability and code readability and metrics generally used for effort estimation and commonly associated with understandability, such as cyclomatic complexity, actually have low or no correlation with understandability. Therefore, new ways to capture facets of code understandability is essential. What I have been doing is to utilize natural language processing techniques to analyze comments, commit messages and other non-source code software artifacts generated when producing source codes to examine whether these could be used to assess software understandability better.
Regarding student research: yes. In fact, I have been working with students on various projects for the last two years. Michael Shoga ’18, Luis Figueroa ’19, and Brian Li ’20 have all co-authored with me on papers in the past.