Percorrer por autor "Costa Neto, Alvaro"
A mostrar 1 - 8 de 8
Resultados por página
Opções de ordenação
- Application of programming cocktails identity cards to development complexity analysisPublication . Costa Neto, Alvaro; Pereira, Maria João; Henriques, Pedro RangelComplexity in software projects tends to grow considerably as resources and stakeholders raise in numbers. Several factors may contribute to this, ranging from miscommunication between developers, to excessive dependency on external libraries and frameworks. Consequently, managing both developers and the assets they use becomes increasingly hard as features are implemented and changes in linguistic characteristics and coding styles become necessary. This position paper presents Programming Cocktails, their Ingredients, and Resources, three basic software development management concepts. These three main concepts culminate in Programming Cocktails Identity Cards, an ontology-based modelling technique to aid in assessing, planning, and understanding how each development technology contributes—both positively and negatively—to several aspects of software development, such as cognitive burden, risk and cost.
- Characterization and identification of programming languagesPublication . Alves, Júlio; Costa Neto, Alvaro; Pereira, Maria João; Henriques, PedroThis paper presents and discusses a research work whose main goal is to identify which characteristics influence the recognition and identification, by a programmer, of a programming language, specifically analysing a program source code and its linguistic style. In other words, the study that is described aims at answering the following questions: which grammatical elements – including lexical, syntactic, and semantic details – contribute the most for the characterization of a language? How many structural elements of a language may be modified without losing its identity? The long term objective of such research is to acquire new insights on the factors that can lead language engineers to design new programming languages that reduce the cognitive load of both learners and programmers. To elaborate on that subject, the paper starts with a brief explanation of programming languages fundamentals. Then, a list of the main syntactic characteristics of a set of programming languages, chosen for the study, is presented. Those characteristics outcome from the analysis we carried on at first phase of our project. To go deeper on the investigation we decided to collect and analyze the opinion of other programmers. So, the design of a survey to address that task is discussed. The answers obtained from the application of the questionnaire are analysed to present an overall picture of programming languages characteristics and their relative influence to their identification from the programmers’ perspective.
- Goliath and the cognitive load theoryPublication . Freitas, Tiago Carvalho; Costa Neto, Alvaro; Pereira, Maria João; Henriques, Pedro RangelA successful teaching effort is usually dependant on several factors. From the right environment, to a precisely worded exercise statement, it rests on the teacher's shoulders the concoction of the most effective learning assets to their students. A significant part of this process lies on practise: students commonly solidify their knowledge by solving exercises. Creating new programming exercises, specially in high-demand environments such as large classrooms, is a repetitive and error-prone process, specially when stacked with other typical affairs that educators are required to attend to. Goliath, one of the two main contributions of this article, is a template-based, Artificial Intelligence (AI) supported exercise generator, that aims to facilitate the creation of exercise repositories. By using a Domain-Specific Language (DSL) to define exercise templates, combined with the automatic generation of different exercise types, educators can use Goliath's features to improve their exercise repositories, both in size and variety. This systematic approach allows for greater control and automatisation than using a Large Language Model (LLM) directly, as the exercises’ main components can be pre-defined and pre-configured via their templates. Goliath, which is available online for free access, has been tested and its usability assessed. Combined with these functionalities, the content of the exercises themselves, the manner in which they are presented, and how they are rated for difficulty should also be considered in high regard when designing programming exercises. The Cognitive Load Theory (CLT) provides a conceptual foundation to understand problem-solving mechanisms that are commonly found in several aspects and situations of daily life, such as solving programming exercises. This foundation has been explored and systematically structured to construct the second main contribution of this article: guides to create exercise templates in Goliath founded on the Cognitive Load Theory, aiming to improve both teaching and learning computer programming.
- Goliath, a Programming Exercises Generator Supported by AIPublication . Freitas, Tiago Carvalho; Costa Neto, Alvaro; Pereira, Maria João; Henriques, Pedro RangelThe teaching-learning process is complex in nature, requiring many tasks and skills to achieve success in the construction of knowledge. As per any particular kind of cognitive development, teaching and learning Computer Programming is no different in this regard: tasks must be executed, sometimes repeatedly, and skills must be developed. Despite different approaches and methodologies, exercising what has been studied is proven to be effective in pretty much any teaching-learning process. Many tools have been developed throughout time to aid in the execution of this important task, sometimes approaching the problem from the students’ perspective, sometimes from the teachers’. This paper presents Goliath, a semi-automatic generator of Computer Programming exercises, whose functionality is based on Artificial Intelligence (AI) models, a Domain-Specific Language (DSL), and an online application that binds them together. Goliath’s goals are directed towards teachers (and indirectly, students) by aiming to lower the burden of repeatedly constructing exercises. This is achieved through the use of templates that allow for automatic variations of an exercise to be created instantly, while relying on a common foundation. Goliath is meant to be a facilitator, raising availability of exercise lists, while avoiding repetition and the common mistakes that accompany their construction.
- Mining github software repositories to look for programming language cocktailsPublication . Loureiro, João; Costa Neto, Alvaro; Pereira, Maria João; Henriques, Pedro RangelIn light of specific development needs, it is common to concurrently apply different technologies to build complex applications. Given that lowering risks, costs, and other negative factors, while improving their positive counterparts is paramount to a better development environment, it becomes relevant to find out what technologies work best for each intended purpose in a project. In order to reach these findings, it is necessary to analyse and study the technologies applied in these projects and how they interconnect and relate to each other. The theory behind Programming Cocktails (meaning the set of programming technologies - Ingredients - that are used to develop complex systems) can support these analysis. However, due to the sheer amount of data that is required to construct and analyse these Cocktails, it becomes unsustainable to manually obtain them. From the desire to accelerate this process comes the need for a tool that automates the data collection and its conversion into an appropriate format for analysis. As such, the project proposed in this paper revolves around the development of a web-scraping application that can generate Cocktail Identity Cards (CIC) from source code repositories hosted on GitHub. Said CICs contain the Ingredients (programming languages, libraries and frameworks) used in the corresponding GitHub repository and follow the ontology previously established in a larger research project to model each Programming Cocktail. This paper presents a survey of current Source Version Control Systems (SVCSs) and web-scrapping technologies, an overview of Programming Cocktails and its current foundations, and the design of a tool that can automate the gathering of CICs from GitHub repositories.
- Programmers’ affinity to languagesPublication . Costa Neto, Alvaro; Araújo, Cristiana; Pereira, Maria João; Henriques, Pedro RangelStudents face several challenges when learning computer programming languages, a central topic to acquire programming skills. While those challenges that present a predominantly technical nature have been intensely studied by researchers along the years, the ones that are concerned with qualitative, and personal aspects have not. Affinity to a programming language is one of the many personal factors that may contribute to surpass these qualitative aspects that describe the difficulties that students face. From this point-of-view, this paper presents a proposal for treating and studying programmers’ affinity to programming languages as an important factor for learning computer programming. It also reports a preliminary questionnaire conducted on a master’s degree class at Universidade do Minho that showed that affinity may have a broader relation to learning computer programming than anticipated. Finally, a set of relevant questions are stated to compose a future inquiry aimed at deepening the knowledge on the affinity between programmers and languages, paving the way for following research.
- Programming cocktail analysis based on the cognitive load theory, a first approachPublication . Costa Neto, Alvaro; Pereira, Maria João; Henriques, Pedro RangelThe daily activities of those involved in software development are inherently related to the technologies they use. Languages, libraries, frameworks, and tools tend to accumulate as projects evolve and change, effectively forming Programming Cocktails. Unfortunately, the burden of learning, using, and managing these technologies also tends to closely follow this growth, spawning a myriad of concepts that need to be handled concurrently. This complexity usually requires several factors to be analysed, in order to limit its negative effects. These factors range from security risks to costs and cognitive load, just to mention a few. This paper presents an ontology-based modelling framework that can be used to create an overview of Programming Cocktails. The instantiation of this ontology results in Cocktail Identity Cards, which can then be augmented with one or more of the previously mentioned factors. Finally, the paper also presents a first approach to the cognitive load analysis of Programming Cocktails, based on John Sweller’s Cognitive Load Theory.
- Value-focused investigation into programming languages affinityPublication . Costa Neto, Alvaro; Araújo, Cristiana; Pereira, Maria João; Henriques, Pedro RangelThe search for better techniques to teach computer programming is paramount in order to improve the students’ learning experiences. Several approaches have been proposed throughout the years, usually through technical solutions such as evaluation systems, digital classrooms, interactive lessons and so on. Personal factors, such as affinity, have been largely unexplored due to their qualitative and abstract nature. The results of a preliminary survey on how and why affinity is created between programmers and their favorite languages, conducted on a master’s degree class at Universidade do Minho, showed unexpected results as to which languages became favorites and the possible reasons for the students’ choices. Aiming at further exploration on this topic and continuation of this research, the Value-Focused Thinking method was applied in order to construct a more complex, in-depth survey. This value-oriented method kept focus under control and even raised a handful of opportunities to improve the research as a whole. This paper describes the Value-Focused Thinking method and how it was applied to construct a new and deeper computer programming education survey to understand affinity with languages.
