Education
- Ph.D. in Computer Science and Engineering, University of Michigan, 2009
- M.S. in Computer Science and Engineering, University of Michigan, 2005
- B.S. in Computer Science, Carnegie Mellon University, 2003
What are the main focuses of your research?
I enjoy using machine learning to solve interesting problems in a variety of fields. My research projects include applications of machine learning and statistics in higher education, computer security, and 3D vision. For example, one project used machine learning to figure out how to distinguish malicious Android applications from benign applications, using only the information available on the Google Play store to detect over 50% more malware than the previous state of the art. In addition to these research projects, I have worked with various corporate clients to solve problems related to real estate auctions, medical malpractice insurance, and customizing financial portfolios.
One current research project is a collaboration with biology, mechanical engineering, and electrical engineering faculty. The goal is to build a mobile robot that uses computer vision to follow ants in their natural habitat, providing data for biology researchers who study ants’ social structures. I am working with a team of several students to evaluate and improve techniques for tracking objects such as ants in videos. Tracking a small object that can hide behind other objects is a challenging problem, so existing object tracking techniques will sometimes work well and other times work poorly on this problem. (In the linked videos, the orange box is the ant we are trying to track and the green box shows where the computer thinks the ant is.) The next step in this project is to apply deep learning-based techniques, which we plan to “teach” to find ants specifically, rather than using techniques designed for tracking objects in general.
What specific courses or specialties do you teach?
I have taught a variety of courses, from our Computer Programming II course that freshmen and sophomores take, up through senior-level courses where we study things like how programming languages are built and analyze how computers can solve problems more efficiently. In each of my courses, I enjoy using the techniques we learn to solve realistic problems. That problem-solving aspect of computer science is what drew me to the field, and it continues to be what I enjoy most about computer science.
Teaching our year-long capstone project sequence provides a great opportunity for me to work closely with teams of students on projects that they select, helping them to refine their designs and their software until they have a product that is thoroughly tested and well-suited for its purpose. This experience helps prepare students for industry, where working on teams to design and improve software based on user feedback is the ideal standard.
What is the most important piece of advice you give students to help them succeed?
Learning how to learn is one of the most important skills to develop as a college student. Particularly in the field of computer science, technologies change rapidly, so our graduates need to be able to teach themselves new skills. Throughout our computer science courses, students research new topics on their own, often presenting their results to the class. This gives them practice finding resources and distilling useful information from them.
Selected Publications
- "Effects of Network Latency on Games with Human and Distributed Agent Players." In Proceedings of The 2017 AAAI Fall Symposium Series, 254-257. Arlington, VA.
- "Experimental Studies of Stereoscopic Vision for Command and Control Operations," Advances in Military Technology, vol. 9, no. 2, 2014.
- "Incorporating Prior Knowledge into Temporal Difference Networks," Journal of Computer Science, vol. 10, no. 11, 2014.
- "A Comparison of Algorithms for Handheld Wand Tracking," Applied Artificial Intelligence, vol. 28, no. 9, 2014.
- "High Precision Screening for Android Malware with Dimensionality Reduction," in Proceedings of the 13th IEEE International Conference on Machine Learning and Applications (ICMLA 2014).
- "Comprehensive Behavior Profiling for Proactive Android Malware Detection," Proceedings of the 17th International Information Security Conference (ISC 2014). Lecture Notes in Computer Science (LNCS), vol. 8783, 2013.
- "Valid Parameters for Predictive State Representations," in Proceedings of the 11th International Symposium on Artificial Intelligence and Mathematics (ISAIM 2010).
- "Approximate Predictive State Representations," in Proceedings of the 7th International Conference on Autonomous Agents and Multiagent Systems (AAMAS 2008), 2008.
- "Learning Predictive State Representations in Dynamical Systems Without Reset," in Proceedings of the 22nd International Conference on Machine Learning (ICML 2005), 2005.