28 research outputs found
Fusing Generic Functions
Contains fulltext :
60458.pdf (author's version ) (Open Access)Generic programming is accepted by the functional programming community as a valuable tool for program development. Several functional languages have adopted the generic scheme of type-indexed values. This scheme works by specialization of a generic function to a concrete type. However, the generated code is extremely inefficient compared to its hand-written counterpart. The performance penalty is so big that the practical usefulness of generic programming is compromised. In this paper we present a optimization algorithm that is able to completely eliminate the overhead intoduced by the specialization scheme for a large class of generic functions. The presented technique is based on consumer-producer elimination as exploited by fusion, a standard general purpose optimization method. We show that our algorithm is able to optimize many practical examples of generic functions
Efficient Generic Functional Programming
Contains fulltext :
60606.pdf (author's version ) (Open Access)Generic functions are defined by induction on the structural representation of types. As a consequence, by defining just a single generic operation, one acquires this operation over any particular data type. An instance on a specific type is generated by interpretation of the type's structure. A direct translation leads to extremely inefficient code that involves many conversions between types and their structural representations. In this paper we present an optimization technique based on compile-time symbolic evaluation. We prove that the optimization removes the overhead of the generated code for a considerable class of generic functions. The proof uses typing to identify intermediate data structures that should be eliminated. In essence, the output after optimization is similar to hand-written code
Strictness Analysis via Resource Typing
Contains fulltext :
36506.pdf (preprint version ) (Open Access
Guaranteeing safe destructive updates through a type system with uniqueness information for graphs
Contains fulltext :
121935.pdf (preprint version ) (Open Access
LaQuSo: Using Formal Meethods for Analysis, Verification and Improvement of Safety Critical Software
Item does not contain fulltex
Characterizing novice difficulties in program composition and aligning tasks for formative assessment
This study reports on an in-depth research into difficulties endured throughout disparate stages of students’ programming development, pursue a practical method to determine a student’s development stage, and propose specific interventions to remediate these difficulties tuned to each stage.
The perceived difficulties which novice programmers endure during code composition, combining multi-faceted data from observations to students’ perceptions via interviews, think aloud, task ranking, and task rating were collected in a previous study. These have been anonymized and are publicly available in the DANS EASY archive: https://doi.org/10.17026/dans-xnn-x5p3.
This data was further analyzed for performance (correctness, completeness, SOLO, Neo-Piagetian stages) as well as construct (combinations) used.
This data set includes the new data collected from the second analysis of the data from the previous study, as well as (R) scripts used for quantitative analysis
Unraveling difficulties in code composition tasks
This study reports on an in-depth research into the perceived difficulties which novice programmers endure
during code composition, combining multi-faceted data from observations
to students’ perceptions via interviews, think aloud, task ranking, and task
rating. In addition to analysis of the above, The students solutions were analyzed for performance (correctness, completeness, SOLO, Neo-Piagetian stages) as well as construct (combinations) used. The data set includes transciptions of all the interviews, the data collected from task rating and ranking, and students solutions as well as the analysis of this data
Unraveling difficulties in code composition tasks
This study reports on an in-depth research into the perceived difficulties which novice programmers endure
during code composition, combining multi-faceted data from observations
to students’ perceptions via interviews, think aloud, task ranking, and task
rating. In addition to analysis of the above, The students solutions were analyzed for performance (correctness, completeness, SOLO, Neo-Piagetian stages) as well as construct (combinations) used. The data set includes transciptions of all the interviews, the data collected from task rating and ranking, and students solutions as well as the analysis of this data