Philip Guo (Phil Guo, Philip J. Guo, Philip Jia Guo, pgbovine)

How did I find my first batch of students for my lab?

A year ago, I started Year One as an assistant professor with zero students. My top priority – aside from the getting grants – was to quickly ramp up my research group to a steady-state size.

In the past year, I've worked with 11 students on research projects (7 undergrads, 3 masters, and 1 Ph.D.). Of those, 4 have graduated, 5 are planning to continue working with me in the coming year, and 2 are not continuing. The five who are continuing (Jeff, Jeremy, Joyce, Mitchell, and Renan) have all successfully published research papers with me. In addition, I added 2 new students this summer and will add 3 more in the fall, bringing my total up to 10 at the beginning of Year Two.

People who are about to begin a faculty job have asked me how I got my first batch of students when I started from scratch without knowing anyone. Here's how I found each of my students over the past year.

Starting in Fall 2014

Five students started working with me during Fall 2014, my first semester as an assistant professor:

  • Jeremy cold-emailed me in July 2014, right when I started my new job. He wrote a great cold-email that caught my eye.

  • Dan S. was interning at MIT Lincoln Labs in summer 2014, so he cold-emailed me and then met up with me in person in Cambridge as I was finishing up my postdoc at MIT.

  • Logan cold-emailed me as he was applying to Ph.D. programs in late 2013 (when I was starting my postdoc year at MIT). Even though I didn't start at Rochester until mid-2014, I alerted my (future) colleagues on the Ph.D. admissions committee about his application, and he ended up getting admitted.

  • Kate cold-emailed me at the beginning of the semester and came to my office hours a few times.

  • Sara came to my office hours at the beginning of the semester, and we discussed potential project ideas there.

Starting in Spring 2015

I teach two courses per year. Teaching both simultaneously in the fall semester was a great decision since it: a.) exposed me to more students so that I could recruit the most suitable ones for research, and b.) freed up my spring 2015 semester solely for research, since I didn't need to teach.

I found five new students from the two courses that I taught in Fall 2014: Joyce and Karina came from my undergrad web programming course, and Jeff, Renan, and Doug came from my grad programming languages course.

My sixth new student this semester, Mitchell, actually cold-emailed me last summer in June 2014. He wrote an impressive cold-email and also came highly recommended by his former research advisors. (He didn't start in Fall 2014 since he was away interning at Google.)

Starting in Summer 2015 (now)

I purposely didn't take many new students this summer since I was at Microsoft Research. But two caught my eye in particular:

  • Lenny had been coming to my office hours on and off to chat since the beginning of fall semester. His persistence paid off, and I decided to take him on as a new student this summer, even though I would be remotely advising him most of the time since I was away at Microsoft.

  • Dan H. was well-known in the local student hacking community, and he also developed a course scheduling assistant tool that was popular with students here. Due to his technical prowess, I decided to start loosely supervising him on his project, even though it's not on my critical path.

Starting in Fall 2015

Three new students will start working with me in Fall 2015, which marks the beginning of my second year as a professor.

  • Davide will be a visiting masters student from Europe. He cold-emailed our department administrator looking for a faculty host for his masters thesis, and she kindly forwarded his email to me. I scheduled time to chat with him on Skype, liked what I heard, and decided to take him on.

  • Jaime will be starting in our Ph.D. program in Fall 2015. He was a masters student at RIT (a neighboring school) and proactively came to my office hours a few times last year to pitch his research interests. His persistence paid off, and he was eventually admitted into our Ph.D. program.

  • Xiong will also be starting in our Ph.D. program in Fall 2015. He cold-emailed me as he was about to apply to our Ph.D. program last year as an international student from China. Out of the dozens of applicants who cold-emailed me, he made the best impression by far. The rest of the admissions committee also liked his application, so he was admitted.

Parting Thoughts

I feel good that I've reached a steady-state group size. Now I don't need to recruit nearly as aggressively and can be ultra-picky to add the right students at the right times to sustain momentum as my existing students graduate or move onto other endeavors. I also don't feel as awkward saying “No” to prospective students since I don't have the capacity to advise any more at the moment.

My main advice for new faculty wanting to quickly ramp up their research group is that you can't rely solely on the annual Ph.D. admissions cycle. You won't find enough students that way, and the turnaround time is one whole year, which is way too long! (Also, not everyone you make an admissions offer to will accept, and even if they do come, it will take them probably a year or more to ramp up and start becoming productive.)

Yes, you should serve on the Ph.D. admissions committee every year so that you can pick out the best candidates to build your fledgling group. But in the meantime, look around for the most promising undergrads and masters students to get your group started, since they're already right there in front of you.

In my limited experience so far, I've found that the best students want an advisor who will help them fulfill their own ambitions. Demonstrate your value to them, and you can get the best ones to work with you.

It's remarkable how quickly your reputation (either good or bad!) spreads via word-of-mouth throughout the entire student body. So if you make your genuine energy and enthusiasm well-known to students from day one, you'll have tons of them cold-emailing you and coming to your office hours wanting to work in your research group. Then it's up to you to pick the ones who will work best with you – those with the skills, interests, and goals that match what you're looking for.

Epilogue: Update in Summer 2017

2017-07-23: Today as I prepare to write my follow-up article – How did I find my second batch of students for my lab? – I wanted to first tie up some loose ends in this one.

During my second year at Rochester (2015–2016), my energy was mostly directed toward going back on the faculty job market again, so I wasn't nearly as active in research. I still took on two new undergrad students in my lab – Emy and Annie – because they were my TAs (teaching assistants) for my web programming course in Fall 2015 and wanted to work with me on research.

Even though I had a bunch of students in my lab during Year Two and we prototyped lots of early-stage ideas, I wasn't gung-ho on submitting new papers since I was busy with job applications and, later, traveling for interviews. So the papers that ended up being published from working with my first batch of students at Rochester were all done in Year One (mostly in Spring 2015 alone!). Most notably, all of my student coauthors were undergrad or masters students.

Here are all of these student papers (not shown are papers I worked on by myself or with external collaborators):

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.
Text-based discussion forums are inefficient for teaching programming; they need to be more visual.
Online discussion forums are one of the most ubiquitous kinds of resources for people who are learning computer programming. However, their user interface -- a hierarchy of textual threads -- has not changed much in the past four decades. We argue that generic forum interfaces are cumbersome for learning programming and that there is a need for a domain-specific visual discussion forum for programming. We support this argument with an empirical study of all 5,377 forum threads in Introduction to Computer Science and Programming Using Python, a popular edX MOOC. Specifically, we investigated how forum participants were hampered by its text-based format. Most notably, people often wanted to discuss questions about dynamic execution state -- what happens "under the hood" as the computer runs code. We propose that a better forum for learning programming should be visual and domain-specific, integrating automatically-generated visualizations of execution state and enabling inline annotations of source code and output.
  author={Zhu, Joyce and Warner, Jeremy and Gordon, Mitchell and White, Jeffery and Zanelatto, Renan and Guo, Philip J.},
  title={Toward a Domain-Specific Visual Discussion Forum for Learning Computer Programming: An Empirical Study of a Popular MOOC Forum},
  booktitle = {Proceedings of the IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC)},
  series = {VL/HCC '15},
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.
Codepourri lets an anonymous online crowd create step-by-step coding tutorials together.
A popular way to learn is by studying written tutorials. However, tutorials for computer programming can be tedious to create, since a static text-based format cannot visualize what happens as code executes. We created a system called Codepourri that enables people to easily create visual coding tutorials by annotating steps in an automatically-generated program visualization. Using Codepourri, we developed a crowdsourcing workflow where learners who are visiting an educational website collectively create a tutorial by annotating individual steps and then voting on the best annotations. Since there are far more learners than experts, using learners as a crowd is a potentially more scalable way of creating tutorials. Our experiments with 4 expert judges and 101 learners adding 145 raw annotations to Python code show the learner crowd's annotations to be accurate, informative, and containing some insights that even experts missed.
  author={Gordon, Mitchell and Guo, Philip J.},
  title={Codepourri: Creating visual coding tutorials using a volunteer crowd of learners},
  booktitle = {Proceedings of the IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC)},
  series = {VL/HCC '15},
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.
Codechella lets multiple people write code, visualize run-time state, debug, and chat in real time.
An effective way to learn computer programming is to sit side-by-side in front of the same computer with a tutor or peer, write code together, and then discuss what happens as the code executes. To bring this kind of in-person interaction to an online setting, we have developed Codechella, a multi-user Web-based program visualization system that enables multiple people to collaboratively write code together, explore an automatically-generated visualization of its execution state using multiple mouse cursors, and chat via an embedded text box. In the past nine months of live deployment on an educational website, people from 296 cities across 40 countries have started 299 Codechella sessions for both tutoring and collaborative learning. 57% of sessions connected participants from different cities. 69% of actions were visualization interactions, which indicates high engagement with program visualizations. Finally, participants showed signs of learning at the lower three levels of Bloom's taxonomy: remembering, understanding, and applying knowledge.
  author={Guo, Philip J. and White, Jeffery and Zanelatto, Renan},
  title={Codechella: Multi-user program visualizations for real-time tutoring and collaborative learning},
  booktitle = {Proceedings of the IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC)},
  series = {VL/HCC '15},
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.
Digital textbooks complement both classroom and MOOC lessons by being self-paced and interactive.
Digital textbooks have been growing popular as a lower-cost and more interactive alternative to paper books. Despite the recent rise in adoption, little is known about how people use these resources. Prior studies have investigated student perceptions of digital textbooks in the classroom via interviews and surveys but have not quantified actual usage patterns. We present, to our knowledge, the first large-scale quantitative study of digital textbook usage. We mined 6.8 million log events from over 43,000 people interacting with How To Think Like a Computer Scientist, one of the most widely-used Web-based textbooks for learning computer programming. We compared engagement patterns among three populations: high school students, college students, and online website viewers. We discovered that people made extensive use of interactive components such as executing code and answering multiple-choice questions, engaged for longer when taking high school or college courses, and frequently viewed textbook sections out of order.
 author = {Warner, Jeremy and Doorenbos, John and Miller, Bradley N. and Guo, Philip J.},
 title = {How High School, College, and Online Students Differentially Engage with an Interactive Digital Textbook},
 booktitle = {Proceedings of the International Conference on Educational
 Data Mining},
 series = {EDM '15},
 year = {2015},
} 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.
At college hackathons, students learn to code incidentally, opportunistically, and from peers.
College hackathons have become popular in the past decade, with tens of thousands of students now participating each year across hundreds of campuses. Since hackathons are informal learning environments where students learn and practice coding without any faculty supervision, they are an important site for computing education researchers to study as a complement to studying formal classroom learning environments. However, despite their popularity, little is known about why students choose to attend these events, what they gain from attending, and conversely, why others choose *not* to attend. This paper presents a mixed methods study that examines student perceptions of college hackathons by focusing on three main questions: 1.) Why are students motivated to attend hackathons? 2.) What kind of learning environment do these events provide? 3.) What factors discourage students from attending? Through semi-structured interviews with six college hackathon attendees (50% female), direct observation at a hackathon, and 256 survey responses from college students (42% female), we discovered that students were motivated to attend for both social and technical reasons, that the format generated excitement and focus, and that learning occurred incidentally, opportunistically, and from peers. Those who chose not to attend or had negative experiences cited discouraging factors such as physical discomfort, lack of substance, an overly competitive climate, an unwelcoming culture, and fears of not having enough prior experience. We conclude by discussing ideas for making college hackathons more broadly inclusive and welcoming in light of our study's findings.
 author = {Warner, Jeremy and Guo, Philip J.},
 title = { Examining How College Hackathons Are Perceived By Student Attendees and Non-Attendees},
 booktitle = {Proceedings of the 2017 International Conference on International Computing Education Research},
 series = {ICER '17},
 year = {2017},
 location = {Tacoma, Washington, USA},
 publisher = {ACM},
 address = {New York, NY, USA},
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.
CodePilot is a web IDE that simplifies Git, GitHub, and real-time collaborative coding for novices.
Novice programmers often have trouble installing, configuring, and managing disparate tools (e.g., version control systems, testing infrastructure, bug trackers) that are required to become productive in a modern collaborative software development environment. To lower the barriers to entry into software development, we created a prototype IDE for novices called CodePilot, which is, to our knowledge, the first attempt to integrate coding, testing, bug reporting, and version control management into a real-time collaborative system. CodePilot enables multiple users to connect to a web-based programming session and work together on several major phases of software development. An eight-subject exploratory user study found that first-time users of CodePilot spontaneously used it to assume roles such as developer/tester and developer/assistant when creating a web application together in pairs. Users felt that CodePilot could aid in scaffolding for novices, situational awareness, and lowering barriers to impromptu collaboration.
 author = {Warner, Jeremy and Guo, Philip J.},
 title = {CodePilot: Scaffolding End-to-End Collaborative Software Development for Novice Programmers},
 booktitle = {Proceedings of the 2017 CHI Conference on Human Factors in Computing Systems},
 series = {CHI '17},
 year = {2017},
 isbn = {978-1-4503-4655-9},
 location = {Denver, Colorado, USA},
 pages = {1136--1141},
 numpages = {6},
 url = {},
 doi = {10.1145/3025453.3025876},
 acmid = {3025876},
 publisher = {ACM},
 address = {New York, NY, USA},
 keywords = {collaborative ide, novice programmers, pair programming},
Created: 2015-07-28
Last modified: 2017-07-23
Related pages tagged as assistant professor life: