Philip Guo is an associate professor of Cognitive Science and (by
affiliation) Computer Science & Engineering at UC San Diego. His
research spans human-computer interaction, data science, programming
tools, and online learning. He studies how people learn programming,
data science, and design, and he builds tools to help people better
understand code and data.
Contact | FAQ / Advice | Google
Scholar |
Curriculum Vitae
Students
Stuff
- Best Paper Awards: SIGCSE 2021, CHI 2020, VL/HCC 2019, UIST 2018, ICSE 2012, ISSTA 2009
- Honorable Mention Papers: CHI 2019, CHI 2018, UIST 2017, CHI 2017, CHI 2014, CHI 2009
- Ten-Year Impact Paper Award: ISSTA 2009
- Ph.D. in Computer Science, Stanford 2012
- S.B. and M.Eng. in EECS, MIT 2006
- Web Designer of the Year, 1993
These papers give a sense of my current research interests ...
- The Design Space of Computational Notebooks: An Analysis of 60 Systems in Academia and Industry. Sam Lau, Ian Drosos, Julia M. Markel, Philip J. Guo. IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC), 2020.
- Practitioners Teaching Data Science in Industry and Academia: Expectations, Workflows, and Challenges. Sean Kross and Philip J. Guo. ACM Conference on Human Factors in Computing Systems (CHI), 2019.
- Bespoke: Interactively Synthesizing Custom GUIs from Command-Line Applications By Demonstration. Priyan Vaithilingam and Philip J. Guo. ACM Symposium on User Interface Software and Technology (UIST), 2019.
- Porta: Profiling Software Tutorials Using Operating-System-Wide Activity Tracing. Alok Mysore and Philip J. Guo. ACM Symposium on User Interface Software and Technology (UIST), 2018.
- Software Tools to Facilitate Research Programming. Philip J. Guo. Ph.D. dissertation, Department of Computer Science, Stanford University, 2012.
Publications
2021
2020
- Wrex: A Unified Programming-by-Example Interaction for Synthesizing Readable Code for Data Scientists. Ian Drosos, Titus Barik, Philip J. Guo, Robert DeLine, Sumit Gulwani. ACM Conference on Human Factors in Computing Systems (CHI), 2020.
Best Paper Award
[bibtex]
- The Design Space of Computational Notebooks: An Analysis of 60 Systems in Academia and Industry. Sam Lau, Ian Drosos, Julia M. Markel, Philip J. Guo. IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC), 2020.
[Podcast | bibtex]
- Learnersourcing at Scale to Overcome Expert Blind Spots for Introductory Programming: A Three-Year Deployment Study on the Python Tutor Website. Philip J. Guo, Julia M. Markel, Xiong Zhang. ACM Conference on Learning at Scale (work-in-progress), 2020.
[bibtex]
- Designing the Future of Experiential Learning Environments for a Post-COVID World: A Preliminary Case Study. Julia M. Markel and Philip J. Guo. Symposium on the New Future of Work, 2020.
[Blog post | Video summary | bibtex]
- Papercode: Generating Paper-Based User Interfaces for Code Review, Annotation, and Teaching. Priyan Vaithilingam, Julia M. Markel, Philip J. Guo. ACM Symposium on User Interface Software and Technology (UIST) (poster), 2020.
[bibtex]
- Towards a Dynamic Multiscale Personalized Information Space. Jim Hollan, Amy Fox, Philip Guo, Clemens Nylandsted Klokmose, Arvind Satyanarayan, Haijun Xia. Convivial Computing Salon (workshop at the <Programming> conference), 2020.
[bibtex]
- The Essence of Program Semantics Visualizers: A Three-Axis Model. Josh Pollock, Grace Oh, Eunice Jun, Philip J. Guo, Zachary Tatlock. Workshop on Evaluation and Usability of Programming Languages and Tools (PLATEAU), 2020.
(PDF coming soon!)
[bibtex]
- Data Theater: A Live Programming Environment for Prototyping Data-Driven Explorable Explanations. Sam Lau and Philip J. Guo. Workshop on Live Programming (LIVE), 2020.
[bibtex]
2019
- Practitioners Teaching Data Science in Industry and Academia: Expectations, Workflows, and Challenges. Sean Kross and Philip J. Guo. ACM Conference on Human Factors in Computing Systems (CHI), 2019.
Honorable Mention Paper
[Blog post | bibtex]
- Improv: Teaching Programming at Scale via Live Coding. Charles Chen and Philip J. Guo. ACM Conference on Learning at Scale, 2019.
[Blog post | bibtex]
- Software Developers Learning Machine Learning: Motivations, Hurdles, and Desires. Carrie J. Cai and Philip J. Guo. IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC), 2019.
Best Paper Award
[Blog post | bibtex]
- End-User Programmers Repurposing End-User Programming Tools to Foster Diversity in Adult End-User Programming Education. Sean Kross and Philip J. Guo. IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC), 2019.
[Blog post | bibtex]
- Bespoke: Interactively Synthesizing Custom GUIs from Command-Line Applications By Demonstration. Priyan Vaithilingam and Philip J. Guo. ACM Symposium on User Interface Software and Technology (UIST), 2019.
[bibtex]
- Mallard: Turn the Web into a Contextualized Prototyping Environment for Machine Learning. Xiong Zhang and Philip J. Guo. ACM Symposium on User Interface Software and Technology (UIST), 2019.
[Webpage | bibtex]
2018
- Non-Native English Speakers Learning Computer Programming: Barriers, Desires, and Design Opportunities. Philip J. Guo. ACM Conference on Human Factors in Computing Systems (CHI), 2018.
[Blog post | bibtex]
- Mismatch of Expectations: How Modern Learning Resources Fail Conversational Programmers. April Y. Wang, Ryan Mitts, Philip J. Guo, Parmit K. Chilana. ACM Conference on Human Factors in Computing Systems (CHI), 2018.
Honorable Mention Paper
[Blog post | bibtex]
- Codemotion: Expanding the Design Space of Learner Interactions with Computer Programming Tutorial Videos. Kandarp Khandwala and Philip J. Guo. ACM Conference on Learning at Scale, 2018.
[Blog post | bibtex]
- Students, Systems, and Interactions: Synthesizing the First Four Years of Learning@Scale and Charting the Future. Sean Kross and Philip J. Guo. ACM Conference on Learning at Scale, 2018.
[Blog post | bibtex]
- Porta: Profiling Software Tutorials Using Operating-System-Wide Activity Tracing. Alok Mysore and Philip J. Guo. ACM Symposium on User Interface Software and Technology (UIST), 2018.
Best Paper Award
[Blog post | bibtex]
- Fusion: Opportunistic Web Prototyping with UI Mashups. Xiong Zhang and Philip J. Guo. ACM Symposium on User Interface Software and Technology (UIST), 2018.
[Blog post | bibtex]
- The Impact of Culture on Learner Behavior in Visual Debuggers. Kyle Thayer, Philip J. Guo, Katharina Reinecke. IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC), 2018.
[Blog post | bibtex]
2017
- Older Adults Learning Computer Programming: Motivations, Frustrations, and Design Opportunities. Philip J. Guo. ACM Conference on Human Factors in Computing Systems (CHI), 2017.
Honorable Mention Paper
[Blog post | Press release | Podcast | bibtex]
- CodePilot: Scaffolding End-to-End Collaborative Software Development for Novice Programmers. Jeremy Warner and Philip J. Guo. ACM Conference on Human Factors in Computing Systems (CHI), 2017.
[Blog post | Webpage | bibtex]
- Hack.edu: Examining How College Hackathons Are Perceived By Student Attendees and Non-Attendees. Jeremy Warner and Philip J. Guo. ACM International Computing Education Research conference (ICER), 2017.
[Blog post | bibtex]
- DS.js: Turn Any Webpage into an Example-Centric Live Programming Environment for Learning Data Science. Xiong Zhang and Philip J. Guo. ACM Symposium on User Interface Software and Technology (UIST), 2017.
Honorable Mention Paper
[Blog post | Webpage | bibtex]
- Omnicode: A Novice-Oriented Live Programming Environment with Always-On Run-Time Value Visualizations. Hyeonsu Kang and Philip J. Guo. ACM Symposium on User Interface Software and Technology (UIST), 2017.
[Blog post | bibtex]
- Torta: Generating Mixed-Media GUI and Command-Line App Tutorials Using Operating-System-Wide Activity Tracing. Alok Mysore and Philip J. Guo. ACM Symposium on User Interface Software and Technology (UIST), 2017.
[Blog post | bibtex]
- HappyFace: Identifying and Predicting Frustrating Obstacles for Learning Programming at Scale. Ian Drosos, Philip J. Guo, Chris Parnin. IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC), 2017.
[Blog post | bibtex]
2016
2015
- Codeopticon: Real-Time, One-To-Many Human Tutoring for Computer Programming. Philip J. Guo. ACM Symposium on User Interface Software and Technology (UIST), 2015.
[Blog post | bibtex]
- Codechella: Multi-User Program Visualizations for Real-Time Tutoring and Collaborative Learning. Philip J. Guo, Jeffery White, Renan Zanelatto. IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC), 2015.
[Blog post | bibtex]
- Codepourri: Creating Visual Coding Tutorials Using A Volunteer Crowd Of Learners. Mitchell Gordon and Philip J. Guo. IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC), 2015.
[Blog post | bibtex]
- Perceptions of Non-CS Majors in Intro Programming: The Rise of the Conversational Programmer. Parmit K. Chilana, Celena Alcock, Shruti Dembla, Anson Ho, Ada Hurst, Brett Armstrong, Philip J. Guo. IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC), 2015.
[Blog post | bibtex]
- Toward a Domain-Specific Visual Discussion Forum for Learning Computer Programming: An Empirical Study of a Popular MOOC Forum. Joyce Zhu, Jeremy Warner, Mitchell Gordon, Jeffery White, Renan Zanelatto, Philip J. Guo. IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC), 2015.
[Blog post | bibtex]
- How High School, College, and Online Students Differentially Engage with an Interactive Digital Textbook. Jeremy Warner, John Doorenbos, Bradley N. Miller, Philip J. Guo. International Conference on Educational Data Mining (EDM), short paper, 2015.
[bibtex]
- Wait-Learning: Leveraging Wait Time for Second Language Education. Carrie J. Cai, Philip J. Guo, James Glass, Robert C. Miller. ACM Conference on Human Factors in Computing Systems (CHI), 2015.
[Press release | bibtex]
- OverCode: Visualizing Variation in Student Solutions to Programming Problems at Scale. Elena L. Glassman, Jeremy Scott, Rishabh Singh, Philip J. Guo, Robert C. Miller. ACM Transactions on Computer-Human Interaction (TOCHI), 2015.
[Press release | Webpage | bibtex]
2014
- Data-Driven Interaction Techniques for Improving Navigation of Educational Videos. Juho Kim, Philip J. Guo, Carrie J. Cai, Shang-Wen (Daniel) Li, Krzysztof Z. Gajos, Robert C. Miller. ACM Symposium on User Interface Software and Technology (UIST), 2014.
[Webpage | bibtex]
- A Direct Manipulation Language for Explaining Algorithms. Jeremy Scott, Philip J. Guo, Randall Davis. IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC), short paper, 2014.
[bibtex]
- Crowdsourcing Step-by-Step Information Extraction to Enhance Existing How-to Videos. Juho Kim, Phu Nguyen, Sarah Weir, Philip J. Guo, Robert C. Miller, Krzysztof Z. Gajos. ACM Conference on Human Factors in Computing Systems (CHI), 2014.
Honorable Mention Paper
[bibtex]
- Demographic Differences in How Students Navigate Through MOOCs. Philip J. Guo and Katharina Reinecke. ACM Conference on Learning at Scale, 2014.
[Blog post | bibtex]
- How Video Production Affects Student Engagement: An Empirical Study of MOOC Videos. Philip J. Guo, Juho Kim, Rob Rubin. ACM Conference on Learning at Scale, 2014.
[Blog post | bibtex]
- Understanding In-Video Dropouts and Interaction Peaks in Online Lecture Videos. Juho Kim, Philip J. Guo, Daniel T. Seaton, Piotr Mitros, Krzysztof Z. Gajos, Robert C. Miller. ACM Conference on Learning at Scale, 2014.
[bibtex]
2013
2012
- Characterizing and Predicting Which Bugs Get Reopened. Thomas Zimmermann, Nachiappan Nagappan, Philip J. Guo, Brendan Murphy. ACM/IEEE International Conference on Software Engineering (ICSE), Software Engineering In Practice (SEIP) track, 2012.
Best Paper Award
[bibtex]
- Burrito: Wrapping Your Lab Notebook in Computational Infrastructure. Philip J. Guo and Margo Seltzer. USENIX Workshop on the Theory and Practice of Provenance (TaPP), 2012.
[Blog post | bibtex]
- Software Tools to Facilitate Research Programming. Philip J. Guo. Ph.D. dissertation, Department of Computer Science, Stanford University, 2012.
[Blog post | bibtex]
- HAMPI: A Solver for Word Equations over Strings, Regular Expressions and Context-free Grammars. Adam Kiezun, Vijay Ganesh, Shay Artzi, Philip J. Guo, Pieter Hooimeijer, Michael D. Ernst. ACM Transactions of Software Engineering Methodology (TOSEM), 2012.
[bibtex]
- CDE: A Tool for Creating Portable Experimental Software Packages. Philip J. Guo. IEEE Computing in Science and Engineering, 2012.
[Blog post | bibtex]
2011
- Proactive Wrangling: Mixed-Initiative End-User Programming of Data Transformation Scripts. Philip J. Guo, Sean Kandel, Joseph M. Hellerstein, Jeffrey Heer. ACM Symposium on User Interface Software and Technology (UIST), 2011.
[bibtex]
- Using Automatic Persistent Memoization to Facilitate Data Analysis Scripting. Philip J. Guo and Dawson Engler. International Symposium on Software Testing and Analysis (ISSTA), 2011.
[Blog post | bibtex]
- Sloppy Python: Using Dynamic Analysis to Automatically Add Error Tolerance to Ad-Hoc Data Processing Scripts. Philip J. Guo. International Workshop on Dynamic Analysis (WODA), 2011.
[Blog post | bibtex]
- CDE: Run Any Linux Application On-Demand Without Installation. Philip J. Guo. USENIX Large Installation System Administration Conference (LISA), 2011.
[Blog post | bibtex]
- CDE: Using System Call Interposition to Automatically Create Portable Software Packages. Philip J. Guo and Dawson Engler. USENIX Annual Technical Conference, short paper, 2011.
[Blog post | bibtex]
- "Not My Bug!" and Other Reasons for Software Bug Report Reassignments. Philip J. Guo, Thomas Zimmermann, Nachiappan Nagappan, Brendan Murphy. ACM Conference on Computer Supported Cooperative Work (CSCW), 2011.
[bibtex]
2010
2009
- HAMPI: A Solver for String Constraints. Adam Kiezun, Vijay Ganesh, Philip J. Guo, Pieter Hooimeijer, Michael D. Ernst. International Symposium on Software Testing and Analysis (ISSTA), 2009.
ACM SIGSOFT Distinguished Paper Award, ISSTA 10-Year Impact Paper Award
[bibtex]
- Linux Kernel Developer Responses to Static Analysis Bug Reports. Philip J. Guo and Dawson Engler. USENIX Annual Technical Conference, short paper, 2009.
[bibtex]
- Automatic Creation of SQL Injection and Cross-site Scripting Attacks. Adam Kiezun, Philip J. Guo, Karthick Jayaraman, Michael D. Ernst. IEEE International Conference on Software Engineering (ICSE), 2009.
[bibtex]
- Two Studies of Opportunistic Programming: Interleaving Web Foraging, Learning, and Writing Code. Joel Brandt, Philip J. Guo, Joel Lewenstein, Mira Dontcheva, Scott R. Klemmer. ACM Conference on Human Factors in Computing Systems (CHI), 2009.
Honorable Mention Paper
[bibtex]
- Opportunistic Programming: Writing Code to Prototype, Ideate, and Discover. Joel Brandt, Philip J. Guo, Joel Lewenstein, Mira Dontcheva, Scott R. Klemmer. IEEE Software, 2009.
[bibtex]
2008
2007
2006
- Dynamic Inference of Abstract Types. Philip J. Guo, Jeff H. Perkins, Stephen McCamant, Michael D. Ernst. International Symposium on Software Testing and Analysis (ISSTA), 2006.
[bibtex]
- Automatic Inference and Enforcement of Data Structure Consistency Specifications. Brian Demsky, Michael D. Ernst, Philip J. Guo, Stephen McCamant, Jeff H. Perkins, Martin Rinard. International Symposium on Software Testing and Analysis (ISSTA), 2006.
[bibtex]
- A Scalable Mixed-Level Approach to Dynamic Analysis of C and C++ Programs. Philip J. Guo. Master of Engineering (M.Eng.) thesis, Department of Electrical Engineering and Computer Science, Massachusetts Institute of Technology, 2006.
Charles and Jennifer Johnson Award for Outstanding Computer Science Master of Engineering Thesis
[Webpage | bibtex]
Email Policy
I no longer read or respond to most cold emails due to the large amounts
of email I receive. There are only three exceptions:
- I already know you or know someone who knows you (please let me know who
referred you).
- You are a professional colleague contacting me about work, research,
or other related matters.
- You are a UCSD student or affiliate. I always prioritize these emails,
but see below for details.
If you are a UCSD student or affiliate, feel free to email me about
anything on your mind except these class-related questions:
- Unless I've contacted you beforehand, do not email about trying to get
into a class. Talk to the cogsci academic advisors about enrollments,
prerequisites, etc.
- If a class is overbooked, we must prioritize students who fulfill
all the prerequisites and are already on the waitlist. I encourage
you to always look into alternate classes to enroll in. I cannot
personally respond to all of these emails.
- See the FAQ below for details about all my classes; I don't
have time to give personalized answers here.
- For class-related issues, always use the class discussion forum
instead of email (you can private-message me on there).
- Do not email me about grades unless there is clearly a data entry
error.
Read the FAQ before cold-emailing.
For Python Tutor, consult this doc and do not email me.
My email address is on the first page of my recent publications.
FAQ / Advice
Q: Where can I find your old article / post / etc.?
If it's not linked from this webpage, then I no longer consider it
available. Do not ask me for old content that I've taken offline. If you
find old copies elsewhere on the internet, do not share those
links since they often contain outdated information.
Q: When are your office hours?
Winter 2021: Not teaching this term; if you're a UCSD student, email me for info.
Q: What classes do you teach, and should I sign up for them?
First off, talk to the cogsci academic advisors about all issues
related to class registration, prerequisites, degree planning, etc. They
are the experts on these sorts of questions, not me. Please do not
contact me about trying to get into a class (see email policy).
Here are the classes I currently teach:
COGS 127: Data-Driven UX/Product Design (Fall)
- work on an individual or team project to redesign/extend a popular web
or mobile app
- use design tools such as Figma, no coding required
- in the end, create a design case study that you can use to apply for
various HCI/UX/design jobs
COGS 121: Human Computer Interaction Portfolio Design Studio (Spring)
- take old projects that you've already done for other classes,
internships, or extracurricular activities and learn how to present
them to employers
- write case studies, make pitch slide decks, and practice talking about
your work (no coding required)
- in the end, create and enhance your web portfolio that you can use to
apply for various HCI/UX/design jobs
COGS 124: HCI Technical Systems Research (Fall)
- learn how to read HCI research papers (like the ones in my own
publications list)
- in-class discussions about research papers, everyone participates!
- in the end, understand how academic research works and how it relates
to the tech industry
COGS 231: Design Seminar on Human-Centered Programming Tools (Spring)
- graduate-level class, no undergrads can enroll unless I already know
you from prior classes or research
- learn how to read HCI research papers (like the ones in my own
publications list)
- in-class discussions about research papers, everyone participates!
COGS 197, 198, 199:
- These are not 'real' classes; they are for students who already work
with me to earn credits. You cannot sign up unless I already know you
and have given you permission.
See the course catalog
for prereqs. Syllabuses and class websites are always subject to change,
so I cannot make them available before each class starts. Please do not
email me to ask about them.
Q: How can I get a job in a research lab on campus?
This is the most common question I get from students, especially
undergrads. Here are some suggestions:
- Take upper-division courses, project-based courses, or even graduate
courses, do well in them, then ask the professor at the end of the
term whether there are available opportunities.
- Find any professor's office hours that you're interested in, even if
they're outside of your department. Then go visit their office hours
and ask for opportunities. Even if they don't have any job openings,
they might be able to give you valuable advice.
- Find professors' lab webpages and look for postdocs (postdoctoral
researchers), research scientists, research staff, lab technicians,
graduate students (Ph.D. or masters students) there; then email them
to ask for opportunities. They will be easier to reach than
professors.
- Find any graduate student's office hours if they're TA-ing for a
class, and go attend to ask them about research. They will usually be
happy to talk about things other than the class they're TA-ing for.
- You can also directly email professors, but your chances of getting a
response are lower since they get a lot more emails. Don't be
discouraged if they don't respond; it's not personal! Keep trying hard
to find new opportunities.
- Look for newly-hired professors (often called assistant professors)
since they may be looking to grow their new lab so are more likely to
respond to your email.
- Again, be willing to look outside your department for opportunities.
- If any professors are giving special talks or guest lectures on
campus, attend and go up to them afterward to ask for relevant
opportunities.
- If you have friends or TAs who currently work in a research lab, try
to get them to introduce you to the relevant graduate students,
postdocs, research scientists, or professors. A good referral can be
very effective.
(Since we are working remotely now, it's harder to find people's
virtual office hours since most are not publicly posted. I suggest
either finding their course syllabus or emailing them to ask for their
office hours info.)
Q: How can I get an internship or job related to HCI/UX/Design?
Check out HCI/UX/Design Jobs for New College Grads.
Q: How can I best ask for a recommendation letter?
Read Asking for Recommendation Letters.
Q: How can I improve my Ph.D. program applications?
Read A Five-Minute Guide to Ph.D. Program Applications.
Q: Got any advice for new Ph.D. students?
Q: Got any advice for aspiring faculty?
Q: Got any advice for new assistant professors?
responsive design. original jamstack. available for design consulting ⚰️🐮