Repository logo
 
No Thumbnail Available
Publication

Invariants and Code Contracts in an Online Classroom Environment

Use this identifier to reference this record.
Name:Description:Size:Format: 
10108_22415.pdf2.74 MBAdobe PDF Download

Abstract(s)

Programming education has evolved significantly with the advent of online classroom environments, offering both advantages and challenges. This dissertation explores the integration of code contracts and invariants into programming education, with a focus on the OCaml language. The primary objective is to develop a tool that translates student-written code contracts and invariants into executable assertions, enhancing software reliability and correctness. In the pursuit of this objective, several key contributions are presented. First, an in-depth analysis of online classroom environments, highlighting the importance of addressing software reliability in this context. The Learn-OCaml platform is introduced as a valuable educational resource, offering a unique blend of contest-like challenges and comprehensive lessons. The dissertation delves into code contracts and invariants, elucidating their significance in ensuring code behaves as intended. It surveys existing code contract tools and the relevance of online classroom environments. The research demonstrates how a modified Gospel specification language can be harnessed to integrate code contracts into OCaml programs. The implementation phase of the project is detailed, outlining the process of translating components like preconditions, postconditions, invariants, and variants from Gospel specifications into actionable OCaml code. Limitations of the tool, especially in handling quantifiers, are acknowledged. The dissertation concludes with a summary of achievements and contributions, addressing the research problem of enhancing software reliability and correctness in online programming education. Future work is proposed, including the addition of quantifier support and the incorporation of the developed tool into the Learn-OCaml platform, fostering automated grading and assertion comparison. This work represents a significant step toward improving the quality of programming education in online classrooms, empowering students to write more reliable and correct code while offering educators enhanced tools for assessment and feedback.
A educação em programação evoluiu significativamente com o surgimento de ambientes de sala de aula online, oferecendo vantagens e desafios. Esta dissertação explora a integração de contratos de código e invariantes na educação em programação, com foco na linguagem OCaml. O principal objetivo é desenvolver uma ferramenta que traduza os contratos de código e invariantes escritos pelos alunos em assertions executáveis, melhorando a confiabilidade e correção do código. Para atingir esse objetivo, são apresentadas várias contribuições-chave. Primeiramente, uma análise aprofundada dos ambientes de sala de aula online, destacando a importância de abordar a confiabilidade do software nesse contexto. A plataforma Learn-OCaml é introduzida como um recurso educacional valioso, oferecendo uma combinação única entre plataformas de concursos e Massive Open Online Courses (MOOCs). A dissertação explora os contratos de código e invariantes, elucidando a sua importância para garantir que o código se comporte conforme o previsto. Examina as ferramentas de contrato de código existentes e a relevância dos ambientes de sala de aula online. É ainda discutido como a linguagem de especificação Gospel modificada pode ser usada para integrar contratos de código em programas OCaml. A fase de implementação do projeto é detalhada, delineando o processo de tradução de componentes como précondições, póscondições, invariantes e variantes a partir de especificações do Gospel em código OCaml executável. São ainda reconhecidas as limitações da ferramenta, nomeadamente na manipulação de quantificadores. A dissertação conclui com um resumo das conquistas e contribuições, abordando o objetivo da investigação de melhorar a confiabilidade e correção do software na educação em programação online. Trabalhos futuros são propostos, incluindo o suporte a quantificadores e a incorporação da ferramenta desenvolvida na plataforma Learn-OCaml, promovendo a avaliação automatizada e a comparação de assertions. Este trabalho representa um passo significativo em direção à melhoria da qualidade da educação em programação em salas de aula online, capacitando os alunos a escreverem código mais confiável e correto, ao mesmo tempo oferecendo aos educadores ferramentas melhoradas para avaliação e feedback.

Description

Keywords

Contratos de Código Correção de Software Educação de Programação Especificação Comportamental Ocaml Platafor-Mas de Ensino Online Programação Funcional

Citation

Research Projects

Organizational Units

Journal Issue