Joshua Sunshine

Senior Research Felow

Director, Undergraduate Research Programs

Office: TCS Hall 323

I am a Senior Research Fellow in the Institute for Software Research at Carnegie Mellon University. I have broad research interests at the intersection of programming languages and human-computer interaction. I am particularly interested in better understanding of the factors that influence the usability of reusable software components.

I am fortunate to work with amazing PhD students. I advise Jenna Wise (co-advised by Jonathan Aldrich) and Wode “Nimo” Ni (co-advised by Ken Koedinger). I also collaborate with Katherine Ye.

I direct the Research Experience for Undergraduates in interdisciplinary Software Engineering (REUSE) program with Charlie Garrod and Claire Le Goues. The program provides an opportunity for a diverse cohort of undergraduates from school accross the country to spend the summer working with the world’s leading computer scientists. Students conduct research in a broad range of areas, including: collaboration and teams, computational statistics, computer architecture, diagrams and visualization, data mining and analysis, embedded systems, human-computer interaction, networking, privacy, program synthesis, program repair, programming languages, security, software architecture, societal computing, software requirements, and testing.

I completed my PhD in Software Engineering from Carnegie Mellon in December 2013. My dissertation focused on the usability of software libraries with ordering constraints (API protocols). I was advised by Jonathan Aldrich.

I graduated from Brandeis University in 2004 and worked for almost four years as a software engineer before starting graduate school. I’m married to Kira Sunshine, and we have three children, Akiva, Elisheva, and Tamir.

selected publications

    Can advanced type systems be usable? An empirical study of ownership, assets, and typestate in obsidian
    Proceedings of the ACM on Programming Languages (OOPSLA), 2020. 🏆 Distinguished Artifact Award
    Gradual Verification of Recursive Heap Data Structures
    Jenna Wise, Johannes Bader, Cameron Wong, Jonathan Aldrich, Éric Tanter, and Joshua Sunshine
    Proceedings of the ACM on Programming Languages (OOPSLA), 2020.
    Obsidian: Typestate and Assets for Safer Blockchain Programming
    Michael Coblenz, Reed Oei, Tyler Etzel, Paulette Koronkevich, Miles Baker, Yannick Bloem, Brad A. Myers, Joshua Sunshine, and Jonathan Aldrich
    ACM Transactions on Programmming Languages and Systems (TOPLAS), 2020.
    Penrose: From Mathematical Notation to Beautiful Diagrams
    Katherine Ye, Wode Ni, Max Krieger, Dor Ma’ayan, Jenna Wise, Jonathan Aldrich, Joshua Sunshine, and Keenan Crane
    ACM Transaction on Graphics (SIGGRAPH), 2020.
  5. CHI
    How Domain Experts Create Conceptual Diagrams and Implications for Tool Design
    Dor Ma’ayan, Wode Ni, Katherine Ye, Chinmay Kulkarni, and Joshua Sunshine
    In Proc. of the Conference on Human Factors in Computing Systems (CHI), 2020. 🏆 Best Paper Honourable Mention