Academia.edu no longer supports Internet Explorer.
To browse Academia.edu and the wider internet faster and more securely, please take a few seconds to upgrade your browser.
AI
This survey investigates various program visualization tools and techniques specifically tailored for the functional programming paradigm. It categorizes existing visualization systems into distinct groups such as integrated development environments, debuggers, teaching systems, and dedicated visualization tools. Moreover, the paper highlights the unique characteristics of functional programming that necessitate specialized visualizations, including function execution, redex highlighting, and the management of complex data structures. The ultimate goal of this work is to compile insights from multiple systems to potentially inform a more generalized approach to visualizing functional programs.
2004
One of the definitions for visualization is to give a visible appearance to something that has not it, thus it is easier to understand. Software visualization is defined as:" the use of crafts of typography, graphic design, animation and cinematography with modern human-...
2008
One of the definitions for visualization is to give a visible appearance to something, making
Proceedings of the 1st conference on Integrating technology into computer science education - ITiCSE '96, 1996
The increasing interest in functional programming for computer science education demands adequate programming environments. Our work is based on an integrated programming environment where the evaluation of functional expressions can be seen as a term rewriting process. Our goal is to facilitate the understanding of this process. We propose an innovative way to display the evaluation of functional expressions that combines text and graphics. Lists and trees constructors are displayed graphically, while the remaining expressions are shown as text. An adequate format for graphics and pretty-printing of text gives a very clear presentation of the evaluation of expressions.
Proceedings of the Fourth International C* Conference on Computer Science and Software Engineering, 2011
One affective way to carry out a program comprehension process is by refactoring the source code. In this paper we explore this approach in the functional programming paradigm, on Haskell programs specifically. As result, we have identified many correlations between the traditional (procedural and object-oriented) program comprehension process and the so called understanding-oriented refactorings, in the functional programming context. Besides, we have identified a catalog of refactorings used to improve program efficiency which, applied in reverse order, are valuable for program understanding purposes. Coupled to these refactorings, there is a calculational process by (means of) which we obtain a full formal description of program functionality. All together, a bottom-up program comprehension strategy in the functional setting is described.
1995
Software metrics have been investigated for the assessment of programs written in a functional programming language. The external attribute of programs considered in this thesis is their comprehensibility to novice programmers. This attribute has been operationalized in a number of experiments. The internal attribute of software which is examined is the structure. Two models for the structure of software have been employed: callgraphs and flowgraphs. The proposed control-flow model captures the operational semantics of function definitions. The objective measurement of the attributes has been supported by tools. The validation of structure metrics has been addressed in certain experiments for programming-in-the-small. The structure of type expressions in functional programs has been analysed in a case study. A simple framework for software metrication proved to be useful. The validation of metrics has been linked with axioms from the representational measurement theory. The control-flow model for functional programs showed its value in the set-up of an experiment regarding the influence of the structure on the comprehensibility. A programming style rule on the use of guards in function definitions has been validated by the findings in this experiment.
1995
In this paper, the static analysis of programs in the functional programming language Miranda* is described based on two graph models. A new control-flow graph model of Miranda definitions is presented, and a model with four classes of caligraphs. Standard software metrics are applicable to these models. A Miranda front end for Prometrixt, a tool for the automated analysis of flowgraphs and callgraphs, has been developed. This front end produces the flowgraph and callgraph representations of Miranda programs. Some features of the metric analyser are illustrated with an example program. The tool provides a promising access to standard metrics on functional programs.
Programming is an art that enables, one to elaborate or instruct ones aim to compute specific facets. The adoption of functional programming as a mainstream language is a challenge. However, with great rewards. Functional programming defines the concepts of problems that one rationalises for developing robust, scalable as well as for example concurrent systems. This research study, considers the following: why is functional programming the future for software engineering? And why is functional programming, receiving more attention than mainstream languages such as C++ and others.
2002
Functional programming is a powerful style in which to write programs. However, students and faculty alike often have a hard time appreciating its beauty and learning to exploit its power. These difficulties arise in part because the functional style requires programmers to think at a higher level of abstraction, and in part because functional programs differ in fundamental ways from programs written in more common styles. A pattern language of functional programs can provide programmers with concrete guidance for writing functional programs and at the same time offer a deeper appreciation of functional style. Used effectively, such pattern languages will help functional programming educators reach a broader audience of faculty, students, and professionals. The result will be better programmers and better programs.
1999
Abstract We outline a deductive concept for an introductory course to computer science aimed at CS students as well as students from other disciplines. The emphasis is on introducing fundamental concepts of computer science and showing how they evolve from each other. Functional programming in Haskell is used as a vehicle to explain these concepts and to allow for practical exercises. We argue that functional programming is more than just a good option for such an introductory course.
Turtle graphics has been implemented in a purely functional programming language. The implementation is easily portable to any purely functional programming language that has limited graphics capabilities. The main importance of the implementation is in its educational value. The implementation brings the expressiveness of LOGO to functional programming.
Journal of Computing in Small …, 1999
Visualization is an important tool for student learning. The Function Visualizer provides a resource that permits the visualization of function calls for any set of Java functions. It provides a control panel where the user specifies the speed of the visualization and the parameter values for the initial function call. When the visualization begins, lines of code are highlighted in a function window as they are executed and when another function is called, a new window appears on top of the previous one, producing a visualization of the function call stack. This tool provides a flexible and intuitive visualization aid for the teaching of recursion.
1995
This paper discusses our experience in using a functional language in topics across the computer science curriculum. After examining the arguments for taking a functional approach, we look in detail at four case studies from different areas: programming language semantics, machine architectures, graphics and formal languages.
Technology of Object-Oriented Languages and Systems, 1991
Lecture Notes in Computer Science, 2000
The version in the Kent Academic Repository may differ from the final published version. Users are advised to check http://kar.kent.ac.uk for the status of the paper. Users should always cite the published version of record.
2002
Functional programs are merely equations; they may be manipulated by straightforward equational reasoning. In particular, one can use this style of reasoning to calculate programs, in the same way that one calculates numeric values in arithmetic. Many useful theorems for such reasoning derive from an algebraic view of programs, built around datatypes and their operations.
Hristov, H., „Review and outlooks of the means for visualization of syntax semantics and source code. Procedural and object oriented paradigm – differences”, Anniversary International Conference REMIA 2010, Plovdiv, 2010, pp. 443-450, ISBN 978-954-423-648-9, 2010
In the article, we have reviewed the means for visualization of syntax, semantics and source code for programming languages which support procedural and/or object-oriented paradigm. It is examined how the structure of the source code of the structural and object-oriented programming styles has influenced different approaches for their teaching. We maintain a thesis valid for the object-oriented programming paradigm, which claims that the activities for design and programming of classes are done by the same specialist, and the training of this specialist should include design as well as programming skills and knowledge for modeling of abstract data structures. We put the question how a high level of abstraction in the object-oriented paradigm should be presented in simple model in the design stage, so the complexity in the programming stage stay low and be easily learnable. We give answer to this question, by building models using the UML notation, as we take a concrete example from the teaching practice including programming techniques for inheritance and polymorphism.
Proceedings of TENCON '93. IEEE Region 10 International Conference on Computers, Communications and Automation, 1993
This paper illustrates the variety of visualization techniques that are employed for various programming paradigms, examining the type of information required and the advantages that the information provides the programmer. We examine the specific visualization requirements for each paradigm and the general requirements of visualization systems which depict the flow of control for both sequential and parallel program execution. We find that many of the visualization systems currently available tend to focus on only one aspect of the visualization requirements rather than the broad base of needs of the programmer. The need to integrate these visualization systems in the future is highlighted.
1998
The choice of which programming language to use in introductory computer science courses is guaranteed to spark debate in the computer science community. Programming languages used in computer science instruction have followed various trends or fads within the computing industry. The language choice has often been between languages which are currently in wide use by industry for software production. While it is true that computer science education has a responsibility to achieve a balance between providing training in current practices within the field and core concepts and theory, it is felt that computer science education should not be overly influenced by popular trends when choosing a programming language to use in the teaching of introductory computer science. Functional programming languages are shown to be useful in the teaching of the concepts of computer science. The functional language approach presented in this paper has advantages over imperative languages in the areas of model building, exposition, experimentation and analysis of algorithms. Examples using the J and Scheme programming languages, with emphasis on the use of functional programming notation in exposition are given. 1
SIGCSE bulletin, 1990
Various arguments have been made for the use of functional programming, This paper presents some additional arguments for teaching the discipline of functional programming in an introductory programming course. In particular, functional programming . focuses students on the goal of solving the problem at hand rather than distracting them with a multitude of extraneous details; . encourages the formation of templates, i.e. stereotypical chunks of programming knowledge; . provides computer experiences that reinforce and deepen students' understanding of the abstract concept of function; . leads to code that is concise and elegant. We illustrate these points and others with some of our favorite functional programming examples. Examples are given in LISP and Pascal.
Loading Preview
Sorry, preview is currently unavailable. You can download the paper by clicking the button above.