121 research outputs found

    A unified framework to experiment with algorithm optimality and efficiency

    Get PDF
    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

    Get PDF
    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

    Full text link
    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

    Get PDF
    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

    Get PDF
    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

    Get PDF
    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

    Get PDF
    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

    Get PDF
    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

    Get PDF
    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
    corecore