2.Estrategia Innovativa Procesadores de Lenguaje

Anuncio
UNA ESTRATEGIA DIDÁCTICA DE INNOVACIÓN DOCENTE PARA LA
ASIGNATURA “PROCESADORES DE LENGUAJE
Guillermina Gavaldón Hernández
Departamento de Didáctica y Organización Escolar
Universidad de Alcalá, Campus de Guadalajara
e-mail: [email protected]
Palabras Clave: Procesadores de Lenguaje, lluvia de ideas, aprendizaje basado en
proyectos, didáctica constructivista
Resumen
La experiencia que aquí se presenta describe un ensayo realizado con alumnos de
ingeniería informática, consistente en la aplicación de una serie de estrategias didácticas
para ayudar, por una parte, a la comprensión de unos contenidos teóricos muy
complejos, y para fomentar, por otra, la participación activa de los alumnos mediante el
trabajo en equipo. Este ensayo se llevó a cabo en la asignatura de Procesadores de
Lenguaje de tercer año de la carrera. Los resultados obtenidos en las evaluaciones
anteriores permitían comprobar que existía un problema de asimilación de conceptos
fundamentales. Tratando de lograr una mejora en la comprensión de esta asignatura y de
renovar la práctica docente, se estudiaron otras experiencias y metodologías didácticas
para ver la posibilidad de adaptarlas a este contexto. Los resultados obtenidos muestran
que se puede involucrar al alumno de forma activa en la construcción de su propio
aprendizaje, aplicando estrategias didácticas que centren la enseñanza en sujeto
receptor. Como conclusión del ensayo, se proponen algunas modificaciones al mismo y
se sugieren transformaciones tanto en la distribución de los contenidos de la asignatura
como del número de alumnos en el laboratorio.
I. Introducción
Hasta hace poco se consideraba que los conocimientos adquiridos por un joven
durante su etapa de estudiante le iban a servir para toda la vida. Sin embargo,
actualmente la realidad es otra. En un mundo cambiante, en el que el avance de la
ciencia y la tecnología es continuo, la mayoría de las personas desempeñan trabajos que
no existían cuando ellas nacieron. Ante esta realidad, el docente debe plantearse qué
tipo de enseñanza será la más adecuada. Está claro que si se continúa con el tipo de
enseñanza tradicional, en la que el alumno actúa como ente pasivo, receptor de
información y reproductor de la misma, no se logrará prepararle adecuadamente para las
nuevas demandas sociales y laborales que tendrá que enfrentar en su vida profesional.
La sociedad requiere de profesionales no sólo activos, críticos y participativos, sino
asimismo, en disposición de adaptarse a los cambios que tendrán que enfrentar, y de
continuar con la renovación constante de sus conocimientos.
Los avances tanto en el campo científico como en el tecnológico están
provocando que la actualización y difusión de la información se haga de forma
acelerada. Esto a su vez da lugar, en general, a que una persona se vea en la necesidad
de renovar sus conocimientos de forma periódica para no quedarse desplazada ya sea
desde el punto de vista laboral, social o cultural. En este aspecto, un profesional de la
1
informática tiene que contar con la habilidad para poder adaptarse a este reto siendo ésta
una de las profesiones en donde se están desarrollando de una forma más acelerada los
progresos en cuanto a la tecnología se refiere. Es aquí donde el papel de la universidad
es crucial y punto clave en la formación de éstos futuros profesionales que tendrán que
estar preparados para aprender a aprender, para actuar con autonomía frente a los
desafíos de una sociedad tan versátil, ser críticos y reflexivos, tener la habilidad de
adaptación y ser capaces de trabajar en equipo. Esto último es un requisito cada vez más
indispensable para los estudiantes ya que la práctica laboral se lo va a exigir (Joy,
2005).
II. Planteamiento del problema
La carrera de Ingeniería Informática en la Universidad de Alcalá tiene una
duración de cinco años. La asignatura “Procesadores de Lenguaje”, objeto de nuestra
experiencia, se cursa en el tercer año. Su contenido, a grandes rasgos podría resumirse
como sigue:
La comunicación con el ordenador se lleva a cabo mediante los lenguajes de
programación, que no son otra cosa que una notación formal para describir algoritmos o
funciones que se ejecutan en el ordenador. Se habla de lenguajes de alto nivel para
referirse a los lenguajes de programación parecidos al lenguaje al lenguaje humano.
Desgraciadamente, y como es bien sabido, el del ordenador es, en general, un lenguaje
de bajo nivel, consistente en secuencias de ceros y unos.
Como cualquier otro lenguaje, los lenguajes de programación se forman a partir
de un alfabeto (conjunto de símbolos básicos), y de acuerdo con una gramática
(conjunto de reglas que especifican una estructura). Ahora bien, al elaborar un programa
informático es necesario validarlo previamente mediante un proceso de compilación,
anterior por tanto a su ejecución. Para comprender mejor este proceso de compilación se
han establecido fases, agrupadas en dos etapas (front end y back end), que no son sino
divisiones lógicas de un programa que es en sí muy complejo. Estas fases se estudian en
el aula de forma secuencial, si bien en la realidad no funcionan de este modo actuando,
algunas de ellas, de manera simultánea. (Garrido, 2002)
Las tareas que se identifican principalmente en este proceso son, a grandes
rasgos, dos: análisis del programa fuente y síntesis del mismo. En la primera se analiza
el programa fuente y en la segunda se lleva a cabo la producción del código traducido.
La etapa de análisis se compone, a su vez, de tres fases: análisis léxico, análisis
sintáctico y análisis semántico. Dentro de ellas, el análisis léxico permite depurar los
posibles errores en los llamados tokens (secuencia de caracteres que representa un
componente léxico, como, por ejemplo, una palabra reservada, un identificador, un
operador o un carácter de puntuación) a través de un proceso de coincidencia de
patrones realizado mediante expresiones regulares y autómatas finitos. En el análisis
sintáctico se determina la estructura del programa, esto es, su gramática y para ello se
usan las gramáticas libres de contexto. Después de definir la estructura sintáctica del
programa se utilizan las reglas del mismo para verificar que su funcionamiento sea el
correcto y una vez realizado esta tarea poder llevar a cabo su optimización. A todo este
proceso se le conoce como análisis semántico.
2
A través de esta asignatura de carácter troncal y que se cursa en el tercer año de
la carrera, el alumno aprende tanto los conceptos fundamentales del funcionamiento de
un compilador o traductor, como los relativos a su diseño. Está programada para
impartirse en dos partes, una teórica y otra práctica. Dado su elevado nivel de
abstracción, se hace especial hincapié en que la parte práctica sirva como instrumento
de apoyo para una eficaz comprensión de la teoría. En efecto, al alumno en general le
resulta más fácil comprender la teoría cuando se enfrenta con problemas prácticos que si
no se establece ninguna relación entre ambas. En este sentido, la parte práctica de la
asignatura pretende facilitar la comprensión llevando a cabo ejercicios que ayuden a
entender el funcionamiento del proceso de compilación. Con este propósito, la parte
práctica de la asignatura se ha diseñado de tal forma que vaya incrementando
progresivamente su nivel de dificultad y abstracción. Se procura no pasar de nivel de
dificultad hasta no tener la seguridad de que se ha comprendido adecuadamente el nivel
anterior. Por otra parte, es necesario contar, desde un punto de vista instrumental, con
conocimientos sólidos de las materias que le preceden, ya que es, de forma general, una
síntesis sobre la teoría, los métodos y las técnicas aprendidas en las asignaturas de
programación (lenguaje C, en este caso), estructuras de datos y algoritmos y teoría de
autómatas.
A la vista de las dificultades mencionadas, y frente a la inherente dificultad de
una asignatura tan abstracta como ésta, se optó por buscar estrategias didácticas que
permitieran, por una parte, crear un ambiente activo y participativo entre el alumnado,
y, por otra, que permitieran ayudar al alumno a comprenderla mejor. La experiencia
pedagógica descrita a continuación se aparta del modelo clásico de transmisión y
recepción de conocimiento en sentido único.
III. Descripción de la estrategia didáctica
La experiencia que se presenta a continuación es un intento de motivar a los
alumnos, en el sentido apuntado, tratando de resolver un problema puntual de
comprensión de un contenido teórico complejo, ayudando, al mismo tiempo, a formar
personas críticas, reflexivas y autónomas en su aprendizaje y con la capacidad de
trabajar en equipo.
La experiencia del primer año de impartición de la asignatura mostraba la
dificultad que representaba para los alumnos la asimilación de algunos conceptos clave
de la misma. Las evaluaciones mostraban que existía algún problema de fondo,
posiblemente producto de una mala comprensión de los conceptos fundamentales. Por
otra parte era evidente que no todos los alumnos sabían programar adecuadamente en el
lenguaje C, instrumento necesario para desarrollar las prácticas de la asignatura.
Tomando en cuenta estos aspectos y reflexionando sobre la adecuación del
ejercicio docente, nos decidimos a analizar la posibilidad de introducir en el aula
estrategias didácticas que fomentaran el trabajo en equipo, que ayudaran a los alumnos a
ir construyendo su conocimiento sobre la asignatura, superando las dificultades que
presentaban determinados conceptos excesivamente abstractos en apariencia, y a lograr,
en poco tiempo, nivelar al grupo en el conocimiento del lenguaje C.
3
Ese mismo año la Universidad de Alcalá, dentro de su Plan de Formación
Pedagógica y Apoyo a la Docencia, había ofrecido el primer curso de Iniciación a la
Docencia Universitaria. A través de este curso pudimos conocer, entre otras, estrategias
didácticas para facilitar el aprendizaje comprensivo y reflexivo de los alumnos. En el
marco de este curso, se analizaron algunas de estas estrategias didácticas y, en concreto,
la experiencia piloto llevada a cabo con la misma asignatura en la Universidad de
Alicante en el año 1995, que se tituló “Learning compiler design as a research activity”,
(Moreno-Seco, 1997), y ver la posibilidad de replicarla, con las adaptaciones
ineludibles, en nuestro propio contexto. Observando el positivo resultado conseguido al
aplicar las recomendaciones de la teoría constructivista en el aula, nos dispusimos a
implantarla en nuestra asignatura, teniendo en cuenta nuestras propias especificidades:
la experiencia de nuestros alumnos (algunos provenían de las diplomaturas de ingeniería
de gestión y de sistemas, y el resto de la escuela superior de informática), las
asignaturas cursadas previamente, etc. A ello se añade que, en nuestro caso, se hizo uso
de los programas Lex y Yacc para la construcción del compilador, por lo que fue
necesario introducir a los alumnos en el manejo de estas herramientas, completamente
desconocidas para ellos. También se vio la necesidad, como se ha apuntado, de nivelar
al grupo en cuanto a sus conocimientos del lenguaje de programación C.
Nos enfrentamos, en definitiva, con el problema de tratar con grupos
heterogéneos en cuanto al conocimiento de lenguaje de programación en C. Casi el 50%
de los alumnos que se matriculaban en esta asignatura nunca habían programado con él,
aunque sí con otros lenguajes como Pascal y Java. El primer año se realizó un curso
rápido de nivelación que consistió en iniciar al alumno en los conceptos más básicos.
Las exposiciones se hicieron mediante transparencias en Power Point y los alumnos,
básicamente, se limitaban a tomar apuntes. No se realizó ningún ejercicio práctico en el
laboratorio, aunque se mostraban a través de las transparencias ejemplos de algunos
programas. A pesar de que, como se ha apuntado, los alumnos habían programado con
otros lenguajes, no se percibió una mejora sustancial en su habilidad para programar en
C y sus conocimientos sobre éste no aumentaron hasta casi el final del curso.
Una vez realizado este proceso de nivelación, el alumno pasaba a realizar las
prácticas de procesadores de lenguaje en el laboratorio. Las prácticas estaban
programadas para desarrollarse mediante dos instrumentos completamente nuevos para
ellos: Lex y Yacc (Levine, 1995). En el modelo tradicional de enseñanza, las prácticas
se han llevado a cabo proporcionando al alumno un guión. Los alumnos se organizan en
grupos de dos personas (por no contar con un ordenador para cada alumno) para realizar
los ejercicios que deberán entregar en una fecha determinada, según un calendario
establecido previamente. Antes de comenzar cada sesión de prácticas se les proporciona
una introducción orientándoles sobre lo que se persigue con los ejercicios, y se les deja
que los realicen solos. Si surgen dudas el profesor les orienta, algunas veces,
proporcionándole pistas para resolverlas, aunque se supone que si el alumno ha
estudiado la teoría, no se necesita mayor aportación por parte del profesor. Se presume,
por tanto, que la teoría le va a servir para resolver las prácticas y no que las prácticas le
sirvan para entender la teoría. Se ha observado que, en general, son pocos los
estudiantes que hacen preguntas y que se sienten poco motivados a intervenir,
existiendo un alto porcentaje que desiste de entregar los ejercicios, ya sea porque no han
comprendido del todo lo que se les pedía, o porque sienten que es un trabajo excesivo.
En definitiva, la experiencia estaba mostrando que las prácticas convencionales no
4
permitían superar adecuadamente las dificultades, sobre todo de comprensión de
conceptos clave, que experimentaban los alumnos.
La experiencia consistió pues en pasar, de un modelo centrado en el docente, en
el que éste dicta las clases magistrales y los alumnos se limitan a tomar apuntes, a un
modelo centrado en el alumno, dentro del marco del modelo constructivista. Este
modelo hace referencia a la necesidad, por un lado, de entender los procesos cognitivos
del discente, y de que este se involucre en la construcción de su propio conocimiento,
por otro (Gruender, 1996). Para ello, se experimentaron estrategias didácticas
encaminadas a fomentar el proceso de autoaprendizaje del alumno, así como a
incentivar su implicación en este proceso. Como primer paso se exploraron tanto sus
conocimientos previos, como sus ideas preconcebidas acerca del proceso de
compilación.
a) Corresponsabilidad en el aprendizaje
Las clases prácticas de la asignatura suelen empezar a funcionar a las dos
semanas de iniciarse las clases teóricas, para así dar tiempo a cubrir un contenido
teórico mínimo, que después se pondrá en práctica en el laboratorio. En esta ocasión las
prácticas se prepararon para adelantar su funcionamiento al primer día lectivo. Durante
la primera semana, y en la primera clase teórica, se presentaron distintos proyectos y se
organizaron los grupos que deberían desarrollar cada uno de ellos. El proceso se
estructuró de la siguiente forma: se explicaron los diferentes trabajos que podrían
realizar (de tres proyectos diferentes cada grupo escogía uno) y se formaron grupos
heterogéneos (de 4 a 5 personas) combinando alumnos que sabían programar en
lenguaje C con los que nunca habían programado con él. Los alumnos con experiencia
hacían el papel de directores del proyecto, y su función consistiría en guiar a sus
compañeros en la elaboración del mismo. El profesor de prácticas les facilitaría la
bibliografía necesaria para el estudio del lenguaje y los alumnos noveles en él harían las
funciones de programadores. Los directores del proyecto coordinaron a sus compañeros,
les distribuyeron las tareas y durante dos semanas estuvieron inmersos en sacarlo
adelante. Las horas de teoría se aprovecharon para aclarar dudas y para orientarles en la
metodología de programación, aunque esta labor la desarrollaban bien sus compañerosdirectores. En las horas de laboratorio se hacía un seguimiento de cada proyecto y se
evaluaban los conocimientos que estaban adquiriendo sobre el lenguaje.
b) Construcción de compiladores
En segundo lugar, y para entrar en la materia propiamente dicha, se utilizaron
diferentes estrategias didácticas. Como primer paso había que instruir a los alumnos
(esta vez al grupo en general) en el conocimiento de dos nuevas herramientas (Lex y
Yacc) que iban a servir como apoyo para la construcción de un compilador. Estas eran
completamente desconocidas por la totalidad de los alumnos, así es que se partió de la
base de que era necesario familiarizarles previamente con ellas para después plantear la
realización de un proyecto. En este caso, el proyecto consistía en la elaboración de un
compilador.
Las clases de teoría, entre tanto, se desarrollaban de tal forma que el alumno iba
construyendo su propio conocimiento sobre el proceso de compilación. Se comprobó,
5
sin embargo, que es en la práctica, esto es, en el laboratorio, en donde el alumno
comprendía mejor este proceso, al constatar su funcionamiento. En este sentido resultó
muy positiva la realización de los proyectos durante las dos primeras semanas del curso,
ya que sirvió para que el alumno se hiciera una idea general del funcionamiento de un
compilador.
c) Lluvia de ideas:
En tercer lugar, y como mecanismo para fomentar la participación y el
autoaprendizaje, se ensayó con la denominada “lluvia de ideas”. Consiste ésta, como es
bien conocido, en lo siguiente: se describe un ejercicio que ha de realizarse en clase y se
forman grupos para resolverlo, debiendo cada grupo aportar una solución al problema.
A partir del análisis conjunto de estas propuestas, se extraen conclusiones y se describe
la forma óptima de solucionarlo. De esta forma, al hacer sus aportaciones en clase, los
alumnos aprenden de las experiencias de otros y esto les ayuda a contrastar sus
resultados.
d) El estudio dirigido.
Finalmente, y como complemento de las experiencias anteriores, y buscando
reforzarlas, se ensayó con una serie de trabajos dirigidos: el profesor describe la práctica
y da una breve explicación del tema, aportando un guión de la misma en el que se
describen sus objetivos y metodología, además de un resumen teórico. A continuación
se forman grupos de dos o tres personas, y se les pide que analicen el problema e
intenten resolverlo, sugiriéndoseles que contrasten resultados y planteen sus dudas con
los otros equipos. La práctica se estructura por tanto en el marco de una didáctica
socioconstructivista, en la que el estudiante construye su conocimiento a través de su
propio trabajo, y la interrelación con los demás.
e) Construcción de un prototipo y exposición de resultados
En resumen, un compilador, como se ha apuntado, es un proceso interno,
estructurado en diferentes etapas, que realizan distintas operaciones lógicas. El
planteamiento de las prácticas del curso fue el de ir analizando y ejercitando cada una
de estas etapas por separado, para hacer más comprensible cada una de ellas.
Desgraciadamente, un compilador no sólo es un programa muy complejo, en el que sus
partes están fuertemente relacionadas entre sí, sino que el orden de ejecución de las
mismas es el inverso al que se pone en práctica, siendo el analizador léxico una rutina
del analizador sintáctico y no al revés. En este sentido, el desarrollo de un prototipo
constituye una ayuda esencial para comprender el proceso global y la importancia de
cada una de sus partes. El objetivo del proyecto es, precisamente, que los grupos de
alumnos, con una formación básica previa, diseñen un prototipo para experimentar,
investigar y evaluar empíricamente su funcionamiento. La exposición en clase de cada
uno de los proyectos ha servido para que el resto de la clase se involucrara y participara
(haciendo preguntas y aportando otras soluciones).
IV. RESULTADOS
a) Actitud de los alumnos frente a la experiencia
6
La actitud de los alumnos frente a las estrategias implementadas ha sido al
principio de sorpresa y recelo. Tienen hábitos ya formados y muestran, de partida, una
cierta resistencia al cambio. Sin embargo, también son de fácil adaptabilidad y se
manifiestan abiertos a nuevas experiencias que les ayuden en su aprendizaje de la
materia. Un porcentaje elevado se ha visto interesado no ya por aprobar, sino por
profundizar más en los procesos de construcción de traductores y compiladores. A pesar
de las dificultades derivadas de la masificación del laboratorio (en ocasiones más de dos
alumnos tuvieron que compartir un ordenador para trabajar) que hubo que enfrentar en
un principio, se puede concluir que los objetivos fueron alcanzados
Se logró fomentar la autonomía en el aprendizaje en un porcentaje aceptable de
alumnos, logrando que éstos consultaran diferentes fuentes, contrastaran con otros
grupos los procedimientos y resultados obtenidos, e intentaran resolver entre ellos los
problemas, antes de consultar al profesor. Se comprobó asimismo que quienes no eran
conscientes, al principio del curso, de que debían llevar los guiones de prácticas leídos,
consultar la bibliografía propuesta y participar en la dinámica grupal encontraron más
difícil alcanzar un aprendizaje autónomo, y requirieron de la intervención directa del
profesor de forma individual, no siendo capaces de acercarse a otros grupos para
compartir experiencias. Una pequeña minoría no se sintió motivada para trabajar en
grupo, siendo su nivel de participación muy bajo (salvo en la elaboración del primer
proyecto), aunque su trabajo individual fue satisfactorio. Los alumnos adquirieron de
una forma más rápida y sólida los conocimientos para programar con el lenguaje C y
esto ayudó en las etapas siguientes a la hora de trabajar con los conceptos de
compilación.
b) Corresponsabilización: nivelación de conocimientos del lenguaje C
Aspecto positivos: a pesar del escaso tiempo con el que se contó (dos semanas) para
nivelar al conjunto en el conocimiento del lenguaje C, ésta ha sido una experiencia
motivadora que ha ayudado al grupo a cohesionarse. La participación de los integrantes
de cada grupo ha sido más que satisfactoria, en gran parte, gracias a la ayuda de los
directores de proyecto que guiaban, ayudaban y presionaban a los programadores para
que éste se cumpliera en el plazo acordado. Se observó que se alcanzó a desarrollar
entre los colaboradores un espíritu creativo y de iniciativa. Los integrantes de los grupos
se planificaron de tal forma que consultaron diferentes fuentes, estructuraron bien la
información y el reparto de tareas. Los alumnos que no conocían el lenguaje C llegaron
a trabajar con bastante dedicación tanto fuera de las horas lectivas como durante ellas.
Esto les ha permitido llegar a un nivel óptimo de conocimiento de dicho lenguaje.
También hay que decir que su experiencia con otros lenguajes ha ayudado en gran
medida a que este objetivo se cumpliera.
Aspectos negativos: El tiempo tan corto que es necesario dedicarle a esta etapa de
nivelación impidió obtener mayores frutos de la experiencia.
c) Lluvia de ideas
Aspectos positivos: El alumno va comprendiendo y resolviendo dudas con las
aportaciones que se hacen en clase.
7
Aspectos negativos: Las aportaciones no son en general voluntarias. Hay poca
participación y muchas veces se ha tenido que forzarles a participar.
d) Estudio dirigido
Aspectos positivos: Se fomenta el trabajo en equipo y el alumno contrasta opiniones con
los integrantes de su grupo e incluso con los el resto de la clase.
Aspectos negativos: No todos los grupos se muestran dispuestos a compartir sus ideas.
Se observa, por el contrario que, en general , los alumnos tienden a ser muy
individualistas: trabajan con su compañero (amigo que conocen de antes), pero no están
acostumbrados a consultar o preguntar a otros equipos.
e) Construcción de un prototipo y exposición de resultados
Aspectos positivos: Los alumnos han participado más que en las prácticas habituales y
se han realizado discusiones constructivas. Ha sido el punto más interesante del curso.
Aspectos negativos: Si bien no es achacable a la experiencia en sí, el hecho es que por
haberse desarrollado al final del curso algunos alumnos mostraron un menor nivel de
dedicación y concentración por la proximidad de los exámenes.
V. Propuestas de mejora
En síntesis, esta experiencia ha ayudado, tanto a alumnos como a profesores, a aprender
más sobre el proceso de construcción de compiladores. A los docentes, en particular,
nos ha ayudado a detectar algunos fallos en cuanto a la estructura y a la secuencia
temporal de la asignatura:
o En retrospectiva, y una vez que se entró en la sección de análisis sintáctico, se puede
afirmar que se dedicó más tiempo del necesario a la sección de análisis léxico. Se
recomendaría, en lo sucesivo, reducir el tiempo de la primera práctica para aumentar
el de las últimas.
o El contenido de la asignatura es muy extenso, correspondiente básicamente a una
asignatura anual: se recomendaría revisarlo y adaptarlo a una asignatura
cuatrimestral y distribuirlo en un año lectivo.
o La programación en C es un requisito indispensable para poder llevar a cabo las
prácticas, pero se ha descubierto que en general el conocimiento por parte de los
alumnos de este lenguaje es bajo. Hacer hincapié que en el plan de estudios se
contemple la enseñanza de este lenguaje en cursos anteriores para los alumnos que
provienen de diplomaturas.
o En las discusiones en el laboratorio se ha dejado a los alumnos que formaran
grupos de acuerdo a sus preferencias. Para fomentar el trabajo en equipo se
recomendaría, sin embargo, agruparlos de forma aleatoria.
8
o Es absolutamente necesario reducir el número de alumnos en el laboratorio pues, de
otra forma, se hace complicado atraer el interés del alumno y el trabajo en grupo se
ve deteriorado.
o En general al alumno le cuesta participar. Para fomentar la participación y romper el
hielo que se crea al principio de curso, se recomienda organizar pequeñas
exposiciones al final de cada sesión práctica, escogiendo al azar a un grupo, e
introduciendo ejercicios sencillos que se tengan que plantear o resolver al final de la
práctica.
o Se recomienda, finalmente, introducir herramientas automáticas de apoyo al
aprendizaje (uso de portafolios electrónicos, plataforma de e- learning como WebCT,
redes de aprendizaje colaborativos). (Dana, 1998) (Banta, 1996) (Schwartz, 2001).
9
Bibliografía
Banta, T. et al. (Eds.) (1996). Assessment in Practice: Putting Principles to Work on
College Campuses. San Francisco: Jossey-Bass Publishers.
Dana, T.; Tippins D. (1998). Portfolios, Reflection and Educating Prospective Teachers
of Science. En Frasher, B.; Tobin, K. (Eds.), International Handbook of Science
Education, Boston: Kluwer Academia.
Garrido A.; Ingesta J. M.; Moreno-Seco, F.; Pérez J. A. (2002). Diseño de
Compiladores Publicaciones de la Universidad de Alicante.
Gruender, C.D. (1996). Constructivism and learning: A philosophical appraisal.
Educational Technology, pp. 21-29.
Huba, M.; Freed, J. (2000). Learner-Centered Assessment on College Campuses.
Bosto,: Allyn and Bacon.
Joy, M. (2005) Groups projects and computer science curriculum. Innovation in
Education and Teaching International, Vol. 42, Nº 1, February 2005, pp. 15-25.
Levine, J.R.; Mason, T.; Brown, D. (1995). lex & yacc. USA, O´Reilly.
Moreno-Seco, F; Forcada, M (1997) Learning compiler design as a research activity.
Computer Science Education, Vol. 7, Nº 1, pp. 73-98.
Schwartz, P; Mennin, S; Webb, G. (2001). Problem-based learning: case studies,
expierence and practice. London: Kogan.
10
Descargar