Two studies of opportunistic programming: interleaving web foraging, learning, and writing code
By Joel Brandt, Philip J. Guo, J. Lewenstein, Mira Dontcheva, Scott R. Klemmer. International Conference on Human Factors in Computing Systems, 2009
497 citations recorded by the source corpus.
Subfields: Artificial Intelligence, Computer Science Applications, Information Systems and Management
View Paper: https://www.semanticscholar.org/paper/d83591981da2cc5c82ba463311fbfcabcd28c5f6
How researchers see this paper
The researchers whose trusted networks rank it highest, strongest advocate first. Every researcher gets a different order.
In Artificial Intelligence
- Graham Neubig
- Frank F. Xu
- Bogdan Vasilescu
- Zhengbao Jiang
- Pengcheng Yin
- Michael S. Bernstein
- David Bau
- Joel Brandt
In Computer Science Applications
- Michael S. Bernstein
- Joel Brandt
- Martin P. Robillard
- Ethan Fast
- Caitlin Sadowski
- Graham Neubig
- R. Deline
- Gail C. Murphy
In Information Systems and Management
Citations in the corpus
- A field study of API learning obstacles (2011, background): “Previous researchers have repeatedly observed that code examples are an essential element of API learning (Brandt et al. 2009; McLellan et al. 1998; Nykaza et al. 2002; Shull et al. 2000), and are used by developers for a whole range of purposes, including “understanding the purposes of the library,”
- How developers search for code: a case study (2015, methodology): “This 6-minute timeout was derived empirically, in part following prior work [3].”
- Incorporating External Knowledge through Pre-training for Natural Language to Code Generation (2020, background): “It is also the case that human developers rarely reference such paired examples of NL and code, and rather take external resources on the web and modify them into the desired form (Brandt et al., 2009, 2010; Gu et al., 2016).”
- What would other programmers do: suggesting solutions to error messages (2010, background): “Programming by example modification has been noted to be significantly easier to end-users than creation from scratch [27]; it has been documented in laboratory studies [6] and class observations [34] of student programmers.”
- Example-centric programming: integrating web search into the development environment (2010, methodology): “The increased prevalence of online source code—shared in code repositories, documentation, blogs and forums [1, 2, 6, 9, 23]—enables programmers to opportunistically build applications by iteratively searching for, modifying, and combining examples [5, 8, 15].”
- In-IDE Code Generation from Natural Language: Promise and Challenges (2021, background): “[15] studies opportunistic programming where programmers leverage online resources with a range of intentions, including the assistance that could be accessed from inside the IDE.”
- Emergent, crowd-scale programming practice in the IDE (2014, background): “More broadly, systems like Codex point towards a future of programming languages as living artifacts: where libraries self-update to use the latest, most common idioms, IDEs offer suggestions to programmers that suit evolving coding styles, and languages evolve to better support their users.”
- Learning to rank code examples for code search engines (2017, unknown): “[6] and Sim et al.”
- What makes a good code example?: A study of programming Q&A in StackOverflow (2012, background): “They use different types of queries (natural language, code, or a mixture of both) based on their main objective [3].”
- Reverb: Recommending code-related web pages (2013, background): “Software developers use information resources on the web to help perform many different programming tasks, including learning new programming concepts, reminding themselves of syntactic programming language details and clarifying error messages, amongst others [1].”
- Learnable programming (2017, background): “Programmers of all levels report finding and adapting examples as a core programming activity [6, 9].”
- An Empirical Study of C++ Vulnerabilities in Crowd-Sourced Code Examples (2019, methodology): “Developers create and maintain software by standing on the shoulders of others [33]; they reuse components and libraries, and mine the Web for information that can help them in their tasks [34].”