Abstract

Developers work with different programming languages and tools throughout their careers. It is a critical skill to be able to build on existing skills and knowledge and learn new programming languages as needed. This makes exploring how developers learn and comprehend different types of programming languages an interesting problem. The research question I plan to address with my research is: how do developers' mental model change when they learn and understand code written in different families of programming languages? My research goals are to leverage empirical software engineering and cognitive sciences to understand learning and program comprehension in developers for answering this research question. I do this by conducting empirical studies on comprehension patterns of developers of varying skill levels using different language paradigms (imperative, declarative, and functional) while they work on a varied set of software tasks such as bug fixes, verification of static analysis alarms, adding new features, code refactoring, and code summarization. The proposed empirical studies are designed using a combination of online questionnaires and biometric equipment (eye trackers) and are performed on both program comprehension and a set of established cognitive tasks with the aim of determining whether there is indeed a relationship between these different tasks and domains on performance. The eye tracking biometric measures provide fine grained details on what tokens/words in code/text developers look at as they work. This better explains the thought process and mental models developers use to solve tasks. I propose multiple studies for which I will recruit both students and professional developers in order to understand the strategies of different levels of expertise. In addition, various other factors such as native language, reading speed, years of experience, programming expertise, cognitive scores (among others) will be used to further describe the data collected on tasks.

Full Text
Paper version not known

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call

Disclaimer: All third-party content on this website/platform is and will remain the property of their respective owners and is provided on "as is" basis without any warranties, express or implied. Use of third-party content does not indicate any affiliation, sponsorship with or endorsement by them. Any references to third-party content is to identify the corresponding services and shall be considered fair use under The CopyrightLaw.