121 research outputs found
A unified framework to experiment with algorithm optimality and efficiency
It is common in algorithm courses to assess the correctness of algorithms via testing as well as conducting experiments to measure their run-time performance. However, two severe problems must be addressed: both activities are conducted using different procedures and tools, and algorithm assessment systems do not support well optimization problems due to their unique characteristics. Given the relevant role of optimization algorithms in computing, we present a unified framework to support experimentation with both criteria, i.e., optimality and efficiency. The contributions of the article are two-fold. Firstly, we present a unified framework to experiment with both criteria, by using explicit principles and by presenting its instantiation in the AlgorEx system. The homogeneous treatment of optimality and time efficiency contributes to smoother integration of experimentation into a course syllabus and to easier adoption of the system. Secondly, we present our experience in several academic years in an algorithms course. Initially, it was noticed that students had severe difficulties to deal with experimentation, but their academic performance sharply increased by fully integrating experimentation along the complete course. The article also identifies some opportunities for extension in AlgorEx
Experimentación interactiva con algoritmos voraces
Aunque pueden establecerse algunos objetivos
de aprendizaje comunes a todas las técnicas de
diseño de algoritmos, cada técnica particular
tiene peculiaridades que obligan a variar
ligeramente sus objetivos educativos. Uno de los
elementos clave de los algoritmos voraces es una
función de selección de candidatos que garantiza
un resultado óptimo. Presentamos una colección
de ayudantes interactivos diseñados para ayudar
al alumno a identificar funciones de selección
óptimas para problemas concretos. El proceso de
identificación es un experimento (al estilo de las
ciencias experimentales), en el que el alumno
prueba de forma planificada posibles funciones
de selección y decide cuáles son óptimas. La
experimentación se realiza con ayuda de varios
ayudantes interactivos, que hemos desarrollado
para los siguientes problemas: mochila, selección
de actividades y árbol de recubrimiento de coste
mínimo. Los ayudantes interactivos se han
utilizado durante los cursos académicos 2007-
2008, 2008-2009 y 2009-2010, con resultados
positivos.Peer Reviewe
Derivación deductiva de programas funcionales con patrones
Una de las dificultades principales en el desarrollo de
software es la ausencia de un marco conceptual adecuado para
su estudio. Una propuesta la constituye el modelo transformativo,
que entiende el desarrollo de software como un proceso
iterativo de transformación de especificaciones: se parte de
una especificación inicial que va transformándose sucesivamente
hasta obtener una especificación final que se toma como
programa. Este modelo básico puede llevarse a la práctica de
varias maneras. En concreto, la aproximación deductiva toma
una sentencia lógica como especificación inicial y su proceso
transformador consiste en la demostración de la sentencia;
como producto secundario de la demostración se deriva un programa
que satisface la especificación inicial.
La tesis desarrolla un método deductivo para la derivación
de programas funcionales con patrones, escritos en un lenguaje
similar a Hope. El método utiliza una lógica multigénero, cuya
relación con el lenguaje de programación es estudiada. También
se identifican los esquemas de demostración necesarios para la
derivación de funciones con patrones, basados en la demostración
independiente de varias subsentencias. Cada subsentencia
proporciona una subespecificación de una ecuación del futuro
programa a derivar.
Nuestro método deductivo está inspirado en uno previo de
Zohar Manna y Richard Waldinger, conocido como el cuadro
deductivo, que deriva programas en un lenguaje similar a Lisp.
El nuevo método es una modificación del cuadro de estos autores,
que incorpora géneros y permite demostrar una especificación
mediante varios cuadros. Cada cuadro demuestra una subespecificación
y por tanto deriva una ecuación del programa. Se
prevén mecanismos para que los programas derivados puedan contener
definiciones locales con patrones y variables anónimas y
sinónimas y para que las funciones auxiliares derivadas no
usen variables de las funciones principales.
La tesis se completa con varios ejemplos de aplicación, un
mecanismo que independentiza el método del lenguaje de programación
y un prototipo de entorno interactivo de derivación
deductiva.
Categorías y descriptores de materia CR
D.l.l [Técnicas de programación]: Programación funcional;
D.2.10 [Ingeniería de software]: Diseño - métodos; F.3.1
[Lógica y significado de los programas]: Especificación, verificación
y razonamiento sobre programas - lógica de programas;
F.3.3 [Lógica y significado de los programas]: Estudios de
construcciones de programas - construcciones funcionales;
esquemas de programa y de recursion; 1.2.2 [Inteligencia artificial]:
Programación automática - síntesis de programas;
1.2.3 [Inteligencia artificial]: Deducción y demostración de
teoremas]: extracción de respuesta/razón; inducción matemática.
Términos generales
Programación funcional, síntesis de programas, demostración
de teoremas.
Otras palabras claves y expresiones
Funciones con patrones, cuadro deductivo, especificación
parcial, inducción estructural, teorema de descomposición.---ABSTRACT---One of the main difficulties in software development is
the lack of an adequate conceptual framework of study. The
transformational model is one such proposal that conceives
software development as an iterative process of specifications
transformation: an initial specification is developed and
successively transformed until a final specification is
obtained and taken as a program. This basic model can be
implemented in several ways. The deductive approach takes a
logical sentence as the initial specification and its proof
constitutes the transformational process; as a byproduct of
the proof, a program which satisfies the initial specification
is derived.
In the thesis, a deductive method for the derivation of
Hope-like functional programs with patterns is developed. The
method uses a many-sorted logic, whose relation to the
programming language is studied. Also the proof schemes necessary
for the derivation of functional programs with patterns,
based on the independent proof of several subsentences, are
identified. Each subsentence provides a subspecification of
one equation of the future program to be derived.
Our deductive method is inspired on a previous one by
Zohar Manna and Richard Waldinger, known as the deductive
tableau, which derives Lisp-like programs. The new method
incorporates sorts in the tableau and allows to prove a sentence
with several tableaux. Each tableau proves a subspecification
and therefore derives an equation of the program.
Mechanisms are included to allow the derived programs to contain
local definitions with patterns and anonymous and synonymous
variables; also, the derived auxiliary functions cannot
reference parameters of their main functions.
The thesis is completed with several application examples,
i mechanism to make the method independent from the
programming language and an interactive environment prototype
for deductive derivation.
CR categories and subject descriptors
D.l.l [Programming techniques]: Functional programming;
D.2.10 [Software engineering]: Design - methodologies; F.3.1
[Logics and meanings of programa]: Specifying and verifying
and reasoning about programs - logics of programs; F.3.3
[Logics and meanings of programs]: Studies of program constructs
- functional constructs; program and recursion schemes;
1.2.2 [Artificial intelligence]: Automatic programming - program
synthesis; 1.2.3 [Artificial intelligence]: Deduction and
theorem proving - answer/reason extraction; mathematical
induction.
General tenas
Functional programming, program synthesis, theorem proving.
Additional key words and phrases
Functions with patterns, deductive tableau, structural
induction, partial specification, descomposition theorem
SRec, software de animación de la recursividad
SRec es una aplicación que permite la generación automatizada de animaciones de programas basados en la recursividad. Ofrece una gran variedad de facilidades educativas como cargar y guardar animaciones ya generadas, configuración de la información que se muestra en cada momento y una interfaz muy intuitiva. Mitiga el esfuerzo de elaboración de animaciones para los profesores y ayuda a analizar los algoritmos recursivos a los alumnos. Los resultados obtenidos de su utilización en las clases indican una gran aceptación por parte de los alumnos y una mejora en sus evaluaciones académicas.Peer Reviewe
An Evaluation of the Effortless Approach to Build Algorithm Animations with WinHIPE
AbstractThe use of algorithm visualizations in computer science education is not a new thing. Although there is a firm belief that graphical representations of algorithms are learning aids, empirical studies show that what is important is what the students do with the animations rather than what they see in them. In this paper we compare to kinds of interaction: viewing animations vs constructing animations. We have conducted a controlled experiment where a group of students (n=15) had to study an algorithm and complete a knowledge test about it and a subjective opinion questionnaire. Students were randomly divided in constructing and viewing groups. Results have been measured by means of learning outcomes, efficiency issues and student's subjective opinion. Results significantly evidence that builders obtained better results than viewers
Interacciones entre tres tradiciones intelectuales en la docencia de la algoritmia
La informática es una disciplina en la que confluyen tres tradiciones intelectuales distintas: matemáticas, ciencias experimentales e ingeniería. La algoritmia no es una excepción y contiene elementos de las tres tradiciones. La comunicación clasifica en alguna de las tres tradiciones contenidos que son comunes en las asignaturas de algoritmos. La aportación principal consiste en la presentación de varias actividades docentes novedosas, basadas en el uso conjunto de la experimentación y alguna de las otras dos tradiciones. Están inspiradas en la hipótesis de que podría mejorarse el aprendizaje de algunos contenidos tratándolos desde varios enfoques. Por ejemplo, los resultados de probar algoritmos heurísticos con respecto a su optimalidad pueden usarse para el diseño de contraejemplos de su optimalidad. Se completa la descripción de estas actividades con nuestra experiencia durante el curso académico 2019-20. Los resultados obtenidos para algunos contenidos ingenieriles son satisfactorios, pero no tanto para otros contenidos teóricos.Computing is a discipline which is at the cross of three intellectual approaches: mathematics, experimental sciences and engineering. Algorithmics is not an exception and it also contains elements from the three approaches. The paper classifies contents which are common in algorithms courses into any of these traditions. The main contribution consists in presenting several innovative instructional activities, which are based on the joint use of experimentation and one of the other two traditions. Their ultimate goal is to enhance the understanding of some contents by addressing them from several approaches. For instance, the outcomes of testing heuristic algorithms with respect to optimality can be used to design counterexamples of their optimality. The description of these activities is completed with our experience in the academic year 2019-20. The results obtained for some engineering contents are satisfactory, not so much for theoretical contents.Este trabajo se ha financiado con los proyectos de investigación iProg (TIN2015-66731-C2-1-R) del Ministerio de Economía y Competitividad y e-Madrid-CM (S2018/TCS-4307) de la Comunidad Autónoma de Madrid. El proyecto e-Madrid-CM también está financiado con los fondos estructurales FSE y FEDER
Reflexiones sobre la impartición de asignaturas de algoritmos
Ha habido más debate sobre la enseñanza de la introducción a la programación que sobre la enseñanza de cualquier otra materia informática. Sin embargo, es aconsejable, incluso necesario, debatir sobre la docencia de esta materia. Esta comunicación es una reflexión sobre la docencia de la algoritmia, abordando tres temas. Primero, se resalta que los problemas resueltos con varias técnicas destacadas de diseño son de optimización, comentando algunas implicaciones de este hecho. Segundo, se aboga por un enfoque experimental para el aprendizaje de los algoritmos, complementario del más extendido enfoque formal. En concreto, mostramos cómo pueden usarse la visualización y la comparación experimental para que los algoritmos sean más concretos para los alumnos. Tercero, se argumenta que algunos modelos conceptuales presentes en la mayoría de los libros de texto sobre algoritmos son imprecisos, dificultando el aprendizaje de los temas correspondientes. Analizamos esta cuestión en tres técnicas de diseño de algoritmos: la técnica voraz, programación dinámica y ramificación y poda.There has been more debate about the teaching of introductory programming than the teaching of any other informatics matter. However, it is advisable, even necessary, to discuss how to teach this subject matter. This position paper meditates on this concern by addressing three themes. Firstly, it is remarked that problems addressed by several common algorithm design techniques are optimization problems, and some implications are discussed. Secondly, it is advocated an experiential approach to learning algorithms, which would complement the more usual formal approach. In particular, we show how visualization and benchmarking can be used to make algorithms more concrete to students. Thirdly, it is argued that some conceptual models present in most algorithm textbooks are imprecise, making difficult to learn their corresponding topics. We elaborate on this concern for three design techniques, namely greedy algorithms, dynamic programming and branch-and-bound.Este trabajo se ha financiado con el proyecto de investigación e-Madrid-CM (S2018/TCS-4307) de la Comunidad Autónoma de Madrid y los proyectos-puente PROGRAMA de la Universidad Juan Carlos (M2614 y M3035). El proyecto e-Madrid-CM también está financiado con los fondos estructurales FSE y FEDER
Ayudante interactivo para los algoritmos de Prim y Kruskal
Uno de los elementos clave de los algoritmos
voraces es una función de selección de candidatos
que garantiza un resultado óptimo. Hemos
desarrollado una colección de ayudantes
interactivos diseñados para ayudar al alumno a
identificar funciones de selección óptimas para
problemas concretos. El proceso de identificación
es un experimento (al estilo de las ciencias
experimentales), en el que el alumno prueba de
forma planificada posibles funciones de selección
y decide cuáles son óptimas. En esta
comunicación presentamos un ayudante
interactivo desarrollado para soportar el método
experimental aplicado al problema del árbol de
recubrimiento de coste mínimo (resoluble por los
conocidos algoritmos de Prim y Kruskal). La
contribución de la comunicación es doble: un
estudio bibliográfico sobre el tratamiento del
problema en una selección de 12 libros de texto de
reconocido prestigio, y el propio ayudante
interactivo, llamado TuMiST. Esta aplicación
educativa se ha utilizado en clase durante los
cursos académicos 2008-2009 y 2009-2010.Peer Reviewe
Experimentación interactiva con algoritmos voraces
Aunque pueden establecerse algunos objetivos de aprendizaje comunes a todas las técnicas de diseño de algoritmos, cada técnica particular tiene peculiaridades que obligan a variar ligeramente sus objetivos educativos. Uno de los elementos clave de los algoritmos voraces es una función de selección de candidatos que garantiza un resultado óptimo. Presentamos una colección de ayudantes interactivos diseñados para ayudar al alumno a identificar funciones de selección óptimas para problemas concretos. El proceso de identificación es un experimento (al estilo de las ciencias experimentales), en el que el alumno prueba de forma planificada posibles funciones de selección y decide cuáles son óptimas. La experimentación se realiza con ayuda de varios ayudantes interactivos, que hemos desarrollado para los siguientes problemas: mochila, selección de actividades y árbol de recubrimiento de coste mínimo. Los ayudantes interactivos se han utilizado durante los cursos académicos 2007- 2008, 2008-2009 y 2009-2010, con resultados positivos.Este trabajo se ha financiado parcialmente con el proyecto TIN2008-04103/TSI del MICINN
- …