Empirical software engineering and computer science education. His recent work in software engineering has focused on using singular value decomposition with software development artifacts to highlight relationships within software systems. These relationships are based upon empirical records of system development and maintenance and can describe the evolution of the software system. In computer science education, Mark's research has focused on project-based learning, including how to effectively create student groups and how to teach complex topics using hands-on, long-term projects.