Ada Support for the Mathematical Foundations of Software Engineering

Abstract

Three topics were selected as targets for this project, program correctness, finite state devices, and program complexity (timing). A variety of artifacts were developed to support course material, programming assignments, and laboratory assignments in the mathematics of software engineering. The program correctness artifact centers on an artifact, called Assert. Assert is an Ada package that assists users in testing program assertions. The finite state device target is supported by several artifacts. One artifact in a course module, with laboratory and programming assignments, that centers on the use of finite state device concepts in programming and the classical representations of finite state devices in Ada. The second finite state device artifact is a Turing Machine simulator that simulates a turing machine with from one to three tapes. The timing target centered on generalizations of the classical Towers of Hanoi problem. The traditional Towers of Hanoi problem appears in many computing texts as a recursion example. Our study of the Towers of Hanoi problem led to the observation that there is no formal proof for the Towers of Hanoi problem when more than three spindles are used. This problem lends itself to substantial experimentation among the students as they compete to develop the program with the best timing results. All software developed through this grant has been forwarded for inclusion in the Public Ada Library (PAL)

Open PDF

Document Details

Document Type
Technical Report
Publication Date
Nov 16, 1993
Accession Number
ADA278031

Entities

People

  • John Beidler

Organizations

  • University of Scranton

Tags

Communities of Interest

  • Counter IED

DTIC Thesaurus Topics

  • Algorithms
  • Artificial Intelligence
  • Automata
  • Beta Testing
  • Computational Complexity
  • Computer Programming
  • Computer Programs
  • Computer Science
  • Computers
  • Engineering
  • Language
  • Mathematics
  • Programming Languages
  • Simulations
  • Software Development
  • Software Development Tools
  • Systems Engineering

Fields of Study

  • Computer science
  • Engineering

Readers

  • Artificial Intelligence
  • Mathematical Modeling and Probability Theory.
  • Software Engineering.