Download Del estudiante - Edumin-PDP
Document related concepts
Transcript
Guía Del estudiante Modalidad a distancia Modulo: PARADIGMAS DE PROGRAMACION DATOS DE IDENTIFICACION TUTOR HECTOR MAURICIO LEAL PARGA Teléfono 000-000-0000 E-mail infingml@yahoo.es Lugar CERES – SABANA DE OCCIDENTE – Corporación Universitaria Minuto de Dios 1 BIENVENIDA La Corporación Universitaria Minuto de Dios. UNIMINUTO –Educación a Distancia le da la bienvenida al Modulo Paradigmas de Programación. Esperamos que una vez terminado éste adquiera los conocimientos fundamentales de gestión de contenidos de programación para que pueda continuar con el desarrollo del pregrado de forma exitosa, con la profundización que como profesional deberá alcanzar. Recuerde que la metodología a distancia implica un manejo las exigencias propias del nivel de formación y de las profesional, por ello su rol como estudiante cobrará mayor Aspectos fundamentales para la concepción formal de dedicación y compromiso. de sus tiempos acorde con estrategias propias de un relevancia y protagonismo. una disciplina basada en Le auspiciamos los mejores deseos por alcanzar los objetivos planteados y el éxito en su formación profesional. 2 INTRODUCCION En el desarrollo del modulo a través de guías se podrá encontrar conceptos básicos de los Paradigmas de la Programación, así como una introducción a lenguajes de programación como Lenguaje C, Lenguaje Scheme, Lenguaje Java y Prolog. Las definiciones son tomadas principalmente de documentos y lecturas extraídas de de Internet, También debemos indicar que los libros donde se basa esta este modulo son: Lenguajes de programación, y Fundamentos de programación. Estos libros han sido recomendados por IDEA, por lo tanto hay conceptos es extraída de estos libros. El impacto local, nacional e internacional que se pretende desarrollar en los estudiantes con el modulo Paradigmas de la programación (PDP), es que identifique las característica fundamentales de los lenguajes de programación y los paradigmas y que además comprenda, comenten y diferencien segmentos de código escrito en uno u otro lenguaje. 3 UNIDAD DE TRABAJO No.3 Programación funcional (PDP) Preguntas Generadoras 1. 2. 3. 4. 5. ¿Qué significa la notación prefija en programación Funcional? ¿Cómo se realiza el control de un programa a través de recursión? ¿Se utiliza la instrucción de asignación en un programa Funcional? ¿En qué consiste el lenguaje Scheme? ¿Qué tipo de aplicaciones se desarrollan con el paradigma de programación Funcional? INDICADORES Comprender las principales programación Funcional. características del paradigma de TEMAS A DESARROLLAR EN LA UNIDAD • • • • • • • • • Características del paradigma Funcional Imperativo Vs Funcional Lenguaje Scheme Tipos de datos Sintaxis Definición de procedimientos Estructuras de control Procedimientos recursivos Listas 4 MARCO TEORICO DE FORMACION Características del paradigma Funcional Los programas escritos en un lenguaje funcional están constituidos únicamente por definiciones de funciones, entendiendo éstas no como subprogramas clásicos de un lenguaje imperativo, sino como funciones puramente matemáticas, en las que se verifican ciertas propiedades como la transparencia referencial (el significado de una expresión depende únicamente del significado de sus subexpresiones), y por tanto, la carencia total de efectos laterales. Otras características propias de estos lenguajes son la no existencia de asignaciones de variables y la falta de construcciones estructuradas como la secuencia o la iteración (lo que obliga en la práctica a que todas las repeticiones de instrucciones se lleven a cabo por medio de funciones recursivas). Existen dos grandes categorías de lenguajes funcionales: los funcionales puros y los híbridos. La diferencia entre ambos estriba en que los lenguajes funcionales híbridos son menos dogmáticos que los puros, al admitir conceptos tomados de los lenguajes procedimentales, como las secuencias de instrucciones o la asignación de variables. En contraste, los lenguajes funcionales puros tienen una mayor potencia expresiva, conservando a la vez su transparencia referencial, algo que no se cumple siempre con un lenguaje funcional híbrido. Entre los lenguajes funcionales puros, cabe destacar a Haskell y Miranda. Los lenguajes funcionales híbridos más conocidos son Lisp, Scheme, Ocaml y Standard ML (estos dos últimos, descendientes del lenguaje ML). La programación funcional, es un modelo basado en la evaluación de funciones matemáticas, entendidas como mecanismos para aplicar ciertas operaciones sobre algunos valores o argumentos, para obtener un resultado o valor de la función para tales argumentos. Sin embargo, tanto argumentos como resultado de una función, pueden ser otra función, o incluso la misma, tal como una forma de recursividad, que constituye una poderosa herramienta de la programación funcional Imperativo Vs Funcional Las características de la programación funcional se pueden ver más claramente cuando se contrastan con aquel otro modelo de programación con el que estamos más familiarizado; la programación imperativa. Un programa funcional 5 dice lo que se quiere (el qué); un programa imperativo dice lo que hay que hacer (el cómo). Por ejemplo, un programa funcional dice: “devuelve una lista constituida por a y el cuadrado del primer elemento de x”: >(defun funcional (x) (list „a (expt (car x) 2))) Mientras que un programa imperativo dice: “extrae el primer elemento de x, elévalo al cuadrado y entonces devuelve una lista constituida por a y el cuadrado obtenido anteriormente”: >(defun imperativo (x) (let (y cuad) (setq y (car x)) (setq cuad (expt y 2)) (list „a cuad))) Una de las tantas ventajas de Lisp es que resulta posible escribir programas de las dos maneras. El modo imperativo es el que corresponde a los lenguajes como C, Pascal, Basic, .... Una de las razones de ser de este modo de programación es la cercanía del código resultante a como realmente lo ejecutará al final la máquina. Pero, si un compilador es capaz de hacer la transformación de funcional a imperativo ¿porqué han de programar de modo imperativo los programadores, cuando resulta más natural el modo funcional?. El problema surge al plantearse el Lisp (u otro lenguaje funcional) como un segundo lenguaje de programación cuando los primeros lenguajes y dialectos aprendidos han sido imperativos. Afortunadamente hay un truco para simplificar el paso. Lenguaje Scheme Scheme es un lenguaje de programación. Es un lenguaje funcional (si bien impuro, ya que, por ejemplo, sus estructuras de datos no son inmutables) y un dialecto de Lisp. Fue desarrollado por Guy L. Steele y Gerald Jay Sussman en la década de los setenta e introducido en el mundo académico a través de una serie de artículos conocidos como los Lambda Papers de Sussman y Steele. 6 La filosofía de Scheme es decididamente minimalista. Su objetivo no es acumular un gran número de funcionalidades, sino evitar las debilidades y restricciones que hacen necesaria su adición. Así, Scheme proporciona el mínimo número posible de nociones primitivas, construyendo todo lo demás a partir de un reducido número de abstracciones. Por ejemplo, el mecanismo principal para el control de flujo son las llamadas recursivas finales. Scheme fue el primer dialecto de Lisp que usó ámbito estático o léxico (en lugar de dinámico) de forma exclusiva. También fue uno de los primeros lenguajes de programación con continuaciones explícitas. Scheme ofrece también gestión automática de memoria (recolección de basura). Las listas son la estructura de datos básica del lenguaje, que también ofrece arrays entre sus tipos predefinidos. Debido a su especificación minimalista, no hay sintaxis explícita para crear registros o estructuras, o para programación orientada a objetos, pero muchas implementaciones ofrecen dichas funcionalidades. Scheme se llamaba originalmente "Schemer", siguiendo la tradición de los lenguajes Planner y Conniver. Su nombre actual es debido a que sus autores usaban el sistema operativo ITS, que limitaba la longitud de los nombres de fichero a 6 caracteres. Ventajas de Scheme Scheme, como todos los dialectos de Lisp, tiene una sintaxis muy reducida, comparado con muchos otros lenguajes. No necesita reglas de precedencia, ya que, en esencia, carece de operadores: usa notación prefija para todas las llamadas a función. Las macros de Scheme permiten adaptarlo a cualquier dominio. Pueden ser usadas, por ejemplo, para añadir soporte a la programación orientada a objetos. Scheme proporciona un sistema de macros higiénico que, aunque no tan potente como el de Common Lisp, es mucho más seguro y, con frecuencia, sencillo de utilizar. La ventaja de un sistema de macros de este tipo (que también se encuentra en otros lenguajes, como Dylan) es que evita automáticamente colisiones entre los nombres usados en la definición de la macro y en el contexto en que ésta se expande. En contrapartida, las macros higiénicas no pueden introducir nuevos símbolos. Scheme facilita la programación funcional. La programación funcional pura no precisa de variables globales ni sufre de efectos secundarios, y es, por tanto, automáticamente segura en presencia de procesos concurrentes (thread-safe), amén de facilitar considerablemente la verificación de programas, al menos en comparación con el estilo imperativo. En Scheme, los procedimientos son objetos de primera clase. Ello permite la definición de funciones de orden superior, que facilitan un mayor grado de abstracción en los programas. También es posible la creación de procedimientos anónimos. El estándar de Scheme es también minimalista. Ello conlleva ventajas e inconvenientes. Por ejemplo, escribir un compilador o intérprete de Scheme que sea fiel al estándar es 7 más fácil que implementar uno de Common Lisp; empotrar Lisp en dispositivos con poca memoria será también más factible si usamos Scheme en lugar de Common Lisp. A los aficionados a Scheme les divierte mucho señalar que su estándar, con sólo 50 páginas, ¡es más corto que el índice del libro de Guy Steele Common Lisp: The Language Desventajas de Scheme El estándar de Scheme es realmente minimalista y específico en sí. Ello provoca que existan multitud de implementaciones diferentes, cada una de las cuales introduce extensiones y bibliotecas propias que las hace incompatibles entre sí. Los Scheme Requests for Implementation (SRFI) tratan de poner remedio a este problema. Hay quien ve el hecho de que los procedimientos y variables compartan el mismo espacio de nombres como una desventaja, ya que algunas funciones tienen nombres que son de uso común para variables. Por ejemplo, list es el nombre de un procedimiento, así que es muy habitual ver lst o lyst como nombres de variables, en lugar del obvio "list". Como hemos dicho, el espacio de nombres es único (en la jerga técnica, Scheme es lo que se conoce como un LISP-1) y, por tanto, también incluye a las macros. Ello hace imposible distinguir el uso de una macro del de una función, así que, si no consultamos la definición de cada uno de los objetos usados, no será en general posible determinar el orden de evaluación en programas con los que no estemos familiarizados. Tipos de datos Los tipos de datos en Scheme son los enteros, racionales, reales, complejos, símbolos, cadenas, y puertos, listas asociativas, tablas hash, vectores, arrays y estructuras. La mayoría de implementaciones proporciona lo que se conoce como una torre numérica completa, así como aritmética exacta e inexacta. Los valores booleanos se representan mediante los símbolos #t y #f. En realidad, cualquier valor distinto de #f (incluyendo la lista vacía) se interpreta como 'verdadero' en un contexto adecuado, mientras que en otros dialectos de Lisp la lista vacía es interpretada como el valor booleano falso. Los símbolos pueden ser definidos de varias maneras, siendo 'symbol (string->symbol "symbol") las más comunes. 8 Sintaxis o o o o Palabras claves Variables Datos contantes (Números, caracteres, string, vectores, listas y símbolos citados). Formas estructuradas. Definición de procedimientos En Scheme existe un mecanismo llamado continuaciones (continuations) que consiste básicamente en la representación de una computación futura. Cada vez que se evalúa una expresión en Scheme hay una continuación esperando el resultado de la misma. La mayor parte del tiempo una continuación incluye acciones especificadas mediante código proporcionado por el usuario (por ejemplo, imprimir un resultado o pasarlo como argumento a otro procedimiento), y sus maquinaciones suelen ser desconocidas y carentes de interés para el programador. Sin embargo, en algunas ocasiones se requiere lidiar explícitamente con las continuaciones, por lo que Scheme proporciona un poderoso procedimiento llamado call-with-current-continuation, el cual crea un procedimiento que actúa tal y como la continuación actual, a fin de permitir al programador redefinirla. Las continuaciones pueden usarse como procedimientos de escape, similares a exit, return o goto de los lenguajes tradicionales, pero con la peculiaridad de que en Scheme este mecanismo es tratado como un ciudadano de primera clase, lo que permite almacenar una continuación en una variable o una estructura de datos, además de poder llamarlas tantas veces como se desee y de poder retornarlas y pasarlas como argumento a un procedimiento, como cualquier otro objeto en Scheme. Una breve reseña histórica de las continuaciones puede encontrarse en la referencia [15], partiendo de la invención del operador J por Peter Landin en 1965 y la definición de la forma especial catch descrita por Sussman y Steele en su definición de Scheme en 1975 emulando el constructor inventado por Reynolds en 1972 que resultó ser igualmente poderoso que el de Landin, pero mucho más simple. Varios implementadores de Scheme notaron que un procedimiento podría emular todo el poder del constructor catch, por lo que decidieron incorporarlo en la definición del lenguaje en 1982, marcando así el nacimiento de call-with-currentontinuation. Varias personas prefieren utilizar la abreviación call/cc, pese a que el nombre original resulta más descriptivo, aunque tal vez más difícil de recordar. El uso más simple de las continuaciones es para implementar salidas no locales en el caso de detectarse condiciones de error. Por ejemplo, el siguiente procedimiento muestra una aplicación en la que un procedimiento que calcula la suma de los recíprocos de una lista de 9 números regresa un mensaje de error cuando se detecta un cero en la lista dada, deteniendo las operaciones aritméticas y anticipándose al sistema de detección de errores del intérprete: (define division (lambda (numeros) (call/cc (lambda (termina) (let ciclo ((numeros numeros)) (if (null? numeros) 0 (if (zero? (car numeros)) (termina "División entre cero") (+ (/ 1 (car numeros)) (ciclo (cdr numeros)))))))))) Las principales aplicaciones de las continuaciones son: simulación de eventos, búsquedade retroceso (backtracking). Estructuras de control El otro elemento comúm a todos los lenguajes de programación (aparte de la abstracción y de las primitivas) es la posibilidad de componer expresiones sencillas en expresionescompuestas. Hemos visto que una de las características de Scheme es la composición de funciones. Scheme también define estructuras de control que nos permiten seleccionar qué parte de una expresión evaluamos en función del resultado de la evaluación de otras. Las estructuras más importantes de Scheme son el if y el cond para realizar una evaluación condicional. 10 El nombre que reciben en Scheme todas las expresiones que no son procedimientos y que tienen una evaluación especial es forma especial. Ejemplos de formas especiales son: define, if, cond. Atención, aviso - La expresión (+ (* 2 3) 4) se evalúa de una forma distinta de (define a 3). En el primer caso estamos evaluando llamadas a funciones, y en el segundo evaluamos una forma especial. 4.6.1. Forma especial 'if' La forma especial if realiza una evaluación condicional de las expresiones que la siguen, según el resultado de una condición. (define x 3) (if (> x 5) 'mayor-que-cinco 'menor-o-igual-que-cinco) (define (vocal? x) (member? x 'aeiou)) (define (plural pal) Procedimientos recursivos Todas las implementaciones del lenguaje deben usar recursión de cola (tail recursión): Existen dos formas básicas de implementar recursión en un lenguaje de programación: 1) Recursión lineal: Se dice que la definición de una función f es recursiva lineal si una activación f(a) de f puede iniciar cuando mucho una nueva activación de f. Consideremos la siguiente función para calcular factoriales que emplea recursión lineal: (define fact ; versión que usa recursión lineal (lambda (n) (if (zero? n) 1 11 (* n (fact (- n 1)))))) Una activación de fact pasando como argumento n, regresa 1 si n es cero; de lo contrario, inicia una nueva activación de fact usando como argumento n - 1. De tal forma, cada activación de fact puede iniciar cuando mucho una nueva activación de fact. La evaluación de una función recursiva lineal tiene dos fases: 1. Una fase en la cual se inician nuevas activaciones, y 2. Una fase subsecuente en la cual se retorna el control desde las activaciones en una forma LIFO (Last In First Out, o sea la última en entrar es la primera en salir). 2) Recursión de cola: Se dice que una función f usa recursión de cola si regresa un valor sin necesidad de recursión, o si simplemente retorna el resultado de una activación recursiva. Consideremos la siguiente definición de nuestra función para calcular factoriales que hace uso de la recursión de cola: (define fact ; versión que usa recursión de cola (lambda (n) (letrec ((fact-it (lambda (val acc) (if (zero? val) acc (fact-it (- val 1) (* acc val)))))) (fact-it n 1)))) Todo el trabajo de una función como ésta, en que se hace uso de la recursión de cola, se efectúa en una única fase de iniciación de activaciones. La segunda etapa mencionada anteriormente se vuelve trivial porque el valor calculado mediante la activación final se vuelve el resultado de toda la activación. De tal forma, el mecanismo de iteración puede implementarse muy eficientemente haciendo uso de este tipo de recursión9, en vez de recurrir a los tradicionales ciclos de los lenguajes procedurales tradicionales. 12 Listas Uno de los elementos fundamentales de Scheme, y de Lisp, son las listas. Vamos a ver cómo definir, crear, recorrer y concatenar listas. (list 1 2 3 4) ; list crea una lista '(1 2 3 4) ; otra forma de definir la misma lista (car '(1 2 3 4)) ; primer elemento de la lista (cdr '(1 2 3 4)) ; resto de la lista '() ; lista vacía (cdr '(1)) ; devuelve la lista vacía (null? (cdr '(1))) ; comprueba si una lista es vacía (append '(1) '(2 3 4) '(5 6)) ; construye una lista nueva concatenando ; los argumentos Atención, aviso Uno de los conceptos más importantes relacionados con las listas es el de lista vacía. La comprobación de si una lista es vacía con la función null? es el caso base de gran parte de funciones recursivas que recorren listas. Taller N3-Programación funcional – NT3 13 CALENDARIO DEL MODULO (Se define por semanas y Núcleos temáticos según Matriz de Acuerdos pedagógicos ) UNIDAD DE APRENDIZAJE ACTIVIDADES DE APRENDIZAJE SEMANA Inducción y Acuerdos Se entrega Matriz temática al estudiante fotocopiada para realizar acuerdos pedagógico del Modulo PDP NT1. Introducción a los paradigmas de programación Documentos - Wiki- 1 2 NT2. Programación Imperactiva o procedural Documentos - Wiki- NT3. Programación Funcional Documentos - Wiki- NT4. Programación orientada a objetos Documentos - Wiki- TALLERES – Preguntas Generadoras (Situaciones – Problemas) Aprendizaje – Significativo – Portafolio. TALLERES Ejercicios- Portafolio PRUEBA – DIRECTA - (Evaluación Escrita)- Portafolio PRODUCTOS – FINALES - Practicas pedagógicas productiva - (Temáticas y Portafolio). Seguimiento de: Temáticas y Portafolio – Según – Criterios. TALLERES – Preguntas Generadoras (Situaciones – Problemas) Aprendizaje – Significativo – Portafolio. TALLERES Ejercicios- Portafolio PRUEBA – DIRECTA - (Evaluación Escrita)- Portafolio PRODUCTOS – FINALES - Practicas pedagógicas productiva - (Temáticas y Portafolio). Seguimiento de: Temáticas y Portafolio – Según – Criterios. TALLERES – Preguntas Generadoras (Situaciones – Problemas) Aprendizaje – Significativo – Portafolio. TALLERES Ejercicios- Portafolio PRUEBA – DIRECTA - (Evaluación Escrita)- Portafolio PRODUCTOS – FINALES - Practicas pedagógicas productiva - (Temáticas y Portafolio). Seguimiento de: Temáticas y Portafolio – Según – Criterios. TALLERES – Preguntas Generadoras (Situaciones – Problemas) Aprendizaje – Significativo – Portafolio. TALLERES Ejercicios- Portafolio PRUEBA – DIRECTA - (Evaluación Escrita)- Portafolio PRODUCTOS – FINALES - Practicas pedagógicas productiva - (Temáticas y Portafolio). 3 4 5 14 Seguimiento de: Temáticas y Portafolio – Según – Criterios. TALLERES – Preguntas Generadoras (Situaciones – Problemas) Aprendizaje – Significativo – Portafolio. TALLERES Ejercicios- Portafolio PRUEBA – DIRECTA - (Evaluación Escrita)- Portafolio PRODUCTOS – FINALES - Practicas pedagógicas productiva - (Temáticas y Portafolio). Seguimiento de: Temáticas y Portafolio – Según – Criterios. Convocatoria No 1. Sustentación – Productos Finales. Presentación y Sustentación de Portafolio Convocatoria No 2. Entrega de Notas Entrega de carpetas Retroalimentación y entrega de Nota Final Entrega de carpeta a Coordinación. NT5. Programación Lógica. Documentos - Wiki- 6 7 8 15 METODOLOGIA En la educación a distancia en CERES – Sabana de Occidente del Modulo Paradigmas de la Programación, es importante que el estudiante de Ingeniería de Sistemas asuma una estricta responsabilidad con sus procesos, condición que lo lleva a adquirir autoesigencia con su aprendizaje. El estudiante debe considerar la capacidad para organizar el tiempo de su estudio por sí mismo (autodisciplina), para poder cumplir con TALLERES – Preguntas Generadoras (Situaciones – Problemas) Aprendizaje – Significativo – y Portafolio. TALLERES Ejercicios- y Portafolio, PRUEBA – DIRECTA - (Evaluación Escrita)-, Portafolio y PRODUCTOS – FINALES - Practicas pedagógicas productiva - (Temáticas y Portafolio), y Seguimiento de: Temáticas y Portafolio – Según – Criterios. Usted ingeniero cuenta con varios recursos a su disposición los cuales le ayudaran a alcanzar la competencia al final de este modulo. Ellos son: Texto de Estudio. Guía de Estudio. El espacio tutorial. Material Interactivo (Wiki implementada por el tutor – Mauricio Leal Parga para el trabajo colaborativo con los estudiantes de PDP). Bibliografía ALONSO AMO, F y SEGOVIA PEREZ, F. Entornos y Metodologías de Programación. Paraninfo. GHEZZI, Carlo y JAZAYERI, Mehdi. Conceptos de Lenguajes de Programación. Díaz de los Santos. RAVI y SETHI. Lenguajes de programación - Conceptos y constructores. Addison Wesley. Coello Coello, Carlos A. “Scheme Lo pequeño es bello (Primera Parte)”, Soluciones Avanzadas. Tecnologías de Información y Estrategias de Negocios. Año 4, No. 39, 15 de noviembre de 1996, pp. 27- 34. 16 Web grafía Scheme - http://es.wikipedia.org/wiki/Scheme Lecturas complementarias. www.monografias.com - Paradigma Funcional. Scheme - http://es.wikipedia.org/wiki/Scheme. Scheme: lo pequeño es bello1 - Un lenguaje de programación ideal para la enseñanza. Wiki Espacio creado por el Tutor Mauricio Leal Parga – donde se publican periódicamente – documentos y lecturas, Talleres, Preguntas Generadoras, Guías. Del Modulo Teoría general de sistemas. Es de anotar que la información aquí publicada se puede descargar. EVALUACION TALLERES – Preguntas Generadoras (Situaciones – Problemas) Aprendizaje – Significativo – Portafolio. TALLERES Ejercicios- Portafolio PRUEBA – DIRECTA - (Evaluación Escrita)- Portafolio PRODUCTOS – FINALES - Practicas pedagógicas productiva - (Temáticas y Portafolio). Seguimiento de: Temáticas y Portafolio – Según – Criterios. Presentación y sustentación de talleres de PDP. Presentación y Sustentación de Preguntas Generadoras Presentación y Sustentación de Portafolio LABORATORIOS - (Trabajo – Práctico) - Portafolio 17 POLITICAS A continuación se presentan los siguientes enunciados que se deben cumplir para dar orden al proceso de aprendizaje, que orientan a cada estudiante para que cada participante presente sus actividades para poder alcanzar las competencias necesarias para la aprobación del modulo. Estas políticas dan una estructura al trabajo de todos. Tutor y estudiante. Documentos – E-Mail o la Wiki (El estudiante debe consultar periódicamente su correo electrónico o la Wiki donde se le envían documentos y lecturas, talleres, preguntas generadoras, guías de cada Núcleo Temático – NT). El estudiante debe resolver las Preguntas Generadoras de cada Núcleo, como política de cumplimiento de la metodología de la educación a distancia del proyecto CERES. Los talleres serán enviados al E-Mail de cada estudiante semanalmente, para resolverlos por dada Núcleo Temático. Se realizara LABORATORIO - (Trabajo – Práctico) – Se realizaran Pruebas escritas, finalizando cada sesión de tutorías según Núcleos Temáticos. El estudiante debe exponer libremente sus ideas, mediante momentos de discusión, reflexión donde se promueva el desarrollo autónomo, con un aporte de índole social en la ampliación de su profesión. El estudiante debe presentar Memorias de temática expuesta. El estudiante debe presentar temáticas y portafolios según acuerdo. El estudiante debe presentar y sustentar talleres realizados en PDP. El estudiante debe presentar y sustentar el desarrollo de preguntas generadoras. El estudiante debe presentar y sustentar el Portafolio del modulo –PDP- Rol del Tutor: El propósito fundamental como tutor es el de dar un servicio a los estudiantes, facilitando su proceso de aprendizaje y el logro de sus competencias. La supervisión que hago se 18 enfocará tanto a los procesos, como a los productos de aprendizaje que evidencien desarrollo de habilidades que conlleven a alcanzar la competencia, para ello asumo entre otros los compromisos de: Atender directamente a los estudiantes a él asignados utilizando diversos medios: encuentro tutorial, e-mail, Wiki, sistemas de mensajería y laboratorios prácticos. Asistir al lugar de tutoría asignado, en la hora y el día indicados previamente para tal fin. Respetar el calendario académico y cada una de las actividades propuestas en el. Guiar, facilitar, asesorar y orientar al estudiante en su proceso de aprendizaje. Suscitar la reflexión e indagar a los estudiantes sobre su proceso de aprendizaje. Evaluar las actividades teniendo en cuenta los criterios de evaluación socializados al estudiante al plantearse la actividad. Retroalimentar las actividades y sus evidencias de competencia en las fechas acordadas. Las dudas académicas serán atendidas directamente por el Tutor, o por E-mail y medios como foros en aulas virtuales y Wiki. Rol del estudiante Los estudiantes son participantes, honestos y comprometidos que como tales, son los principales responsables de iniciar, dirigir y sostener sus propios procesos de aprendizaje. Cada estudiante se compromete a propiciar las condiciones que estén a su alcance para maximizar las oportunidades de aprendizaje de acuerdo a su contexto y posibilidades. De igual forma se asume que nuestros estudiantes no incurrirán en actos deshonestos y de plagio intelectual de ideas en las diversas formas de interacción, actividades terminales e intermedias. Se espera que los estudiantes participen activamente en cada una de las actividades descritas en la guía de estudio, para ello es necesario tener en cuenta que: El estudiante es el protagonista del proceso de aprendizaje, que lo lleva a ser más activo y propositivo, por consiguiente a desarrollar el auto – estudio. 19 Debe estar preparado para participar activamente de las actividades de aprendizaje, habiendo leído los contenidos de su texto de estudio y materiales adicionales relacionados en la guía de estudio, documentos y lecturas complementarias. Debe realizar las actividades planteadas en la guía de estudio, entregando las evidencias de manera acorde a lo planteado en los criterios de evaluación, dentro de los tiempos establecidos en el calendario y bajo las instrucciones descritas en cada actividad. En las evidencias escritas, deberá saber citar las fuentes, es decir usar debidamente la bibliografía a fin de evitar el plagio. Guía Elaborada por el Tutor HECTOR MAURICIO LEAL PARGA Uso exclusivo de estudiantes - II Semestre de Ingeniería de Sistemas Universidad Minuto de Dios CERES SABANA DE OCCIDENTE MODULO: PARADIGMAS DE PROGRAMACIÓN Se prohíbe la publicación o reproducción total o parcial de esta Guía. 20