Reversing: An essential heuristic in program and proof design

David Ginat, Michal Armoni

Research output: Chapter in Book/Report/Conference proceedingConference contributionpeer-review

Abstract

Program and proof designs are fundamental in computer science (CS). The designs involve the employment of various heuristics that may be considered rather inherent and natural, such as decomposition. Yet, not all heuristics are natural. One less natural, and rather unintuitive heuristic is that of reversing, in which a task is approached by reasoning backwards or viewing entities through "inverse lenses". One primary form of this heuristic is recursion. But, there are additional forms throughout the CS curriculum that are essential yet not underlined. In this paper we display these forms, underline their important role, and illustrate them in five core courses. In addition, we describe our experience with student difficulties due to unawareness and lack of competence with this heuristic, and offer preliminary guidelines for elaborating it during CS studies.

Original languageEnglish
Title of host publicationProceedings of the Thirty-Seventh SIGCSE Technical Symposium on Computer Science Education
Pages469-473
Number of pages5
DOIs
StatePublished - 2007
Event37th SIGCSE Technical Symposium on Computer Science Education - Houston, TX, United States
Duration: 1 Mar 20065 Mar 2006

Publication series

NameProceedings of the Thirty-Seventh SIGCSE Technical Symposium on Computer Science Education

Conference

Conference37th SIGCSE Technical Symposium on Computer Science Education
Country/TerritoryUnited States
CityHouston, TX
Period1/03/065/03/06

Keywords

  • Program design
  • Proof design
  • Reverse thinking

Fingerprint

Dive into the research topics of 'Reversing: An essential heuristic in program and proof design'. Together they form a unique fingerprint.

Cite this