We have investigated techniques for mining programming activity to offer help to programmers in difficulty. We have developed a (a) difficulty-detection mechanism based on the notion of command ratios; (b) difficulty-classification mechanism that uses both command ratios and rates; and (c) collaboration mechanism that provides both workspace and difficulty awareness. Our studies involve interviews and lab and field experiments, and indicate that (a) it is possible to mine programming activity to reliably detect and classify difficulties, (b) it is possible to build a collaborative environment to offer opportunistic help, (c) programmers are not unnerved by and find it useful to receive unsolicited help arriving in response to automatically detected difficulties, (d) the acceptable level of privacy in a help-promotion tool depends on whether the developers in difficulty are student or industrial programmers, and whether they have been exposed earlier to a help promotion tool, and (e) difficulty detection can filter out spurious help requests and reduce the need for meetings required to poll for rare difficulty events.


Decision Tree Algorithm Workspace Sharing Promotion Tool Distribute Software Development Potential Helper 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.



This research was supported in part by the NSF IIS 1250702 award.


  1. Anderson, J. R., & Reiser, B. J. (1985). The LISP tutor: It approaches the effectiveness of a human tutor. Lecture Notes in Computer Science 10(4).Google Scholar
  2. Begel, A., & Simon, B. (2008). Novice software developers, all over again. In International Computing Education Research Workshop.Google Scholar
  3. Carter, J. (2014). Automatic difficulty detection. Ph.D., Chapel Hill: University of North Carolina.Google Scholar
  4. Carter, J., & Dewan, P. (2010a). Are you having difficulty. In Proceedings of CSCW. Atlanta: ACM.Google Scholar
  5. Carter, J., & Dewan P. (2010b). Design, implementation, and evaluation of an approach for determining when programmers are having difficulty. In Proceedings Group 2010, ACM.Google Scholar
  6. Carter, J., Dewan P., & Pichilinani M. (2015). Towards incremental separation of surmountable and insurmountable programming difficulties. In Proceedings SIGCSE, ACM.Google Scholar
  7. Cockburn, A., & Williams L. (2001). The costs and benefits of pair programming. Boston: Addison Wesley.Google Scholar
  8. Dabbish, L., & Kraut R. E. (2004). Controlling interruptions: awareness displays and social motivation for coordination. In Proceedings of CSCW (pp. 182–191), New York: ACM Press.Google Scholar
  9. Dewan, P. (1998). Architectures for collaborative applications. Trends in Software: Computer Supported Co-operative Work, 7, 165–194.Google Scholar
  10. Dewan, P. (2015). Towards emotion-based collaborative software engineering. In Proceedings of ICSE CHASE Workshop, IEEE.Google Scholar
  11. Ellwanger, D., Dillon, N., Wu, T., Carter J., & Dewan, P. (2015). Scalable mixed-focus collaborative difficulty resolution: A demonstration. In CSCW Companion Proceedings ACM.Google Scholar
  12. Fitzpatrick, G., Marshall, P., & Phillips, A. (2006). CVS integration with notification and chat: Lightweight software team collaboration. In Proceedings of CSCW (pp. 49–58). New York: ACM Press.Google Scholar
  13. Fogarty, J., Hudson, S. E., Atkeson, C. G., Avrahami, D., Forlizzi, J., Kiesler, S., Lee, J. C., & Yang, J. (2005). Predicting human interruptibility with sensors. ACM Transactions on Computer-Human Interaction 12(1), 119–146.Google Scholar
  14. Hegde, R., & Dewan, P. (2008). Connecting programming environments to support Ad-Hoc collaboration. In Proceedings of 23rd IEEE/ACM Conference on Automated Software Engineering, L’Aquila Italy, IEEE/ACM.Google Scholar
  15. Herbsleb, J., & Grinter, R. E. (1999). Splitting the organization and integrating the code: Conway’s law revisited. In Proceedings of International Conference on Software Engineering.Google Scholar
  16. Herbsleb, J. D., Mockus, A., Finholt, T. A., & Grinter, R. E. (2000). Distance, dependencies, and delay in a global collaboration. In Proceedings of CSCW.Google Scholar
  17. Humphrey, W. (1997). A discipline for software engineering. Boston: Addison Wesley.Google Scholar
  18. Iqbal, S., & Bailey, B. (2007). Understanding and developing models for detecting and differentiating breakpoints during interactive tasks. In Proceedings of CHI, ACM.Google Scholar
  19. Kapoor, A., Burlesonc, W., & Picard, R. W. (2007). Automatic prediction of frustration. International Journal of Human-Computer Studies 65(8).Google Scholar
  20. Ko, A., Myers, B. A., & Aung, H. H. (2004). Six learning barriers in end-user programming systems. In Proceedings of IEEE Symposium on Visual Languages—Human Centric Computing.Google Scholar
  21. LaToza, T. D., Venolia, G., & Deline, R. (2006). Maintaining mental models: A study of developer work habits. In Proceedings of ICSE, IEEE.Google Scholar
  22. Long, D., Dillon, N., Wang, K., Carter, J., & Dewan, P. (2015). Interactive control and visualization of difficulty inferences from user-interface commands. In IUI Companion Proceedings (pp. 25–28), Atlanta: ACM.Google Scholar
  23. McDuff, D., Karlson, A., Kapoor, A., Roseway, A., & Czerwinski, M. (2012). AffectAura: An intelligent system for emotional memory. In Proceedings of CHI.Google Scholar
  24. Murphy, C., Kaiser, G. E., Loveland, K., & Hasan, S. (2009). Retina: Helping students and instructors based on observed programming activities. In Proceedings of ACM SIGCSE.Google Scholar
  25. Piech, C., Sahami, M., Koller, D., Cooper, S., & Blikstein, P. A. (2012). Modeling how students learn to program. In Proceedings of the 43rd ACM Technical Symposium on Computer Science Education.Google Scholar
  26. Smith, M., & Shumar, W. (2004). Using netscan to study identity and interaction in a virtual community. In Proceedings of ASA.Google Scholar
  27. Teasley, S., Covi, L., Krishnan, M. S., & Olson, J. S. (2000). How does radical collocation help a team succeed? In Proceedings of CSCW.Google Scholar
  28. Tee, K., Greenberg, S., & Gutwin, C. (2006). Providing artifact awareness to a distributed group through screen sharing. In Proceedings of ACM CSCW (Computer Supported Cooperative Work).Google Scholar
  29. Witten, I. H., & Frank, E. (1999). Data mining: Practical machine learning tools and techniques with java implementations. Burlington: Morgan Kaufmann.Google Scholar

Copyright information

© Springer International Publishing Switzerland 2015

Authors and Affiliations

  1. 1.University of North Carolina at Chapel HillChapel HillUSA

Personalised recommendations