© University of Kent - Contact | Feedback | Legal | FOI | Cookies
Abstract interpretation of student programs as a strategy for courseware development
Colin G. Johnson
In Methods, Materials and Tools for Programming Education, volume 5 of Tampere Polytechnic Series A. Research Reports, pages 182-196, Tampere, Finland, May 2006. Tampere Polytechnic University of Applied Sciences.Abstract
What kinds of feedback can we give to students as part of a computer-based system for supporting programming? One kind of feedback is whether the idioms that students use in their programs are typical of experienced programmers. In this paper we talk about how such idioms/patterns/roles/clich\303\251s are used in a tacit fashion by experienced programmers, and how natural language tags for such idioms (e.g. roles of variables) can be used to articulate this knowledge. Based on these ideas we suggest a strategy for giving feedback to students in courseware: students annotate their program using an annotation language that captures these idioms; then abstract interpretation of programs is used by the courseware to check these annotations and provide focused feedback. As a case study, we show how roles of variables can be annotated and those annotations automatically checked in the BlueJ programming environment.
Download publication 169 kbytes (PDF)Bibtex Record
@inproceedings{2544, author = {Colin G. Johnson}, title = {Abstract Interpretation of Student Programs as a Strategy for Courseware Development}, month = {May}, year = {2006}, pages = {182-196}, keywords = {determinacy analysis, Craig interpolants}, note = {}, doi = {}, url = {http://www.cs.kent.ac.uk/pubs/2006/2544}, publication_type = {inproceedings}, submission_id = {12784_1180367261}, ISBN = {952-5264-46-7}, booktitle = {Methods, Materials and Tools for Programming Education}, volume = {5}, series = {Tampere Polytechnic Series A. Research Reports}, address = {Tampere, Finland}, publisher = {Tampere Polytechnic University of Applied Sciences}, ISSN = {1456-0011}, refereed = {yes}, }