Re-orienting object-oriented programming education : automatic assessment tools and large language models
A carregar...
Ficheiros
Data
Autores
Título da revista
ISSN da revista
Título do volume
Editora
Resumo
A Programação Orientada por Objectos (OOP, do Inglês Object-Oriented Programming) é um paradigma de programação no qual os sistemas são criados usando objectos que representam instâncias de entidades importantes no domínio do software. Estes objectos têm estados mutáveis. Para além disso, comunicam uns com os outros, alterando esses estados. A OOP foi inicialmente criada para reduzir o custo do desenvolvimento de software, através da aplicação de um conjunto de práticas que levam a código mais modular e que é mais fácil de mudar e de adaptar. Ensinar (e aprender) OOP tem as suas próprias complexidades: em OOP, implementar código que funciona não ´e suficiente: ´e importante ensinar e promover as boas práticas previamente referidas. As Ferramentas de Avaliação Automática (AATs, do Inglês Automatic Assessment Tools) são ferramentas usadas para avaliar automaticamente o código dos alunos. Estas ferramentas são frequentemente usadas em cursos de Ciências de Computação para melhorar a autonomia dos alunos (através de feedback formativo e/ou correctivo) e para reduzir a carga de trabalho necessário por parte dos professores. Estas ferramentas existem desde 1960, mas ainda existem oportunidades de melhoria, em particular quando os AATs são usados para validar tarefas típicas de OOP, que a) tipicamente envolvem várias classes/objectos, b) são focadas não só na correção funcional, mas também nas boas práticas e qualidade do código, e c) apresentam desafios próprios na construção de feedback. A chegada dos Modelos de Linguagem de Grande Escala (LLMs, do Inglês Large Language Models) criou múltiplos desafios para a comunidade de Educação em Ciências da Computação (CSE, do Inglês Computer Science Education). As preocupações sobre o possível uso indevido dessas ferramentas por parte dos alunos tem levado a discussões por parte de professores, com alguns deles a optar por proibir ou restringir o uso dessas ferramentas, enquanto outros tentam integrá-las nas suas disciplinas. Apesar de existir investigação extensa sobre o uso de LLMs em disciplinas de introdução à programação, existe uma lacuna de conhecimento em relação ao impacto destas ferramentas em disciplinas mais avançadas, como a OOP. Mais concretamente, pouco ´e conhecido sobre a capacidade destas ferramentas gerarem código orientado a objectos e sobre o que pode ser feito para as integrar de forma responsável em disciplinas de OOP. O desenvolvimento deste projecto contribuiu para dois objectivos de investigação: melhorar os AATs (e o seu uso) no ensino da OOP e preencher a lacuna de conhecimento que existe em relação ao impacto dos LLMs no ensino da OOP. Para além disso, foi proposta uma nova notação visual para apresentar exercícios OO e contrariar a sobre-dependência dos LLMs, que foi bem recebida pelos nossos alunos, que também reportaram outros benefícios, tais como um aumento da motivação ao trabalhar com projectos com enunciado apresentado em vídeo.
Object-Oriented Programming (OOP) is a programming paradigm in which systems are created using objects representing instances of important entities in the software’s domain. These objects have mutable states. Furthermore, they communicate with each-other, affecting those states. OOP was originally created to help reduce software development cost, through the application of best practices that result in more modular code that is easier to change and adapt. Teaching (and learning) OOP has its own complexities: in OOP, merely implementing something that works is not sufficient: it is important to teach and promote the aforementioned best practices. Automatic Assessment Tools are tools used to automatically evaluate students’ code. These tools are commonly used in Computer Science (CS) courses in order to improve stu dent autonomy (through formative and constructive feedback) and reduce teacher work load. Such tools have existed since 1960, but certain improvements are still possible, in particular when using AATs to validate typical OOP assignments, which a) typically in volve multiple classes/objects, b) are focused not only on functional validation, but also on best practices and code quality, and c) pose specific challenges when constructing feedback. The advent of Large Language Models (LLMs) has created multiple challenges for the Computer Science Education (CSE) community. Concerns regarding students’ potential misuse of these tools have been the cause of discussions between teachers, with some of them opting for banning or restricting the usage of these tools, while others try to integrate them in their courses. Although extensive research already exists regarding the use of LLMs for introductory programming courses, a knowledge gap exists in terms of these tools’ impact on more advanced courses such as OOP. More concretely, not much is known about these tools’ capacity to generate OO-code and what can be done to responsibly integrate them in OO courses. The development of this project contributed to the dual research goals of improving AATs (and their usage) for OOP education and addressing the knowledge gap regarding LLMs’ impact on OOP education. Furthermore, we have proposed a new visual notation for prescribing OO exercises and counter LLM over-reliance, which was well received by our students who also reported other benefits, such as increased motivation to work on video-based projects.
Object-Oriented Programming (OOP) is a programming paradigm in which systems are created using objects representing instances of important entities in the software’s domain. These objects have mutable states. Furthermore, they communicate with each-other, affecting those states. OOP was originally created to help reduce software development cost, through the application of best practices that result in more modular code that is easier to change and adapt. Teaching (and learning) OOP has its own complexities: in OOP, merely implementing something that works is not sufficient: it is important to teach and promote the aforementioned best practices. Automatic Assessment Tools are tools used to automatically evaluate students’ code. These tools are commonly used in Computer Science (CS) courses in order to improve stu dent autonomy (through formative and constructive feedback) and reduce teacher work load. Such tools have existed since 1960, but certain improvements are still possible, in particular when using AATs to validate typical OOP assignments, which a) typically in volve multiple classes/objects, b) are focused not only on functional validation, but also on best practices and code quality, and c) pose specific challenges when constructing feedback. The advent of Large Language Models (LLMs) has created multiple challenges for the Computer Science Education (CSE) community. Concerns regarding students’ potential misuse of these tools have been the cause of discussions between teachers, with some of them opting for banning or restricting the usage of these tools, while others try to integrate them in their courses. Although extensive research already exists regarding the use of LLMs for introductory programming courses, a knowledge gap exists in terms of these tools’ impact on more advanced courses such as OOP. More concretely, not much is known about these tools’ capacity to generate OO-code and what can be done to responsibly integrate them in OO courses. The development of this project contributed to the dual research goals of improving AATs (and their usage) for OOP education and addressing the knowledge gap regarding LLMs’ impact on OOP education. Furthermore, we have proposed a new visual notation for prescribing OO exercises and counter LLM over-reliance, which was well received by our students who also reported other benefits, such as increased motivation to work on video-based projects.
Descrição
Palavras-chave
COMPUTER SCIENCE, COMPUTER PROGRAMMING, TEACHING, EVALUATION, LARGE LANGUAGE MODELS, QUALITY CONTROL, PROGRAMMING LANGUAGES, SOFTWARE DEVELOPMENT, DOUTORAMENTO EM INFORMÁTICA - NOVOS MEDIA E SISTEMAS UBÍQUOS, INFORMÁTICA, PROGRAMAÇÃO DE COMPUTADORES, ENSINO, AVALIAÇÃO, GRANDES MODELOS DE LINGUAGEM, CONTROLO DE QUALIDADE, LINGUAGENS DE PROGRAMAÇÃO, DESENVOLVIMENTO DE SOFTWARE