Claudio Ochoa | Intel Corporation (original) (raw)

Papers by Claudio Ochoa

Research paper thumbnail of A Lightweight Approach to Program Specialization

Within the imperative programming paradigm, program slic- ing has been widely used as a basis to ... more Within the imperative programming paradigm, program slic- ing has been widely used as a basis to solve many software engineering problems, like debugging, testing, differencing, specialization, and merg- ing. In this work, we present a lightweight approach to program spe- cialization of lazy functional logic programs which is based on dynamic slicing. The kind of specialization performed by our approach

Research paper thumbnail of Lightening the Software Production Process in a CMM Level 5 Framework

IEEE Latin America Transactions, 2005

Research paper thumbnail of Towards CNC Programming Using Haskell

Lecture Notes in Computer Science, 2004

Recent advances in Computerized Numeric Control (CNC) have allowed the manufacturing of products ... more Recent advances in Computerized Numeric Control (CNC) have allowed the manufacturing of products with high quality standards. Since CNC programs consist of a series of assembler-like instructions, several high-level languages (e.g., AutoLISP, APL, OMAC) have been proposed to raise the programming abstraction level. Unfortunately, the lack of a clean semantics prevents the development of formal tools for the analysis and manipulation of programs. In this work, we propose the use of Haskell for CNC programming. The declarative nature of Haskell provides an excellent basis to develop program analysis and manipulation tools and, most importantly, to formally prove their correctness.

Research paper thumbnail of A Slicing Tool for Lazy Functional Logic Programs

Lecture Notes in Computer Science, 2006

Program slicing is a well-known technique that has been widely used for debugging in the context ... more Program slicing is a well-known technique that has been widely used for debugging in the context of imperative programming.

Research paper thumbnail of Lightweight program specialization via dynamic slicing

Proceedings of the 2005 ACM SIGPLAN workshop on Curry and functional logic programming - WCFLP '05, 2005

Program slicing is a well-known technique that extracts from a program those statements which are... more Program slicing is a well-known technique that extracts from a program those statements which are relevant to a particular criterion. While static slicing does not consider any input data, dynamic slices are computed from a particular program execution. Thus, dynamic slicers are usually easier to design and implement.

Research paper thumbnail of Dynamic slicing of lazy functional programs based on redex trails

Higher-Order and Symbolic Computation, 2008

Tracing computations is a widely used methodology for program debugging. Lazy languages, however,... more Tracing computations is a widely used methodology for program debugging. Lazy languages, however, pose new demands on tracing techniques because following the actual trace of a computation is generally useless. Typically, tracers for lazy languages rely on the construction of a redex trail, a graph that stores the reductions performed in a computation. While tracing provides a significant help for locating bugs, the task still remains complex. A well-known debugging technique for imperative programs is based on dynamic slicing, a method for finding the program statements that influence the computation of a value for a specific program input.

Research paper thumbnail of Agilizando el Proceso de Producción de Software en un Entorno CMM de nivel 5

Research paper thumbnail of Program Specialization Based on Dynamic Slicing

Within the imperative programming paradigm, program slicing has been widely used as a basis to so... more Within the imperative programming paradigm, program slicing has been widely used as a basis to solve many software engineering problems, like program understanding, debugging, testing, differencing, specialization, and merging. In this work, we present a lightweight approach to program slicing in lazy functional logic languages and discuss its potential applications in the context of pervasive systems where resources are limited. In particular, we show how program slicing can be used to achieve a form of program specialization that cannot be achieved with other, related techniques like partial evaluation.

Research paper thumbnail of Dynamic slicing based on redex trails

Proceedings of the 2004 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation - PEPM '04, 2004

Tracing computations is a widely used methodology for program debugging. Lazy languages, in parti... more Tracing computations is a widely used methodology for program debugging. Lazy languages, in particular, pose new demands on tracing techniques since following the actual trace of a computation is generally useless. Typically, they rely on the construction of a redex trail, a graph that describes the reductions of a computation and its relationships. While tracing provides a significant help for locating bugs, the task still remains complex. A well-known debugging technique for imperative programs is based on dynamic slicing, a method to find the program statements that influence the computation of a value for a specific program input.

Research paper thumbnail of A Lightweight Approach to Program Specialization

Within the imperative programming paradigm, program slic- ing has been widely used as a basis to ... more Within the imperative programming paradigm, program slic- ing has been widely used as a basis to solve many software engineering problems, like debugging, testing, differencing, specialization, and merg- ing. In this work, we present a lightweight approach to program spe- cialization of lazy functional logic programs which is based on dynamic slicing. The kind of specialization performed by our approach

Research paper thumbnail of Lightening the Software Production Process in a CMM Level 5 Framework

IEEE Latin America Transactions, 2005

Research paper thumbnail of Towards CNC Programming Using Haskell

Lecture Notes in Computer Science, 2004

Recent advances in Computerized Numeric Control (CNC) have allowed the manufacturing of products ... more Recent advances in Computerized Numeric Control (CNC) have allowed the manufacturing of products with high quality standards. Since CNC programs consist of a series of assembler-like instructions, several high-level languages (e.g., AutoLISP, APL, OMAC) have been proposed to raise the programming abstraction level. Unfortunately, the lack of a clean semantics prevents the development of formal tools for the analysis and manipulation of programs. In this work, we propose the use of Haskell for CNC programming. The declarative nature of Haskell provides an excellent basis to develop program analysis and manipulation tools and, most importantly, to formally prove their correctness.

Research paper thumbnail of A Slicing Tool for Lazy Functional Logic Programs

Lecture Notes in Computer Science, 2006

Program slicing is a well-known technique that has been widely used for debugging in the context ... more Program slicing is a well-known technique that has been widely used for debugging in the context of imperative programming.

Research paper thumbnail of Lightweight program specialization via dynamic slicing

Proceedings of the 2005 ACM SIGPLAN workshop on Curry and functional logic programming - WCFLP '05, 2005

Program slicing is a well-known technique that extracts from a program those statements which are... more Program slicing is a well-known technique that extracts from a program those statements which are relevant to a particular criterion. While static slicing does not consider any input data, dynamic slices are computed from a particular program execution. Thus, dynamic slicers are usually easier to design and implement.

Research paper thumbnail of Dynamic slicing of lazy functional programs based on redex trails

Higher-Order and Symbolic Computation, 2008

Tracing computations is a widely used methodology for program debugging. Lazy languages, however,... more Tracing computations is a widely used methodology for program debugging. Lazy languages, however, pose new demands on tracing techniques because following the actual trace of a computation is generally useless. Typically, tracers for lazy languages rely on the construction of a redex trail, a graph that stores the reductions performed in a computation. While tracing provides a significant help for locating bugs, the task still remains complex. A well-known debugging technique for imperative programs is based on dynamic slicing, a method for finding the program statements that influence the computation of a value for a specific program input.

Research paper thumbnail of Agilizando el Proceso de Producción de Software en un Entorno CMM de nivel 5

Research paper thumbnail of Program Specialization Based on Dynamic Slicing

Within the imperative programming paradigm, program slicing has been widely used as a basis to so... more Within the imperative programming paradigm, program slicing has been widely used as a basis to solve many software engineering problems, like program understanding, debugging, testing, differencing, specialization, and merging. In this work, we present a lightweight approach to program slicing in lazy functional logic languages and discuss its potential applications in the context of pervasive systems where resources are limited. In particular, we show how program slicing can be used to achieve a form of program specialization that cannot be achieved with other, related techniques like partial evaluation.

Research paper thumbnail of Dynamic slicing based on redex trails

Proceedings of the 2004 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation - PEPM '04, 2004

Tracing computations is a widely used methodology for program debugging. Lazy languages, in parti... more Tracing computations is a widely used methodology for program debugging. Lazy languages, in particular, pose new demands on tracing techniques since following the actual trace of a computation is generally useless. Typically, they rely on the construction of a redex trail, a graph that describes the reductions of a computation and its relationships. While tracing provides a significant help for locating bugs, the task still remains complex. A well-known debugging technique for imperative programs is based on dynamic slicing, a method to find the program statements that influence the computation of a value for a specific program input.