Abstract

Teaching of programming language theory has a long track record at ELTE Faculty of Informatics. Traditionally, formal semantics and type systems of programming languages, similarly to other theory-oriented subjects, were taught with the pen and paper method. However, modern proof assistants call for replacing this old-fashioned way of teaching with novel and interactive methods that bring deeper understanding, provide better learning experience and build technical skills in applying formal methods. The authors have launched practice classes for two programming language theory subjects and carefully developed course material based on executable and verifiable definitions formalised in the Coq proof assistant. In this paper, we share our experiences regarding the design and implementation of the new material, we outline the pros and cons of using a proof assistant in the courses, and we describe how the presented method may be adapted to other courses.

Highlights

  • Teaching mathematically precise formalisation techniques is a key part of university level Computer Science education

  • In this article we showed how interactive practical sessions using computer proof assistants were launched for courses on programming language theory that had only been taught using pen and paper methods before

  • The motivation behind this was to support the abstract concepts in these courses with tangible examples that help understanding the material and lead to building skills in applying formal methods

Read more

Summary

Introduction

Teaching mathematically precise formalisation techniques is a key part of university level Computer Science education. The courses titled Formal Semantics and Type Systems for Programming Languages are compulsory in the Software Technology specialisation of the Computer Science master program at Eötvös Loránd University (ELTE). The aim of these courses is that students acquire the skills necessary to apply mathematical methods when describing programming languages. During these courses the students have to digest and obtain intuition for a large number of abstract concepts and formal notations. Extension of the previous big-step semantics with statements followed by example program evaluation proofs. The equivalence of program patterns (e.g. while loop can be unfolded to a conditional statement containing a similar loop)

Objectives
Results
Conclusion

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.