Abstract: I define the term “Code Intelligence (CI)” as “the science and engineering of making intelligent computer programs that analyze other computer programs”. This is a refinement of John McCarthy’s definition of the term “Artificial Intelligence (AI)” with the part in italics. This definition guides the structure of the talk in two related directions concerned with (I) the two aspects of making intelligence, namely science and engineering, and (II) the characterization of the current and future intelligence of program analysis programs (PAPs for short).
(I) The definition puts science and engineering at the same level. In reality, while we have gone a long with science, the engineering foundations of CI have received less attention. This has not been a major issue because PAPs used to be in the hands of compiler writers and static program analysis experts. But with the Dev[Sec]Ops paradigm shift, PAPs are in the hands of ordinary developers reasoning about large-scale open-ended software in “real-time”. I argue that this paradigm shift requires to shift the focus towards engineering methods to democratize PAPs, specifically via dedicated programming and execution models that facilitate their configuration, extension, optimization, and more.
(II) With its implicit parallel to AI, the definition above helps characterizing next generation PAPs, which the dedicated programming and execution models need to accommodate. Like AI, which has moved from its first wave of approaches relying on handcrafted knowledge to its second wave emphasizing statistical approaches, CI has evolved in the past two decades to embrace statistical approaches besides handcrafted knowledge about programming language processing. Like AI is said to embark its third wave that will bring together rule-based and statistical reasoning, I believe that next generation CIs will intertwine rule-based and statistical reasoning, and, moreover, become multi-modal including in their study repertoire other types of artifacts beyond code such as documents, developer forums, knowledge bases, cognitive models, and more.
While I will outline ongoing work in both directions, the talk will predominantly focus on posing open research questions rather than presenting existing results.
The 4Ps - Product, Process, People and Productivity: A Data-driven Approach to Improve Software Engineering
Abstract: In this talk I will provide a broad overview on developer productivity and dive deep into specific analysis related to how product, process and the people impact productivity. I will use examples from industry on effort estimation and defect prediction in product, distributed development in process and the ramp up of new employees in the people category. The talk will also cover interventions via tools and process changes and their impact and discuss future challenges. This talk will be based on previously published work.
Abstract: Panos Papadopoulos is an engineer turned entrepreneur turned investor with Marathon Venture Capital. In his talk he will cover the delicate balance between engineering and company building. He will walk through practical examples of innovative technologies that became world leading companies and contrast similar concepts that started either as academic projects or as R&D efforts within corporations or even by anonymous individuals. Panos will share his opinion on what are the traits that a researcher will need to develop to jump on an entrepreneurial journey and share stories from the field in Greece and world wide. Finally, he will cover the current status for developer tool and crypto startups.